メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

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

Laravel は PHP 用のオープンソースのモデルビューコントローラー(MVC)フレームワークです。このチュートリアルでは、Laravel のアプリケーションを生成し、AWS Elastic Beanstalk 環境にデプロイし、Amazon Relational Database Service (Amazon RDS) データベースインスタンスに接続するように設定するプロセスについて説明します。

前提条件

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

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

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

注記

このチュートリアルに示しているすべてのコマンドは Linux 仮想マシン、OS X、または Amazon Linux EC2 インスタンスで実行できます。開発環境が必要な場合は、単一インスタンスの Elastic Beanstalk 環境を起動し、SSH で接続できます。

Laravel には、PHP 5.5.9 以降とその拡張モジュール mbstring が必要です。このチュートリアルでは、PHP 5.6 とそれに対応する Elastic Beanstalk プラットフォーム設定を使用します。

PHP 5.6 と必要な拡張機能をインストールします。お客様のプラットフォームとパッケージマネージャーによって、手順は異なります。

Amazon Linux では、yum を使用します。

Copy
$ sudo yum install php56 --skip-broken $ sudo yum install php56-mbstring

OS X では、Homebrew を使用します。

Copy
$ brew install php56

Windows では、windows.php.net のダウンロードページにアクセスして PHP を入手し、拡張機能の詳細について Windows 用 PHP 拡張モジュールのページをお読みください。

PHP のインストール後、ターミナルを再び開いて php --version を実行して、新しいバージョンがインストールされてデフォルトになっていることを確認します。

Composer をインストールする

Composer は PHP 用の依存関係管理ツールです。また、Laravel とその依存関係をインストールし、Laravel アプリケーションを生成するための推奨ツールです。

インストーラーをダウンロードして PHP で実行することで、Composer をインストールします。インストーラーによって Phar ファイルが生成されます。このファイルを PHP で呼び出して、現在のディレクトリに Laravel プロジェクトを生成できます。

Copy
~$ curl -s https://getcomposer.org/installer | php All settings correct for using Composer Downloading... Composer successfully installed to: /home/ec2-user/composer.phar Use it: php composer.phar

Composer のインストール中に問題が発生した場合は、公式ドキュメント(https://getcomposer.org/)を参照してください。

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

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

Copy
~$ php composer.phar create-project --prefer-dist laravel/laravel eb-laravel Installing laravel/laravel (v5.2.15) - Installing laravel/laravel (v5.2.15) Downloading: 100% Created project in eb-laravel > php -r "copy('.env.example', '.env');" Loading composer repositories with package information Installing dependencies (including require-dev) - Installing vlucas/phpdotenv (v2.2.0) Downloading: 100% - Installing symfony/polyfill-mbstring (v1.1.0) Loading from cache ...

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

Laravel のインストール中に問題が発生した場合は、公式ドキュメント(https://laravel.com/docs/5.2)のインストールに関するトピックを参照してください。

Elastic Beanstalk 環境を作成してアプリケーションをデプロイする

Composer で作成されたファイルを含むソースバンドルを作成します。.zip ファイルの作成には、隠しファイルに対応していれば、いずれのプログラムも使用できます。コマンドラインで、以下の zip コマンドを使用します。

Copy
~$ cd eb-laravel ~/eb-laravel$ zip ../laravel-default.zip -r * .[^.]*

アクセスできる場所に .zip アーカイブを保存します。これは、環境を作成するときに Elastic Beanstalk にアップロードするソースバンドルになります。

注記

Elastic Beanstalk 環境でリモートで作業している場合は、AWS CLI の aws cp コマンドを使用して、Amazon Simple Storage Service (Amazon S3) の Elastic Beanstalk ストレージバケットにアーカイブをアップロードできます。

Copy
~$ aws s3 cp laravel-default.zip s3://elasticbeanstalk-us-west-2-123456789012

Elastic Beanstalk によってこのバケットが作成されるのは、環境を初めて作成するときです。Amazon S3 にファイルをアップロードするには、お客様の環境のインスタンスプロファイルにバケットへの書き込みアクセス権限を与える必要があります。

AWS マネジメントコンソール を使用して、アプリケーションを実行する Elastic Beanstalk 環境を作成します。[PHP 5.6] プラットフォーム設定を選択し、プロンプトが表示されたら、ソースバンドルをアップロードします。

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

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

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

  3. [App code] で、[Upload] を選択します。

  4. [Local file] で [Browse] を選択し、ソースバンドルを開きます。

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

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

  7. 使用できる設定を確認し、[Create app] を選択します。

環境の作成には約 5 分かかります。作成が完了したら、ブラウザーで Laravel アプリケーションを開くための URL をクリックします。

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

このフォルダーへのアクセスを許可するには、Elastic Beanstalk コンソールを使用してウェブサイトのドキュメントルートを設定します。

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

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

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

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

  4. [Software Configuration] セクションで、  を編集します。 を選択します。

  5. [Document Root] に「/public」と入力します。

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

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

ここまで完了したら、次は、お客様の環境にデータベースを追加し、そのデータベースに接続するように Laravel を設定します。

お客様の環境にデータベースを追加する

Elastic Beanstalk 環境で RDS DB インスタンスを起動します。Elastic Beanstalk 上の Laravel では、MySQL、SQLServer、または PostgreSQL データベースを使用できます。この例では、MySQL を使用します。

Elastic Beanstalk 環境に RDS DB インスタンスを追加するには

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

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

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

  4. [Data Tier] セクションで、[create a new RDS database] を選択します。

  5. [DB engine] で、[mysql] を選択します。

  6. マスターの [username] と [password] に入力します。Elastic Beanstalk は環境プロパティを使用して、アプリケーションにこれらの値を渡します。

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

データベースインスタンスの作成には約 10 分かかります。その間に、環境から接続情報を読み取るようにソースコードを更新できます。Elastic Beanstalk は、RDS_HOSTNAME などの環境変数を使用して、接続の詳細をアプリケーションに渡します。

Laravel のデータベース設定は、プロジェクトコードで config フォルダー内の database.php という名前のファイルに保存されています。このファイルを開いたら、$_SERVER から環境変数を読み取ってローカル変数に割り当てるコードを追加します。そのためには、以下の例で強調表示された行を最初の行(<?php)の後に挿入してください。

例 ~/eb-laravel/config/database.php

Copy
<?php if (!defined('RDS_HOSTNAME')) { define('RDS_HOSTNAME', $_SERVER['RDS_HOSTNAME']); define('RDS_USERNAME', $_SERVER['RDS_USERNAME']); define('RDS_PASSWORD', $_SERVER['RDS_PASSWORD']); define('RDS_DB_NAME', $_SERVER['RDS_DB_NAME']); } return [ ...

データベース接続は database.php ファイル内をさらに下がったセクションで設定されています。以下のセクションを見つけ、データベースエンジン(MysqlSqlserver、または Postgres)と一致するドライバの名前で、デフォルトのデータソース設定を変更し、Elastic Beanstalk から対応する値を読み取るように hostdatabaseusernameand password 変数を設定します。

例 ~/eb-laravel/config/database.php

Copy
... 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => database_path('database.sqlite'), 'prefix' => '', ], 'mysql' => [ 'driver' => 'mysql', 'host' => RDS_HOSTNAME, 'database' => RDS_DB_NAME, 'username' => RDS_USERNAME, 'password' => RDS_PASSWORD, 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ], ...

データベース接続が正しく設定されていることを確認するには、データベースに接続してデフォルトのレスポンスを返すコードを index.php に追加します。

例 ~/eb-laravel/public/index.php

Copy
... if(DB::connection()->getDatabaseName()) { echo "Connected to database ".DB::connection()->getDatabaseName(); } $response->send(); ...

DB インスタンスの起動が完了したら、更新したアプリケーションのバンドルを作成し、お客様の環境にデプロイします。

Elastic Beanstalk環境を更新するには

  1. 新しいソースバンドルを作成します。

    Copy
    ~/eb-laravel$ zip ../laravel-v2-rds.zip -r * .[^.]*
  2. Elastic Beanstalk コンソールを開きます。

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

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

  5. [Browse] を選択し、laravel-v2-rds.zip をアップロードします。

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

アプリケーションの新しいバージョンのデプロイには 1 分以上かかりません。デプロイが完了したら、ウェブページを更新して、データベースに接続されたことを確認します。

クリーンアップと次のステップ

Elastic Beanstalk での作業が完了したら、PHP 環境を終了できます。

Elastic Beanstalk 環境を終了するには

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

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

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

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

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

このチュートリアルでは、アプリケーションのドキュメントルートを設定しました。追加の環境を起動するときは、各環境でこの設定を手動で設定することはお勧めしません。設定ファイルを使用して、この設定とその他の設定をソースコードに保存することで、それらの設定が自動的に適用されるようにできます。

Elastic Beanstalk 環境で RDS DB インスタンスを実行するのは、開発とテストには最適ですが、データベースのライフサイクルがお客様の環境に結び付けられます。お客様の環境の外で実行されているデータベースに接続する手順については、「PHP アプリケーション環境に Amazon RDS DB インスタンスを追加」を参照してください。

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

Laravel の詳細については、laravel.com でチュートリアルを参照してください。