如何通过 Amazon Linux 1 堆栈在运行 PHP 的 Elastic Beanstalk 环境中安装 PECL 7 模块?

上次更新时间:2020 年 7 月 8 日

我想要通过 Amazon Linux 1 堆栈在运行 PHP 7.3 的 AWS Elastic Beanstalk 环境中安装 Redis、Memcached 或其他 PECL 7 模块。

简短描述

要安装 PECL 7 模块,您必须:

  1. 安装任何依赖项。
  2. 创建 Linux 配置文件 (.ebextensions) 以安装和运行 PECL 7 模块。

重要提示: 下面的 PHP 扩展名已包含在 Amazon Linux 2 上的 PHP 平台版本中:

  • php-pecl-redis(用于与 Redis 键值存储通信)
  • php-pecl-memcached(用于 Memcached 缓存守护程序)

注意:您可以在具备 PEAR 支持的任何 PHP 环境中安装 PECL PHP 扩展。默认情况下,PECL 已安装于 Elastic Beanstalk PHP 堆栈上并且由 php-pear RPM 提供。有关更多信息,请参阅 PECL 网站上的 redis

解决方法

安装 Redis 扩展

1.    在应用程序源捆绑包根目录中的 .ebextensions 目录中,根据以下示例创建一个 .ebextension 文件:

commands:
  01_install_redis:
    command:  /usr/bin/yes 'no'| /usr/bin/pecl7 install redis
    test: '! /usr/bin/pecl7 info redis'
  02_rmfromphpini:
    command: /bin/sed -i -e '/extension="redis.so"/d' /etc/php.ini
  03_createconf:
    command: /bin/echo 'extension="redis.so"' > /etc/php-7.3.d/41-redis.ini
    test: /usr/bin/pecl7 info redis

.ebextension 执行以下操作:

安装 Redis 扩展 (01_install_redis)
/etc/php.ini 文件中删除 pecl7 目录创建的条目,以加载扩展 (02_rmfromphpini)
创建一个用于加载 Redis 模块 (03_createconf) 的配置文件,这需要在 Redis 模块之前加载 JSON 模块(默认已安装)

2.    将新版本的应用程序部署到 Elastic Beanstalk 环境中

3.    使用 SSH 连接到您的实例,然后运行以下命令:

php -m | egrep '(redis)'

您将收到以下输出:

$ php -m | egrep '(redis)'
redis

安装 Memcached 扩展

1.    在应用程序源捆绑包根目录中的 .ebextensions 目录中,根据以下示例创建一个 .ebextension 文件:

packages:
  yum:
    libmemcached-devel: []

上述 .ebextension 将安装 libmemcached-devel,这是安装 Memcached 扩展的先决条件。

2.    在应用程序源捆绑包根目录中的 .ebextensions 目录中,根据以下示例创建一个 .ebextension 文件:

commands:
  01_install_memcached:
    command:  /usr/bin/yes 'no'| /usr/bin/pecl7 install memcached
    test: '! /usr/bin/pecl7 info memcached'
  02_rmfromphpini:
    command: /bin/sed -i -e '/extension="memcached.so"/d' /etc/php.ini
  03_createconf:
    command: /bin/echo 'extension="memcached.so"' > /etc/php-7.3.d/41-memcached.ini
    test: '/usr/bin/pecl7 info memcached'

.ebextension 执行以下操作:

安装 Memcached 扩展 (01_install_memcached)
/etc/php.ini 文件中删除 pecl7 命令创建的条目,以加载扩展 (02_rmfromphpini)
创建一个用于加载 Memcached 扩展 (03_createconf) 的配置文件

3.    将新版本的应用程序部署到 Elastic Beanstalk 环境中

4.    使用 SSH 连接到您的实例,然后运行以下命令:

php -m | egrep '(memcached)'

您将收到以下输出:

$ php -m | egrep '(memcached)'
memcached

这篇文章对您有帮助吗?


您是否需要账单或技术支持?