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

外部 Amazon RDS データベースを備えた高可用性の WordPress ウェブサイトを Elastic Beanstalk にデプロイする

このチュートリアルでは、AWS Elastic Beanstalk の外部にある Amazon RDS DB インスタンスを起動する方法について説明します。そして、WordPress ウェブサイトを実行中の高可用性環境を設定してこのインスタンスに接続する方法を説明します。Elastic Beanstalk の外部で DB インスタンスを実行すると、データベースが環境のライフサイクルから切り離されます。これにより、複数の環境から同じデータベースに接続したり、あるデータベースから別のデータベースに切り替えたり、データベースに影響を与えずに Blue/Green デプロイメントを実行したりできます。

ステップ 1: Amazon RDS で DB インスタンスを起動する

Elastic Beanstalk で実行するアプリケーションで外部データベースを使用するには、まず Amazon RDS で DB インスタンスを起動します。 この DB インスタンスは Elastic Beanstalk および Elastic Beanstalk 環境から完全に独立しており、Elastic Beanstalk によって終了されたり、モニタリングされたりしません。

Amazon RDS コンソールを使用して、マルチ AZ MySQL DB インスタンスを起動します。

[エンジンのオプション] で [MySQL] を選択します。[ユースケース] で [Production - MySQL] を選択してデータベースをフェイルオーバーし、マスター DB インスタンスが停止しても引き続き利用できることを確実にします。

[DB インスタンス識別子] は wordpress-beanstalk、[マスターユーザー名] は not_wp_admin と入力します。

RDS DB インスタンスをデフォルト VPC 内で起動するには

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

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

  3. [DB インスタンスの起動] を選択します。

  4. [エンジンのオプション] で必要に応じたエンジンを選択し、[] を選択します。

    [ユースケース] を選択するようにプロンプトが表示されたら、マルチ AZ 配置に [本稼働] を選択するか、あるいは 無料利用枠のみを消費するように [開発/テスト] を選択します。続いて、[Next] を選択します。

  5. [DB 詳細の指定] の [インスタンスの仕様] では、以下を選択し、その他のオプションはデフォルト設定のままにします。

    • [DB インスタンスクラス] – 計算とメモリの容量 (分からない場合には、「learn which option is right for you (お客様に最適なオプションの説明)」を参照)

    • [マルチ AZ 配置] – 高可用性を実現するには、[別のゾーンにレプリカを作成します] を設定します。

  6. [概算月間コスト] で合計を確認します。[ユースケース] と [DB インスタンスクラス] を予算に合うように調整します。

  7. [設定] で、[DB インスタンス識別子]、[マスターユーザー名]、[マスターパスワード]、[パスワードの確認] に値を入力します。後で使用するため、これらの設定を書き留めておきます。

  8. [次へ] を選択します。

  9. [詳細設定の設定] で [ネットワーク & セキュリティ] には以下を選択します。

    • Virtual Private Cloud (VPC) – デフォルト値を維持します

    • [サブネットグループ] – [デフォルト]

    • パブリックアクセシビリティ – [なし]

    • Availability Zone No Preference

    • VPC セキュリティグループ – [Create new VPC Security Group (新規の VPC セキュリティグループの作成)]

  10. [データベースの選択肢] で [データベース名] に ebdb と入力し、その他のオプションではデフォルトの設定をそのままにします。後で使用できるように、[データベースポート] の値を書き留めます。

  11. その他のオプションのデフォルト設定を確認し、[Launch DB Instance (DB インスタンスの起動)] を選択します。

次に、DB インスタンスにアタッチするセキュリティグループを変更して、適切なポートへのインバウンドトラフィックを許可します。これは、後で Elastic Beanstalk 環境にアタッチするのと同じセキュリティグループで、追加するルールは、同じセキュリティグループ内の他のリソースにアクセス許可を付与するものです。

RDS インスタンスのセキュリティグループの進入ルールを変更する

  1. Amazon RDS コンソールを開きます。

  2. [Instances] を選択します。

  3. 最近作成された DB インスタンスの名前を選択してその詳細を表示します。

  4. [詳細] セクションへ移動します。

  5. [詳細] セクションで、後に情報を使用するために、このページに表示される [サブネット]、[セキュリティグループ]、[エンドポイント] を書き留めます。

    注記

    セキュリティグループ名は、[セキュリティグループ] に表示されるリンクの最初の値 (かっこ内の値の前) です。この 2 番目の値 (かっこの中) は、セキュリティグループ ID です。

  6. [セキュリティとネットワーク] には、DB インスタンスに関連付けられるセキュリティグループが表示されます。リンクを開いて、Amazon EC2 コンソールにセキュリティグループを表示します。

     Amazon RDS コンソールの DB インスタンスページの詳細セクション
  7. セキュリティグループの詳細で、[インバウンド] ビューを選択します。

  8. [Edit] を選択します。

  9. [Add Rule] を選択します。

  10. [Type] で、アプリケーションが使用する DB エンジンを選択します。

  11. [Source] で、[Custom ] を選択し、続いてセキュリティグループのグループ ID を入力します。これにより、セキュリティグループのリソースが、同じグループ内の他のリソースからのトラフィックをデータベースポートで受信することを可能にします。

     Amazon EC2 コンソールのセキュリティグループのインバウンドのルールの編集
  12. [Save] を選択します。

DB インスタンスの作成には約 10 分かかります。 その間、WordPress をダウンロードし、Elastic Beanstalk 環境を起動します。

ステップ 2: WordPress のダウンロード

AWS Elastic Beanstalk を使用して WordPress のデプロイを準備するには、WordPress ファイルをコンピュータにコピーして、いくつかの設定情報を提供する必要があります。AWS Elastic Beanstalk には .zip または .war ファイル形式のソースバンドルが必要です。

WordPress をダウンロードしてソースバンドルを作成するには

  1. http://wordpress.org/download/ を開きます。

  2. 最新リリースをダウンロードしてください。

  3. ダウンロードからローカルコンピュータ上のフォルダに WordPress ファイルを展開し、ルートフォルダーの名前を wordpress-beanstalk に変更します。

  4. 次のリポジトリから設定ファイルをダウンロードします。

    https://github.com/awslabs/eb-php-wordpress/releases/download/v1.0/eb-php-wordpress-v1.zip
  5. 設定ファイルを wordpress-beanstalk フォルダに展開します。

  6. 以下に示すように、wordpress-beanstalk フォルダの構造が正しいことを確認してください。

    ├── .ebextensions ├── wp-admin │ ├── css │ ├── images │ ├── includes │ ├── js │ ├── maint │ ├── network │ └── user ├── wp-content │ ├── plugins │ └── themes ├── wp-includes │ ├── certificates │ ├── css │ ├── customize │ ├── fonts │ ├── ID3 │ ├── images │ ├── js │ ├── pomo │ ├── random_compat │ ├── Requests │ ├── rest-api │ ├── SimplePie │ ├── Text │ ├── theme-compat │ └── widgets
  7. デフォルトの Amazon VPC とサブネットの ID、およびパブリック IP アドレスを使用して、.ebextensions フォルダ内の設定ファイルを変更します。

    .ebextensions/efs-create.config ファイルを開きます。このファイルは、Amazon VPC 内の各アベイラビリティーゾーンあるいはサブネットに Amazon EFS ファイルシステムとマウントポイントを作成します。Amazon VPC コンソールで、デフォルトの VPC とサブネット ID を特定します。

    1. Amazon RDS コンソールを開きます。

    2. [Instances] を選択します。

    3. 最近作成された DB インスタンスの名前を選択して詳細を表示します。

    4. [詳細] ページに移動します。

    5. [セキュリティとネットワーク] で [VPC] の値および [サブネット] の値 を .ebextensions/efs-create.config ファイルにコピーします。

    .ebextensions/dev.config ファイルは、環境へのアクセスを IP アドレスに制限して、WordPress のインストールプロセス中に IP アドレスを保護します。ファイルの先頭にあるプレースホルダー IP アドレスをパブリック IP アドレスに置き換え、続いて 32 を加えます。

  8. オペレーティングシステムに応じてファイル、および wordpress-beanstalk フォルダ (親ディレクトリではない) から、次のいずれかの方法を使用して .zip ファイルを作成します。

    • Windows – Windows エクスプローラーで、ファイルとフォルダを選択し、右クリックして、[送る]、[圧縮 (zip 形式) フォルダー] の順に選択します。wordpress-x.y.z.zipx.y.z という名前を付けます。「」は WordPress のバージョンです。

    • Mac OS X および Linux – 次のコマンドを使用します。「x.y.z」は WordPress のバージョンです。

      zip -r ../wordpress-x.y.z.zip .
  9. .zip ファイルのルート構造がステップ 6 と同じであることを確認します。

ステップ 3: Elastic Beanstalk 環境を起動する

AWS マネジメントコンソール を使用して、Elastic Beanstalk 環境を起動します。

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

  2. [アプリケーション情報] で、[アプリケーション名] に wordpress-beanstalk と入力して、[] を選択します。

  3. [新しい環境] ページで [ウェブサーバーの作成] を選択します。

  4. [環境タイプ] の [事前定義の設定] で、[PHP] を選択します。

    注記

    4.0 以前の WordPress バージョンを使用する必要がある場合には、Elastic Beanstalk 環境には以前のバージョンの PHP プラットフォームがあることが必要です。[Change platform version (プラットフォームバージョンの変更)] を選択し、ドロップダウンメニューから最新の PHP 5.6 バージョンを選択します。

  5. [環境タイプ] で、[Load balancing, auto scaling (負荷分散、自動スケーリング)]、[] の順に選択します。

  6. [アプリケーションバージョン] で [ソース] に [独自のアップロード] を選択します。

  7. [ファイルを選択] を選択し、WordPress ファイル用に作成した .zip ファイルに移動します。

  8. [デプロイの設定] では、すべてをデフォルトのままにして [] を選択します。

  9. [環境情報] で、必要に応じてカスタマイズするか、あるいはデフォルトを使用します。続いて、[Next] を選択します。

  10. [その他のリソース] ページの [VPC 内にこの環境を作成する] を選択し、[] を選択します。

  11. [構成の詳細] でオプションを確認し、[] を選択します。

  12. [環境タグ] で必要に応じてタグを指定し、[] を選択します。

  13. [VPC 設定] で [ELB] と [EC2] の両方にすべてのサブネットを選択します。

  14. [VPC 設定] の [VPC security group (VPC セキュリティグループ)] で RDS インスタンスにセキュリティグループを選択します。続いて、[Next] を選択します。

  15. [アクセス許可] では選択されたデフォルトをそのままにして、[] を選択します。

  16. 選択したすべてのオプションを確認し、問題がなければ、[起動 ] を選択します。

環境の作成には約 5 分かかります。

ステップ 4: 環境プロパティを設定する

次に、環境プロパティを使用して環境に接続情報を渡します。サンプルアプリケーションは、環境内でデータベースをプロビジョニングする場合、Elastic Beanstalk 設定と一致するプロパティのデフォルトセットを使用します。

Amazon RDS DB インスタンスの環境プロパティを設定するには

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

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

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

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

  5. [Environment Properties] セクションで、アプリケーションが読み取る変数を定義して、接続文字列を構成します。統合された RDS DB インスタンスがある環境との互換性を考慮して、次を使用します。プラス記号を選択して、プロパティを追加します。

    • RDS_HOSTNAME – DB インスタンスのホスト名。

      Amazon RDS コンソールラベル – [エンドポイント] (これはホスト名です)。

    • RDS_PORT – DB インスタンスが接続を許可するポート。デフォルト値は DB エンジンによって異なります。

      Amazon RDS コンソールラベル – [ポート]

    • RDS_DB_NAME – データベース名、ebdb

      Amazon RDS コンソールラベル – [DB 名前]

    • RDS_USERNAME – お客様のデータベース用に設定したユーザー名。

      Amazon RDS コンソールラベル – [ユーザー名]

    • RDS_PASSWORD – お客様のデータベース用に設定したパスワード。

     RDS プロパティが追加された環境プロパティセクション
  6. [保存] を選択し、[適用] を選択します。

ステップ 5: WordPress をインストールする

WordPress のインストールを完了するには

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

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

  3. 環境 URL を選択して、ブラウザでサイトを開きます。サイトをまだ設定していないため、WordPress のインストールウィザードにリダイレクトされます。

  4. 標準インストールを実行します。wp-config.php ファイルはすでにソースコードに存在し、環境からデータベース接続情報を読み込むように設定されています。接続を設定するよう求められません。

インストールには約 1 分かかります。

ステップ 6: キーとソルトの更新

WordPress 設定ファイル wp-config.php は、環境プロパティからキーとソルトの値も読み込みます。現在、これらのプロパティはすべて、.ebextensions フォルダの wordpress.config ファイルによって test に設定されています。

ハッシュソルトはどのような値でもかまいませんが、ソースコントロールには格納しないでください。環境でこれらのプロパティを直接設定するには、Elastic Beanstalk コンソールを使用します。

環境プロパティを追加するには

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

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

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

  4. [Software Configuration] で、ギアアイコンを選択します。

  5. Environment Properties については、次の認証設定を定義します。

    • AUTH_KEY – AUTH_KEY に選択された値。

    • SECURE_AUTH_KEY – SECURE_AUTH_KEY に選択された値。

    • LOGGED_IN_KEY – LOGGED_IN_KEY に選択された値。

    • NONCE_KEY – NONCE_KEY に選択された値。

    • AUTH_SALT – AUTH_SALT に選択された値。

    • SECURE_AUTH_SALT – SECURE_AUTH_SALT に選択された値。

    • LOGGED_IN_SALT – LOGGED_IN_SALT に選択された値。

    • NONCE_SALT — NONCE_SALT に選択された値。

    環境のプロパティを直接設定すると、wordpress.config の値が直接上書きされます。

ステップ 7: 環境の更新

セキュリティグループが IP アドレスを使用する場合、このチュートリアルにはセキュリティグループおを作成して環境のロードバランサーに割り当てる設定ファイル (loadbalancer-sg.config) が含まれています。セキュリティグループは、dev.config で設定した IP アドレスを使用します。これにより、ネットワークからポート 80 を介した HTTP アクセスの接続が制限されます。これにより、WordPress のインストールを完了して管理者アカウントを設定する前に外部のサードパーティによる潜在的な接続を防ぐことができます。ロードバランサー設定からこの制限を削除し、インターネットにサイトを開くには、次の手順を実行します。

制限を削除し、環境を更新するには

  1. ローカルコンピュータで、wordpress-beanstalk フォルダから .ebextensions/loadbalancer-sg-config ファイルを削除します。

  2. オペレーティングシステムに応じてファイル、および wordpress-beanstalk フォルダ (親ディレクトリではない) から、次のいずれかの方法を使用して .zip ファイルを作成します。

    • Windows – Windows エクスプローラーで、ファイルとフォルダを選択し、右クリックして、[送る]、[圧縮 (zip 形式) フォルダー] の順に選択します。次の形式を使用してファイルに名前を付けます。ここで、「x.y.z」は WordPress のバージョンです。

      wordpress-x.y.z-v2.zip
    • Mac OS X および Linux – 次のコマンドを使用します。「x.y.z」は WordPress のバージョンです。

      zip -r ../wordpress-x.y.z-v2.zip .
  3. Elastic Beanstalk コンソールを開きます。

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

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

  6. [ファイルを選択] を選択し、WordPress ファイル用に作成した .zip ファイルに移動します。

  7. 更新されたこのバージョンと以前のバージョンを区別する Version label を入力します。

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

ステップ 8: Auto Scaling グループを設定する

最後に、より高いインスタンス数で、Auto Scaling 環境グループを設定します。 少なくと 2 つのインスタンスを常に実行することで、環境のウェブサーバーが単一障害点になることを防ぎます。また、これにより、サイトを停止せずに変更をデプロイすることができます。

高可用性のために環境の Auto Scaling グループを設定するには

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

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

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

  4. [キャパシティ] 設定カードで、[変更] を選択します。

  5. [Auto Scaling グループ] セクションで、[最小インスタンス数] を [2] に、[最大インスタンス数] を [2] より大きい値に設定します。

  6. [保存] を選択し、[適用] を選択します。

確認

環境を起動すると、以下のリソースが作成されます。

  • 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 は含まれているすべてのリソースを終了します。起動した RDS DB インスタンスは、環境外にありますので、お客様の責任において、ライフサイクルを管理してください。

注記

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

クリーンアップ

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

Elastic Beanstalk 環境を終了するには

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

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

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

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

さらに、Elastic Beanstalk 環境の外に作成したデータベースリソースを終了できます。Amazon RDS データベースインスタンスを削除する場合、スナップショットを作成し、後で別のインスタンスにデータを復元できます。

RDS DB インスタンスを削除するには

  1. Amazon RDS コンソールを開きます。

  2. [Instances] を選択します。

  3. DB インスタンスを選択します。

  4. [Instance actions] を選択し、[Delete] を選択します。

  5. スナップショットを作成するかどうかを選択してから、[Delete] を選択します。

DynamoDB テーブルを削除するには

  1. DynamoDB コンソールで [Tables page] を開きます。

  2. テーブルを選択します。

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

  4. [Delete] を選択します。

次のステップ

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

サンプルアプリケーションは、設定ファイルを使用して PHP 設定を設定し、存在しない場合はテーブルをデータベースに作成します。 設定ファイルを使用して、環境の作成時に時間がかかる設定更新を避けるために、インスタンスのセキュリティグループ設定を設定できます。 詳細については、「設定ファイル (.ebextensions) による高度な環境のカスタマイズ」を参照してください。

開発とテストのために、マネージド DB インスタンスを環境に直接追加するために Elastic Beanstalk 機能を使用する必要がある場合があります。環境内でのデータベースのセットアップについては、「データベースを Elastic Beanstalk 環境に追加する」を参照してください。

高性能データベースが必要な場合は、Amazon Aurora の使用を検討します。 Amazon Aurora は MySQL 対応のデータベースエンジンで、商用データベース機能を低コストで提供します。 別のデータベースにアプリケーションを接続するには、セキュリティグループ設定手順を繰り返し、RDS 関連の環境プロパティを更新します

本番稼働環境でアプリケーションを使用する予定の場合は、環境に合わせてカスタムドメイン名を設定します。

安全な接続のために HTTPS を有効にする場合は、WordPress プラグインを利用できます。1 つの例は、Really Simple SSL プラグインです。