我想在通过 Amazon Linux 2 堆栈在 PHP 8.1 上运行的 AWS Elastic Beanstalk 环境中安装 Redis、Memcached 或其他 PECL 7 模块。
简短描述
要安装 PECL 7 模块,您必须创建包含命令的配置文件(.ebextension)以执行以下操作:
- 安装依赖项
- 安装 PECL 模块
- 创建或修改配置文件
解决方法
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 文件中删除 Redis 扩展名(02_remove_extension)
- 在 /etc/php.d/(03_create_conf)上创建一个名为 41-redis.ini 的配置文件
对于 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 文件中删除 Redis 扩展名(02_remove_extension)
- 在 /etc/php.d/(03_create_conf)上创建一个名为 41-memcached.ini 的配置文件
**注意:**在添加到生产环境之前,请务必测试新的 .ebextension。