我想在使用 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/ 中建立名為 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 檔案移除 Redis 副檔名 (02_remove_extension)
- 在 /etc/php.d/ 中建立名為 41-memcached.ini 的組態檔案 (03_create_conf)
**注意:**始終先測試新的 .ebextension,然後再新增至生產環境。