如何基于 PHP 7.4 与 Amazon Linux 2 堆栈运行的 Elastic Beanstalk 环境中安装 PECL 7 模块?

上次更新时间:2021 年 3 月 22 日

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

简短描述

要安装 PECL 7 模块,您必须创建包含命令的配置文件 (.ebextension) 以执行以下操作:

安装依赖项 安装 PECL 模块 创建或修改配置文件

注意:对于 Amazon Linux 2 堆叠,请参阅如何基于 PHP 与 Amazon Linux 1 堆栈运行的 Elastic Beanstalk 环境中安装 PECL 7 模块?

解决方法

1.在应用程序源包根目录中,设置 .ebextensions 目录。例如:

|-- .ebextensions
|        |-- redis/memcached.config
|        |-- other .config files
|-- other application files

有关更多信息,请参阅使用配置文件 (.ebextensions) 进行高级环境自定义。

注意:所有配置文件都存储在 .ebextensions 文件夹中。Elastic Beanstalk 环境只使用以 .config 扩展名结尾的文件。

2.在 .ebextensions 目录中,为模块创建一个包含以下命令的配置文件。

对于 Redis 模块:

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

Redis 配置文件执行以下操作:

安装 Redis 模块并测试安装是否成功 (01_install_redis) 从 /etc/php.ini 文件 (02_remove_extension) 中删除 Redis 扩展名 在 /etc/php.d/ 创建名为 41-redis.ini 的配置文件 (03_create_conf)

对于 Memcached 模块:

packages:
  yum:
    libmemcached-devel: []
commands:
  01_install_memcached:
    command: /usr/bin/yes 'no'| /usr/bin/pecl install memcached
    test: '! /usr/bin/pecl info memcached'
  02_remove_extension:
    command: /bin/sed -i -e '/extension="memcached.so"/d' /etc/php.ini
  03_create_conf:
    command: /bin/echo 'extension="memcached.so"' > /etc/php.d/41-memcached.ini

Memcached 配置文件执行以下操作:

安装 Memcached 模块并测试安装是否成功 (01_install_memcached) 从 /etc/php.ini 文件 (02_remove_extension) 中删除 Redis 扩展名 在 /etc/php.d/ 创建名为 41-memcached.ini 的配置文件 (03_create_conf)

注意:始终先测试新的 .ebextension,然后再添加到生产环境。