AWS Elastic Beanstalk+WordPressで簡単にWebサイトを作る―その1

Elastic Beanstalk

今回は、サクッとWebサイトを立ち上げたいとお考えの人向けに、AWS Elastic Beanstalkを利用して、WordPressでWebサイトを立ち上げてみたいと思います。テクニカルなことは、当ブログでも過去に記事がありますので、そちらも参照してもらい、今回はこんな流れで簡単に作れますよ、というところをお見せできればと思います。

はじめに

最終的なゴールの構成イメージはこんな感じです。

AWS Design

WEBサーバにおいて静的コンテンツの扱いは重要です。(コスト的にも、可用性的にも)
静的コンテンツだけであればS3とCloudFrontとELBとRoute53という横綱コンビを作れるのですが、WordPressを使う以上EC2が必要になってしまいます。
(横綱についてはこちらの記事を御覧ください。ベストプラクティスってかっこいい。)
ここで今回は、動的コンテンツはEC2、画像のような静的コンテンツはS3というハイブリッド式を目指します。
サクッととは言いましたが、結構AWSのあらゆるサービスを駆使します。ワクワクしますね(*^_^*)

Elastic Beanstalkの立ち上げ

アプリケーションと本番環境の作成

まずは、アプリケーションと、その中に公開用の本番環境を作成します。

以下の画面で、右上の[Create New Application]をクリックしてください。

eb-setup_0

ここで注意してもらいたいのは、今回は[Select a Platform]のプルダウン選択から[Launch Now]をしてはいけません。なぜなら、ここで[Launch Now]をしてしまうと、RDSなしでアプリケーションサーバが立ち上がってしまい、後からRDSを追加することになるのですが、そうすると、RDSに紐付くSecurity Groupの設定が自動ではアプリケーションサーバと疎通できるようになってくれないのです(Beanstalkを信頼しきっていた私は、ここで少しハマりました・・・)。

あとは、画面に従って入力なり選択なりを進めていきます。

最初の画面で、作成するアプリケーションの名前を指定します。

eb-setup_1

WebサーバなのでCreate web serverを選択します。

ebt01

S3にログを置いたり、CloudWatchの設定を行うためにIAM Roleが必要です。権限の細かい設定は大変なので、Create an IAM role and instance profile.を選択しておきましょう。

ebt02

今回はWordPressを稼働させますので、PHPを選択します。ELB+AutoScalingはデフォルトのままにします。

ebt03

ここでは、サンプルアプリケーションでBeanstalkを立ち上げます。WordPressは、後ほど別の環境で構築し、こちらの環境にはデプロイのみを行うようにします。

ちなみに、[Deployment Limits]のパラメータは、1回のデプロイで対象にするアプリケーションサーバの台数(割合)を指定するもののようです。

eb-setup_3

ここでは、デフォルトで、最初に指定した[Application Name]から値が生成されています。ただし、URLがすでに使用されている場合は、別の名前を指定する必要があります。

eb-setup_4

WordPressはMySQLを使用しますので、RDSを作成します。あと、環境はお決まりのVPC内に作成します。

eb-setup_5

この画面は、すべてデフォルトで進みます。ただし、いろいろと大切な内容ですので、出来ればちゃんと考えて設定したほうがよいです。

eb-setup_6

タグは、特に何も指定せずに進みます。一応、Beanstalk側でNameタグに環境名を付けてくれますので、それを見れば今回作成されたリソースが判別できます。

eb-setup_7

RDSの設定画面では、「mysql」を選択し、ユーザとパスワードを指定します。あと、可用性を考慮してMulit-AZを選択します(ここは用途に合わせてシングルでも構いません)。

eb-setup_8

VPCの設定は、デフォルトで作られている設定をそのまま利用してしまいます。
実際構築する際には、Fronted(ELBを配置)、Application(EC2インスタンスを配置)、Datahouse(RDSを配置)とサブネットを分けたVPCを用意しましょう。

eb-setup_9

最後に、いままでの設定内容をさらっと確認し、環境を作成します。

eb-setup_10

ダッシュボードで十数分ほど待ち(RDS作成が結構かかります。。)、以下の画面になったら環境の出来上がりです。

eb-setup_11

今回指定したURLhttp://wordpresstest-prd.elasticbeanstalk.com/にアクセスし、以下の画面が表示されれば成功です。

eb-setup_12

管理環境の作成

次に、管理用の環境を作成します。作成の中でWordPressの初回デプロイも行うので、事前にWordPressをダウンロードしておきます。wordpress-4.1-ja.zipというような、Zipファイルになっていますが、これをそのまま使用します。

では、先ほど作成したアプリケーション内に、別環境を作成し、WordPress管理用のインスタンスを立ち上げます。
なお、いまから作成するインスタンスは、Beanstalkを使用せずに単純なEC2インスタンスで構築しても問題ありません。逆に、その方が構成的にシンプルで運用しやすいかもしれませんが、今回はBeanstalkを利用してみます。

ダッシュボード右上の[Create New Environment]をクリックします。

eb-setup_13

IAM Roleはさきほど自動作成されたものを選択します。

ebt04

 今度は、管理用なのでシングルインスタンスにします。

ebt05

アプリケーションは、先ほどダウンロードしたWordPressのZipファイルを選択します。

eb-setup_15

環境名を指定します。

eb-setup_16

RDSは先ほどの環境で作成したものを使用しますので、VPCの設定のみにチェックします。

eb-setup_17

管理用のインスタンスにはSSHアクセスしますので、Key Pairを指定します。

eb-setup_18

VPCの設定は、シングルインスタンスなので、片側のAZにあるSubnetを指定します。また、本番環境で作成したRDSと疎通が取れるように、本番環境作成時に自動作成されたEC2インスタンス用のSecurity Group(※1)を選択します。

eb-setup_19

最後に、設定内容をさらっと見返して作成します。

eb-setup_20

以下の画面でできあがりです(RDSを建てないので、先ほどと比べると早いです、)

eb-setup_22

ただし、このままhttp://wordpresstest-mgt.elasticbeanstalk.com/にアクセスしてもエラーになりますので、以下の画面で[Document root]を「/wordpress」に変更します([Configuration] > [Software Configuration])。

eb-setup_23

これで、http://wordpresstest-mgt.elasticbeanstalk.com/にアクセスして、スタートページが表示されれば成功です。

eb-setup_24

 以上でBeanstalkの立ち上げは完了です。

WordPressのセットアップ

ここまでで一通り環境ができたので、WordPressのセットアップに入ります。

初期設定

上図のスタートページにて、[さあ、始めましょう!]をクリックし、以下の画面でRDSへの接続情報を指定します。

  • データベース名:ebdb(Beanstalkで作成されるデフォルトDB名)
  • ユーザ名:wpadmin(RDS設定画面で指定した名前)
  • パスワード:********(RDS設定画面で指定したパスワード)
  • データベースのホスト名:nantoka.kantoka.ap-northeast-1.rds.amazonaws.com:3306(※2
  • テーブル接頭辞:wp_(デフォルトのまま)

wp-setup_1

問題がなければ、[インストール実行]です。

wp-setup_2

サイトの必要情報(良い子はパスワードをちゃんと強固にしましょう!)を入力して、インストールを開始します。

wp-setup_3

以下の画面が表示されれば成功です。

wp-setup_4

管理画面にログインできることを確認しましょう。

wp-setup_6

まとめ

これでWordPress環境の構築はひとまず完了です。おめでとうございます。
少し記事が長くなってきたので二部構成とさせていただきます。
次回はWordPressの設定や、CloudFront、Route53などなどの設定を行います。AWSちゃんの本領発揮ですね!!
ワクワク(*^_^*)

補足

※1 以下の画面で確認できます([Configuration] > [Instances])。一つはデフォルトで、もう一つが自動作成されたものになります。

eb-setup_21

※2 本番環境の以下の画面で確認できます([Configuration] > [RDS])。

wp-setup_5