Amazon Linux 2 スタックを使用して PHP 8.1 上で実行している AWS Elastic Beanstalk 環境に Redis、Memcached、またはその他の PECL 7 用のモジュールをインストールしたいと考えています。
簡単な説明
PECL 7 モジュールをインストールするには、以下の処理を実行するコマンドを含む設定ファイル (.ebextension) を作成する必要があります。
- 依存関係のインストール
- PECL モジュールのインストール
- 設定ファイルの作成または変更
注意: Amazon Linux 1 スタックの場合は、「Amazon Linux 1 スタックを使用して、PHP で実行されている 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 ファイルから 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 を必ずテストしてください。