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)
- 41-redis.ini という設定ファイルを /etc/php.d/ (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)
- 41-memcached.ini という設定ファイルを /etc/php.d/ (03_create_conf) に作成します
注: 新しい .ebextension は、本番環境に追加する前に必ずテストしてください。