Amazon Linux 2 スタックを使用して PHP 8.1 上で実行している Elastic Beanstalk 環境に PECL 7 モジュールをインストールするにはどうすればよいですか?

所要時間1分
0

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 は、本番環境に追加する前に必ずテストしてください。

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ