Elastic Beanstalk PHP プラットフォームを使用する - AWS Elastic Beanstalk

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Elastic Beanstalk PHP プラットフォームを使用する

AWS Elastic Beanstalk は、PHP のさまざまなバージョンのさまざまなプラットフォームブランチを提供し、サポートしています。プラットフォームは、スタンドアロンまたは Composer で実行される PHP ウェブアプリケーションをサポートします。サポートされているプラットフォームブランチの完全なリストについては、「AWS Elastic Beanstalk プラットフォーム」ドキュメントの「PHP」を参照してください。

Elastic Beanstalk には、Elastic Beanstalk 環境の Amazon EC2 インスタンスで実行されるソフトウェアをカスタマイズするために使用できる設定オプションが用意されています。アプリケーションに必要な環境変数を設定し、Amazon S3 に対してログのローテーションを有効にしたら、アプリケーションの出典で静的ファイルが含まれるフォルダを、プロキシサーバーによって提供されるパスにマッピングし、一般的な PHP 初期化設定を行うことができます。

設定オプションは実行中の環境の設定を変更するために Elastic Beanstalk コンソールで利用できます。環境を終了したときにその設定が失われないようにするため、保存済み設定を使用して設定を保存し、それを後で他の環境に適用することができます。

ソースコードの設定を保存する場合、設定ファイルを含めることができます。設定ファイルの設定は、環境を作成するたびに、またはアプリケーションをデプロイするたびに適用されます。設定ファイルを使用して、デプロイの間にパッケージをインストールしたり、スクリプトを実行したり、他のインスタンスのカスタマイズオペレーションを実行することもできます。

Composer を使用すると、デプロイの間にパッケージをインストールするために、出典バンドルに composer.json ファイルを含めることができます。

設定オプションとして提供されない高度な PHP 設定、および PHP の設定の場合、設定ファイルを使用して、Elastic Beanstalk により適用されるデフォルト設定を拡張および上書きできる INI ファイルの提供および追加拡張ができます。

Elastic Beanstalk コンソールで適用される設定は、設定ファイルに同じ設定があれば、それらの設定を上書きします。これにより、設定ファイルでデフォルト設定を定義し、コンソールでそのデフォルト設定を環境固有の設定で上書きできます。設定の優先順位の詳細と設定の他の変更方法については、「設定オプション」を参照してください。

Elastic Beanstalk Linux ベースのプラットフォームを拡張するさまざまな方法の詳細については、「Elastic Beanstalk Linux プラットフォームの拡張」を参照してください。

AWS SDK for PHP のインストール

アプリケーション内から AWS リソースを管理する必要がある場合は、 をインストールします AWS SDK for PHP。例えば、SDK for PHP では、Amazon DynamoDB (DynamoDB) を使用して、リレーショナルデータベースを作成せずに、ユーザーとセッション情報を保存できます。

Composer で SDK for PHP をインストールするには

$ composer require aws/aws-sdk-php

詳細については、AWS SDK for PHP ホームページを参照してください。手順については、「 のインストール AWS SDK for PHP」を参照してください。

PHP 8.1 on Amazon Linux 2 に関する考慮事項

PHP 8.1 on Amazon Linux 2 プラットフォームブランチを使用している場合は、このセクションをお読みください。

注記

このトピックの情報は、PHP 8.1 on Amazon Linux 2 プラットフォームブランチにのみ適用されます。AL2023 ベースの PHP プラットフォームブランチには適用されません。また、Amazon Linux 2 ベースの PHP 8.0 プラットフォームブランチにも適用されません。

Elastic Beanstalk では、PHP 8.1 on Amazon Linux 2 プラットフォームブランチの PHP 8.1 関連の RPM パッケージは、Amazon Linux ではなくローカルディレクトリの EC2 インスタンスに保存されます。rpm -i を使用してパッケージをインストールできます。PHP 8.1 プラットフォームバージョン 3.5.0 以降、Elastic Beanstalk は PHP 8.1 関連の RPM パッケージを次のローカル EC2 ディレクトリに保存します。

/opt/elasticbeanstalk/RPMS

次の例では、php-debuginfo パッケージをインストールします。

$rpm -i /opt/elasticbeanstalk/RPMS/php-debuginfo-8.1.8-1.amzn2.x86_64.rpm

パッケージ名のバージョンは、EC2 ローカルディレクトリ /opt/elasticbeanstalk/RPMS にリストされている実際のバージョンによって異なります。同じ構文を使用して、他の PHP 8.1 RPM パッケージをインストールします。

次のセクションを展開すると、提供されている RPM パッケージのリストが表示されます。

次のリストは、Elastic Beanstalk PHP 8.1 プラットフォームが Amazon Linux 2 で提供する RMP パッケージを示しています。これらのファイルは、ローカルディレクトリ /opt/elasticbeanstalk/RPMS にあります。

記載されているパッケージ名のバージョン番号 8.1.8-13.7.0-1 はあくまでも一例です。

  • php-8.1.8-1.amzn2.x86_64.rpm

  • php-bcmath-8.1.8-1.amzn2.x86_64.rpm

  • php-cli-8.1.8-1.amzn2.x86_64.rpm

  • php-common-8.1.8-1.amzn2.x86_64.rpm

  • php-dba-8.1.8-1.amzn2.x86_64.rpm

  • php-dbg-8.1.8-1.amzn2.x86_64.rpm

  • php-debuginfo-8.1.8-1.amzn2.x86_64.rpm

  • php-devel-8.1.8-1.amzn2.x86_64.rpm

  • php-embedded-8.1.8-1.amzn2.x86_64.rpm

  • php-enchant-8.1.8-1.amzn2.x86_64.rpm

  • php-fpm-8.1.8-1.amzn2.x86_64.rpm

  • php-gd-8.1.8-1.amzn2.x86_64.rpm

  • php-gmp-8.1.8-1.amzn2.x86_64.rpm

  • php-intl-8.1.8-1.amzn2.x86_64.rpm

  • php-ldap-8.1.8-1.amzn2.x86_64.rpm

  • php-mbstring-8.1.8-1.amzn2.x86_64.rpm

  • php-mysqlnd-8.1.8-1.amzn2.x86_64.rpm

  • php-odbc-8.1.8-1.amzn2.x86_64.rpm

  • php-opcache-8.1.8-1.amzn2.x86_64.rpm

  • php-pdo-8.1.8-1.amzn2.x86_64.rpm

  • php-pear-1.10.13-1.amzn2.noarch.rpm

  • php-pgsql-8.1.8-1.amzn2.x86_64.rpm

  • php-process-8.1.8-1.amzn2.x86_64.rpm

  • php-pspell-8.1.8-1.amzn2.x86_64.rpm

  • php-snmp-8.1.8-1.amzn2.x86_64.rpm

  • php-soap-8.1.8-1.amzn2.x86_64.rpm

  • php-sodium-8.1.8-1.amzn2.x86_64.rpm

  • php-xml-8.1.8-1.amzn2.x86_64.rpm

  • php-pecl-imagick-3.7.0-1.amzn2.x86_64.rpm

  • php-pecl-imagick-debuginfo-3.7.0-1.amzn2.x86_64.rpm

  • php-pecl-imagick-devel-3.7.0-1.amzn2.noarch.rpm

PEAR パッケージと PECL パッケージを使用して、一般的な拡張機能をインストールできます。PEAR の詳細については、PEAR PHP 拡張機能とアプリケーションリポジトリのウェブサイトを参照してください。PECL の詳細については、PECL 拡張モジュールのウェブサイトを参照してください。

以下のコマンド例では、Memcached 拡張機能をインストールします。

$pecl install memcache

また、以下のコマンドを使用することもできます。

$pear install pecl/memcache

以下のコマンド例では、Redis 拡張機能をインストールします。

$pecl install redis

また、以下のコマンドを使用することもできます。

$pear install pecl/redis

PHP 環境の設定

Elastic Beanstalk コンソールでは、Amazon S3 のログローテーションを有効にしたり、アプリケーションが環境から読み取ることができる変数を設定したり、PHP 設定を変更することができます。

Elastic Beanstalk コンソールで PHP 環境を設定するには
  1. Elastic Beanstalk コンソールを開き、リージョンリストで を選択します AWS リージョン。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

  3. ナビゲーションペインで、[設定] を選択します。

  4. [更新、モニタリング、ログ] の設定カテゴリで、[編集] を選択します。

PHP 設定

  • [プロキシサーバー] – 環境インスタンスで使用するプロキシサーバーです。デフォルトでは、nginx が使用されます。

  • Document root (ドキュメントルート) – サイトのデフォルトページを含むフォルダー。ウェルカムページが、出典バンドルのルートにない場合は、ルートパスに関連して、それを含むフォルダを指定します。たとえば、ウェルカムページが、/public というフォルダにある場合は、public にします。

  • Memory limit (メモリ制限) – スクリプトが割り当て許可される最大メモリ容量。例えば、512M

  • Zlib output compression (Zlib 出力の圧縮)On に設定して、レスポンスを圧縮します。

  • Allow URL fopen (URL fopen を許可)Off に設定して、スクリプトがリモートの場所からファイルをダウンロードすることを防ぎます。

  • Display errors (表示エラー)On に設定して、デバッグの内部エラーメッセージを表示します。

  • Max execution time (最大実行時間) – 環境によって終了されるまでの、スクリプトを実行許可される最大時間 (秒単位)。

ログオプション

[ログ Options] セクションには、2 つの設定があります。

  • [Instance profile] – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与されているインスタンスプロファイルを指定します。

  • [Enable log file rotation to Amazon S3] (Amazon S3 へのログファイルのローテーションの有効化) - アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定します。

静的ファイル

パフォーマンスを向上させるために、[Static files] (静的ファイル) セクションを使用して、ウェブアプリケーション内のディレクトリセットから静的ファイル (HTML、イメージなど) を配信するようにプロキシサーバーを設定することができます。ディレクトリごとに、仮想パスをディレクトリマッピングに設定します。プロキシサーバーは、指定されたパスのファイルに対するリクエストを受け取ると、アプリケーションにリクエストをルーティングする代わりにファイルを直接  処理します。

設定ファイルまたは、Elastic Beanstalk コンソールを使用した静的ファイルの設定の詳細については、「静的ファイルの提供」を参照してください。

環境プロパティ

環境プロパティ セクションでは、アプリケーションを実行している Amazon EC2 インスタンスの環境設定を指定できます。これらの設定は、キーバリューのペアでアプリケーションに渡されます。

アプリケーションコードは、$_SERVER または get_cfg_var 関数を使用して環境プロパティにアクセスできます。

$endpoint = $_SERVER['API_ENDPOINT'];

詳細については「環境変数およびその他のソフトウェア設定」を参照してください。

設定の名前空間

設定ファイルを使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクをパフォーマンスできます。設定オプションは、プラットフォーム固有のものでも、Elastic Beanstalk サービス全体のすべてのプラットフォームに適用できるものでもかまいません。設定オプションは、名前空間として整理されています。

次の名前空間は、プロキシサービスと PHP 固有のオプションの両方を設定します。

  • aws:elasticbeanstalk:environment:proxy:staticfiles – 静的ファイルを提供するように環境プロキシを設定します。アプリケーションディレクトリへの仮想パスのマッピングを定義します。

  • aws:elasticbeanstalk:environment:proxy – 環境のプロキシサーバーを指定します。

  • aws:elasticbeanstalk:container:php:phpini – PHP 固有のオプションを設定します。この名前空間には、Elastic Beanstalk コンソールでは使用できない composer_options が含まれます。このオプションは、composer.phar install コマンドで Composer を使用して依存関係をインストールするときに使用するカスタムオプションを設定します。使用可能なオプションなど、このコマンドの詳細については、getcomposer.org ウェブサイトで「インストール」を参照してください。

次の設定ファイルの例では、staticimages という名前のディレクトリをパス /images にマップする静的ファイルオプションを指定し、aws:elasticbeanstalk:container:php:phpini 名前空間で使用できる各オプションの設定を示します。

例 .ebextensions/php-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache aws:elasticbeanstalk:environment:proxy:staticfiles: /images: staticimages aws:elasticbeanstalk:container:php:phpini: document_root: /public memory_limit: 128M zlib.output_compression: "Off" allow_url_fopen: "On" display_errors: "Off" max_execution_time: 60 composer_options: vendor/package
注記

aws:elasticbeanstalk:environment:proxy:staticfiles 名前空間は、Amazon Linux AMI PHP プラットフォームブランチ (Amazon Linux 2 以前) では定義されていません。

Elastic Beanstalk には、環境をカスタマイズするための多数の設定オプションが用意されています。設定ファイルに加えて、コンソール、保存された設定、EB CLI、または を使用して、設定オプションを指定することもできます AWS CLI詳細については「設定オプション」を参照してください。

Elastic Beanstalk PHP アプリケーションの依存関係のインストール

このトピックでは、必要な他の PHP パッケージをインストールするようにアプリケーションを設定する方法について説明します。アプリケーションは、他の PHP パッケージに依存関係がある可能性があります。環境の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにこれらの依存関係をインストールするようにアプリケーションを設定することができます。または、アプリケーションの依存関係を出典バンドルに含め、アプリケーションを用いてデプロイすることができます。このセクションでは、これら両方の方法について説明します。

Composer ファイルを使用してインスタンスに依存関係をインストールする

プロジェクト出典のルートで composer.json ファイルを使用し、環境の Amazon EC2 インスタンスでアプリケーションに必要なパッケージを composer を使用してインストールします。

例 composer.json
{ "require": { "monolog/monolog": "1.0.*" } }

composer.json ファイルがある場合、Elastic Beanstalk は composer.phar install を実行して依存関係をインストールします。aws:elasticbeanstalk:container:php:phpini 名前空間で composer_options のオプションを設定することにより、オプションを追加して、コマンドに追加できます。

出典バンドルに依存関係を含める

アプリケーションに多数の依存関係がある場合、インストールに長い時間がかかる場合があります。依存関係は新しいインスタンスにインストールされるため、これによりデプロイおよびスケーリング・オペレーションが増える可能性があります。

デプロイ時間に悪影響が発生しないようにするには、開発環境で Composer を使用して依存関係を解決し、vendor フォルダにインストールします。

アプリケーション出典バンドルに依存関係を含めるには
  1. 次のコマンドを実行してください。

    % composer install
  2. 生成された vendor フォルダをアプリケーション出典バンドルのルートに含めます。

Elastic Beanstalk がインスタンスで vendor フォルダを検出した場合、composer.json ファイルは (存在する場合でも) 無視されます。アプリケーションは vendor フォルダから依存関係を使用します。

Elastic Beanstalk での Composer の更新

このトピックでは、Composer を最新の状態に保つように Elastic Beanstalk を設定する方法について説明します。Composer ファイルを含むパッケージをインストールする際にエラーが表示される場合、または最新のプラットフォームバージョンを使用できない場合は、Composer を更新する必要がある場合があります。プラットフォーム更新の間に、.ebextensions フォルダの設定ファイルを使用して環境のインスタンスにある Composer を更新できます。

Composer は、次の設定で自己更新できます。

commands: 01updateComposer: command: /usr/bin/composer.phar self-update 2.7.0

次のオプション設定では、Composer キャッシュの場所を設定する COMPOSER_HOME 環境変数が設定されます。

option_settings: - namespace: aws:elasticbeanstalk:application:environment option_name: COMPOSER_HOME value: /home/webapp/composer-home

これらの両方を、.ebextensions フォルダ内の同じ設定ファイルに組み合わせることができます。

例 .ebextensions/composer.config
commands: 01updateComposer: command: /usr/bin/composer.phar self-update 2.7.0 option_settings: - namespace: aws:elasticbeanstalk:application:environment option_name: COMPOSER_HOME value: /home/webapp/composer-home
注記

2024 年 2 月 22 日の AL2023 プラットフォームリリースと 2024 年 2 月 28 日の AL2 プラットフォームリリースで Composer のインストールが更新されているため、自己更新の実行時に COMPOSER_HOME が設定されている場合、Composer の自己更新が失敗する可能性があります。

次の組み合わせコマンドは実行に失敗します。export COMPOSER_HOME=/home/webapp/composer-home && /usr/bin/composer.phar self-update 2.7.0

ただし、前の例は機能します。前の例では、COMPOSER_HOME のオプション設定は 01updateComposer の実行に渡されず、自己更新コマンドの実行時に設定されません。

重要

composer.phar self-update コマンドでバージョン番号を省略すると、Composer は出典コードをデプロイする際、および Auto Scaling によって新しいインスタンスがプロビジョニングされる際に毎回、利用可能な最新バージョンに更新されます。そのため、アプリケーションに対応しない Composer のバージョンがリリースされていると、スケーリング・オペレーションおよびデプロイが失敗する場合があります。

Composer のバージョンを含む Elastic Beanstalk PHP Platforms の詳細については、AWS Elastic Beanstalk プラットフォームドキュメントの「PHP プラットフォームバージョン」を参照してください。

Elastic Beanstalk 設定での php.ini の拡張

files ブロックで設定ファイルを使用して、.ini ファイルを環境のインスタンスの /etc/php.d/ に追加します。主要な設定ファイルの php.ini は、このフォルダにファイルの設定をアルファベット順に取得します。多くの拡張機能はこのフォルダのファイルによりデフォルトで有効になります。

例 .ebextensions/mongo.config
files: "/etc/php.d/99mongo.ini": mode: "000755" owner: root group: root content: | extension=mongo.so