メニュー
AWS Elastic Beanstalk
開発者ガイド

Symfony アプリケーションを Elastic Beanstalk にデプロイする

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

前提条件

このチュートリアルでは、基本的な Elastic Beanstalk オペレーションと Elastic Beanstalk コンソールについてある程度の知識があることを前提としています。Elastic Beanstalk 環境をまだ起動していない場合は、「Elastic Beanstalk の使用開始」の指示に従ってまず起動してください。

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

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

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

Symfony 3 には、PHP 5.5.9 以降と PHP の intl 拡張が必要です。このチュートリアルでは、PHP 7.0 とそれに対応する Elastic Beanstalk プラットフォーム設定を使用します。「PHP 開発環境のセットアップ」の手順に従って PHP と Composer をインストールします。

Elastic Beanstalk 環境を起動する

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

環境を起動するには(コンソール)

  1. 次の事前に設定されたリンクを使用して、Elastic Beanstalk コンソールを開きます: console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced

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

  3. [Application code] に、[Sample application] を選択します。

  4. [Review and launch] を選択します。

  5. 使用できるオプションを確認します。その内容でよければ、[Create app] を選択します。

環境の作成の所要時間は約 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 により管理されます。環境を終了すると、Elastic Beanstalk は含まれているすべてのリソースを終了します。

注記

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

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

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

~$ composer create-project --prefer-dist symfony/framework-standard-edition eb-symfony 3.4 Installing symfony/framework-standard-edition (v3.4.8) - Installing symfony/framework-standard-edition (v3.4.8): Downloading (100%) Created project in symfony3-beanstalk-comp Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Package operations: 38 installs, 0 updates, 0 removals - Installing doctrine/lexer (v1.0.1): Loading from cache ...

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

Symfony のインストール中に問題が発生した場合は、公式ドキュメント (symfony.com/doc/3.4/setup.html) のインストールに関するトピックを参照してください。

アプリケーションのデプロイ

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

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

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

ソースバンドルをデプロイするには

  1. Elastic Beanstalk コンソールを開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Upload and Deploy] を選択します。

  4. [Choose File] を選択し、ダイアログボックスを使用してソースバンドルを選択します。

  5. [Deploy] を選択します。

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

注記

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

Composer 設定の構成

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

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

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

ウェブサイトのドキュメントルートを設定するには

  1. Elastic Beanstalk コンソールを開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Configuration] を選択します。

  4. [ソフトウェア] 設定カードで、[変更] を選択します。

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

  6. [Save] を選択します。

  7. [Apply] を選択します。

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

クリーンアップ

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

Elastic Beanstalk 環境を終了するには

  1. Elastic Beanstalk コンソールを開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Actions] を選択してから、[Terminate Environment] を選択します。

  4. [Confirm Termination] ダイアログボックスに環境名を入力し、[Terminate] を選択します。

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: /web

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

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

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