Amazon Linux 1 スタックを使用する PHP で実行されている Elastic Beanstalk 環境に、PECL 7 モジュールをインストールする方法を教えてください。

最終更新日: 2021 年 3 月 19 日

Amazon Linux 1 スタックを使用して PHP 7.3 上で実行している AWS Elastic Beanstalk 環境に Redis、Memcached、またはその他の PECL 7 用のモジュールをインストールしたいと考えています。

簡単な説明

PECL 7 モジュールをインストールするには、次を行う必要があります。

  1. 依存関係をインストールします。
  2. Linux 設定ファイル (.ebextensions) を作成し、PECL 7 モジュールをインストールおよび実行します。

重要: 次に挙げた PHP 拡張機能は、Amazon Linux 2 でリリースされた PHP プラットフォームにすでに含まれています。

  • php-pecl-redis (Redis key-value ストアとの通信用)
  • php-pecl-memcached (Memcached キャッシュデーモン用)

注: PECL PHP 拡張機能は、PEAR をサポートする任意の PHP 環境にインストールできます。PECL は、php-pear RPM によって提供され、デフォルトで Elastic Beanstalk PHP スタックにインストールされています。詳細については、PECL ウェブサイトの redis をご参照ください。

解決方法

Redis 拡張機能のインストール

1.    アプリケーションのソースバンドルのルートの .ebextensions ディレクトリで、次の例に基づいて .ebextension ファイルを作成します。

commands:
  01_install_redis:
    command:  /usr/bin/yes 'no'| /usr/bin/pecl7 install redis
    test: '! /usr/bin/pecl7 info redis'
  02_rmfromphpini:
    command: /bin/sed -i -e '/extension="redis.so"/d' /etc/php.ini
  03_createconf:
    command: /bin/echo 'extension="redis.so"' > /etc/php-7.3.d/41-redis.ini
    test: /usr/bin/pecl7 info redis

.ebextension は次の処理を行います。

Redis 拡張機能 (01_install_redis) をインストールします
拡張子 (02_rmfromphpini) をロードするために、pecl7 コマンドが /etc/php.ini ファイルに作成するエントリを削除します
Redis モジュール (03_createconf) をロードする設定ファイルを作成します。このファイルは、Redis モジュールの前に JSON モジュールをデフォルトでロードする必要があります

2.    新しいバージョンのアプリケーションを Elastic Beanstalk 環境にデプロイします。

3.    SSH を使用してインスタンスに接続し、次のコマンドを実行します。

php -m | egrep '(redis)'

出力:

$ php -m | egrep '(redis)'
redis

Memcached 拡張機能のインストール

1.    アプリケーションのソースバンドルのルートの .ebextensions ディレクトリで、次の例に基づいて .ebextension ファイルを作成します。

packages:
  yum:
    libmemcached-devel: []

前述の .ebextension は、Memcached 拡張機能をインストールするための前提条件である libmemcached-devel をインストールします。

2.    アプリケーションのソースバンドルのルートの .ebextensions ディレクトリで、次の例に基づいて .ebextension ファイルを作成します。

commands:
  01_install_memcached:
    command:  /usr/bin/yes 'no'| /usr/bin/pecl7 install memcached
    test: '! /usr/bin/pecl7 info memcached'
  02_rmfromphpini:
    command: /bin/sed -i -e '/extension="memcached.so"/d' /etc/php.ini
  03_createconf:
    command: /bin/echo 'extension="memcached.so"' > /etc/php-7.3.d/41-memcached.ini
    test: '/usr/bin/pecl7 info memcached'

.ebextension は次の処理を行います。

Memcached 拡張機能 (01_install_memcached) をインストールします
拡張子 (02_rmfromphpini) をロードするために、pecl7 コマンドが /etc/php.ini ファイルに作成するエントリを削除します
Memcached 拡張子 (03_createconf) をロードする設定ファイルを作成します

3.    新しいバージョンのアプリケーションを Elastic Beanstalk 環境にデプロイします。

4.    SSH を使用してインスタンスに接続し、次のコマンドを実行します。

php -m | egrep '(memcached)'

出力:

$ php -m | egrep '(memcached)'
memcached

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?