Elastic Beanstalk への Symfony アプリケーションのデプロイ - AWS Elastic Beanstalk

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

Elastic Beanstalk への Symfony アプリケーションのデプロイ

Symfony は、動的な PHP ウェブアプリケーションを作成するためのオープンソースフレームワークです。このチュートリアルでは、Symfony アプリケーションを生成して AWS Elastic Beanstalk 環境にデプロイする手順を示します。

前提条件

このチュートリアルでは、基本的な Elastic Beanstalk オペレーションと Elastic Beanstalk コンソールに関する知識があることを前提としています。まだ起動していない場合は、Elastic Beanstalk の開始方法 の指示に従って、最初の Elastic Beanstalk 環境を起動します。

このガイドの手順に従うには、run command のためのコマンドラインターミナルまたはシェルが必要になります。コマンドは、該当する場合、プロンプト記号 ($) と現在のディレクトリの名前が前に付けられて、リストに示されます。

~/eb-project$ this is a command this is output

Linux および macOS では、任意のシェルとパッケージ管理者を使用できます。Windows では、Linux 用の Windows サブシステムをインストールして、Ubuntu および Bash の Windows に統合されたバージョンを入手できます。

Symfony 4.4.9 では PHP 7.1.3 以降が必要です。また、Symfony のインストールに関する公式ドキュメントの技術的要件のトピックに記載されている PHP 拡張も必要です。このチュートリアルでは、PHP 7.2 と対応する Elastic Beanstalk プラットフォームバージョンを使用します。Elastic Beanstalk 用の PHP 開発環境の設定 の トピックの指示に従って、PHP と Composer をインストールします。

Symfony のサポートおよびメンテナンス情報については、Symfony ウェブサイトの Symfony のリリースのトピックをご参照ください。Symfony 4.4.9 の PHP バージョンサポートに関連する更新の詳細については、Symfony ウェブサイトの Symfony 4.4.9 リリースノートのトピックをご参照ください。

Elastic Beanstalk 環境の起動

Elastic Beanstalk コンソールを使用して、Elastic Beanstalk 環境を作成します。[PHP] プラットフォームを選択し、デフォルト設定およびサンプルコードを受け入れます。

環境を起動するには (コンソール)
  1. 事前に設定されたリンク (console.aws.amazon.com/elasticBeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced) を使用して、Elastic Beanstalk コンソールを開きます。

  2. [プラットフォーム] で、アプリケーションで使用される言語に一致するプラットフォームとプラットフォームブランチを選択します。

  3. アプリケーションコード として、サンプルアプリケーション を選択します。

  4. 確認と起動 を選択します。

  5. 使用できるオプションを確認します。使用する有効なオプションを選択し、準備ができたら [アプリケーションの作成] を選択します。

環境の作成の所要時間は約 5 分です。以下のリソースが作成されます。

  • EC2 インスタンス – 選択したプラットフォームでウェブ・アプリケーションを実行するよう設定された Amazon Elastic Compute Cloud (Amazon EC2) 仮想マシン。

    各プラットフォームは、それぞれ特定の言語バージョン、フレームワーク、ウェブコンテナ、またはそれらの組み合わせをサポートするための、特定のソフトウェア、設定ファイル、スクリプトを実行します。ほとんどのプラットフォームでは、Apache または NGINX のいずれかをウェブアプリケーションの前にリバースプロキシとして配置します。そのプロキシがリクエストをアプリケーションに転送し、静的アセットを提供し、アクセスログとエラーログを生成します。

  • インスタンスセキュリティグループ – ポート 80 上のインバウンドトラフィックを許可するよう設定された Amazon EC2 セキュリティグループ。このリソースでは、ロードバランサーからの HTTP トラフィックが、ウェブ・アプリケーションを実行している EC2 インスタンスに達することができます。デフォルトでは、トラフィックは他のポート上で許可されません。

  • ロードバランサー – アプリケーションを実行するインスタンスにリクエストを分散するよう設定された Elastic Load Balancing ロードバランサー。ロードバランサーにより、インスタンスを直接インターネットに公開する必要もなくなります。

  • ロードバランサーセキュリティグループ – ポート 80 上のインバウンドトラフィックを許可するよう設定された Amazon EC2 セキュリティグループ。このリソースでは、インターネットからの HTTP トラフィックが、ロードバランサーに達することができます。デフォルトでは、トラフィックは他のポート上で許可されません。

  • Auto Scaling グループ – インスタンスが終了されたか利用不可になった場合にそのインスタンスを置き換えるよう設定された Auto Scaling グループ。

  • Amazon S3 バケット – Elastic Beanstalk の使用時に作成されるソースコード、ログ、その他のアーティファクトの保存場所。

  • Amazon CloudWatch アラーム – 環境内のインスタンスの負荷をモニタリングする 2 つの CloudWatch アラーム。負荷が高すぎる、または低すぎる場合にトリガーされます。アラームがトリガーされると、Auto Scaling グループはレスポンスとしてスケールアップまたはダウンを行います。

  • AWS CloudFormation スタック – 環境内でリソースを起動して、設定の変更を伝達するために、Elastic Beanstalk は AWS CloudFormation を使用します。リソースは、AWS CloudFormation コンソールに表示できるテンプレートで定義されます。

  • ドメイン名 – ウェブ・アプリケーションまでのルートとなるドメイン名であり、subdomain.region.elasticbeanstalk.com の形式です。

    ドメインセキュリティ

    Elastic Beanstalk アプリケーションのセキュリティを強化するため、elasticbeanstalk.com ドメインはパブリックサフィックスリスト (PSL) に登録されています。

    Elastic Beanstalk アプリケーションのデフォルトドメイン名に機密性のある Cookie を設定する必要がある場合は、セキュリティ強化のため __Host- プレフィックスの付いた Cookie の使用をお勧めします。このプラクティスは、クロスサイトリクエストフォージェリ (CSRF) 攻撃からドメインを防御します。詳細については、Mozilla 開発者ネットワークの「Set-Cookie」ページを参照してください。

これらのリソースはすべて Elastic Beanstalk によって管理されます。環境を終了すると、Elastic Beanstalk は含まれているすべてのリソースを終了します。

注記

Elastic Beanstalk が作成する Amazon S3 バケットは、環境間で共有され、環境の終了時に削除されません。詳細については、「Amazon S3 で Elastic Beanstalk を使用する」を参照してください。

Symfony をインストールしてウェブサイトを生成する

Composer は、次のコマンド 1 つで Symfony をインストールし、作業プロジェクトを作成できます。

~$ composer create-project symfony/website-skeleton eb-symfony

Composer は Symfony とその依存関係をインストールし、デフォルトのプロジェクトを生成します。

Symfony のインストール中に問題が発生した場合は、Symfony の公式ドキュメントのインストールに関するトピックをご参照ください。

アプリケーションをデプロイします

プロジェクトディレクトリに移動します。

~$ cd eb-symfony

Composer で作成されたファイルを含む出典バンドルを作成します。次のコマンドでは、symfony-default.zip という出典バンドルが作成されます。vendor フォルダ内のファイルは除外されます。これらのファイルは、多くのスペースを使用するだけでなく、アプリケーションを Elastic Beanstalk にデプロイするのに不要です。

eb-symfony$ zip ../symfony-default.zip -r * .[^.]* -x "vendor/*"

ソースバンドルを Elastic Beanstalk にアップロードし、Symfony を環境にデプロイします。

出典バンドルをデプロイするには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. 環境の概要ページで、[Upload and deploy (アップロードとデプロイ)] を選択します。

  4. 画面上のダイアログボックスを使用して、ソースバンドルをアップロードします。

  5. [デプロイ] を選択します。

  6. デプロイが完了したら、新しいタブのウェブサイトを開く、サイトの URL を選択できます。

注記

さらに出典バンドルを最適化するには、Git リポジトリを初期化し、git archive コマンドを使用して出典バンドルを作成します。デフォルトの Symfony プロジェクトには、.gitignore ファイルが含まれています。このファイルは、デプロイに不要な vendor フォルダと他のファイルを除外するよう Git に指示します。

Composer 設定の設定

デプロイが完了したら、URL をクリックして Symfony アプリケーションをブラウザで開きます。

説明 デフォルトでは、Elastic Beanstalk によってウェブサイトのルートパスにプロジェクトのルートが提供されています。この場合、デフォルトのページ(app.php)は web フォルダーの 1 レベル下にあります。URL に /public を追加することでこれを確認できます。例えば、http://symfony.us-east-2.elasticbeanstalk.com/public と指定します。

ルートパスで Symfony アプリケーションをサポートするには、Elastic Beanstalk コンソールを使用してウェブサイトのドキュメントルートを設定します。

ウェブサイトのドキュメントルートを設定するには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

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

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

  5. [ドキュメントのルート] に「/public」と入力します。

  6. ページの最下部で [適用] を選択し変更を保存します。

  7. 更新が完了したら、ブラウザーでサイトを再び開くための URL をクリックします。

クリーンアップ

Elastic Beanstalk での作業が終了したら、環境を終了できます。Elastic Beanstalk は、Amazon EC2 インスタンスデータベースインスタンスロードバランサー、セキュリティグループ、アラームなど、お客様の環境に関連付けられているすべての AWS リソースを終了します。

コンソールから Elastic Beanstalk 環境を終了するには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. [Actions] (アクション)、[Terminate environment] (環境の終了) の順に選択します。

  4. 画面上のダイアログボックスを使用して、環境の終了を確認します。

Elastic Beanstalk を使用すると、いつでもアプリケーション用の新しい環境を簡単に作成できます。

次のステップ

Symfony の詳細については、Symfony とは何かに関する記事 (symfony.com) を参照してください。

アプリケーションの開発が進むにつれ、.zip ファイルを手動で作成して Elastic Beanstalk コンソールにアップロードすることなく、環境を管理してアプリケーションをデプロイする方法が必要になります。Elastic Beanstalk コマンドラインインターフェイス (EB CLI) には、コマンドラインインターフェイスからアプリケーションを作成、設定して、Elastic Beanstalk 環境にデプロイするための使いやすいコマンドが用意されています。

このチュートリアルでは、Elastic Beanstalk コンソールを使用して Composer のオプションを設定しました。この設定をアプリケーション出典のパートにするには、次のような設定ファイルを使用できます。

例 .ebextensions/composer.config
option_settings: aws:elasticbeanstalk:container:php:phpini: document_root: /public

詳細については、「設定ファイル (.ebextensions) による高度な環境のカスタマイズ」を参照してください。

Symfony は、独自の設定ファイルを使用してデータベース接続を設定します。データベースと Symfony の接続手順については、「Symfony を使用してデータベースに接続する」を参照してください。

最後に、本稼働環境でアプリケーションを使用する予定の場合は、お客様の環境にカスタムドメイン名を設定し、安全な接続のために HTTPS を有効にすることが必要になります。