AWS Elastic Beanstalk+WordPressで簡単にWebサイトを作る―その1
今回は、サクッとWebサイトを立ち上げたいとお考えの人向けに、AWS Elastic Beanstalkを利用して、WordPressでWebサイトを立ち上げてみたいと思います。テクニカルなことは、当ブログでも過去に記事がありますので、そちらも参照してもらい、今回はこんな流れで簡単に作れますよ、というところをお見せできればと思います。
- AWS Elastic BeanstalkでWordPressを始める
- AWSにWordPress3.8をインストールしてみた – その1
- AWSにWordPress3.8をインストールしてみた – その2
はじめに
最終的なゴールの構成イメージはこんな感じです。
WEBサーバにおいて静的コンテンツの扱いは重要です。(コスト的にも、可用性的にも)
静的コンテンツだけであればS3とCloudFrontとELBとRoute53という横綱コンビを作れるのですが、WordPressを使う以上EC2が必要になってしまいます。
(横綱についてはこちらの記事を御覧ください。ベストプラクティスってかっこいい。)
ここで今回は、動的コンテンツはEC2、画像のような静的コンテンツはS3というハイブリッド式を目指します。
サクッととは言いましたが、結構AWSのあらゆるサービスを駆使します。ワクワクしますね(*^_^*)
Elastic Beanstalkの立ち上げ
アプリケーションと本番環境の作成
まずは、アプリケーションと、その中に公開用の本番環境を作成します。
以下の画面で、右上の[Create New Application]をクリックしてください。
ここで注意してもらいたいのは、今回は[Select a Platform]のプルダウン選択から[Launch Now]をしてはいけません。なぜなら、ここで[Launch Now]をしてしまうと、RDSなしでアプリケーションサーバが立ち上がってしまい、後からRDSを追加することになるのですが、そうすると、RDSに紐付くSecurity Groupの設定が自動ではアプリケーションサーバと疎通できるようになってくれないのです(Beanstalkを信頼しきっていた私は、ここで少しハマりました・・・)。
あとは、画面に従って入力なり選択なりを進めていきます。
最初の画面で、作成するアプリケーションの名前を指定します。
WebサーバなのでCreate web serverを選択します。
S3にログを置いたり、CloudWatchの設定を行うためにIAM Roleが必要です。権限の細かい設定は大変なので、Create an IAM role and instance profile.を選択しておきましょう。
今回はWordPressを稼働させますので、PHPを選択します。ELB+AutoScalingはデフォルトのままにします。
ここでは、サンプルアプリケーションでBeanstalkを立ち上げます。WordPressは、後ほど別の環境で構築し、こちらの環境にはデプロイのみを行うようにします。
ちなみに、[Deployment Limits]のパラメータは、1回のデプロイで対象にするアプリケーションサーバの台数(割合)を指定するもののようです。
ここでは、デフォルトで、最初に指定した[Application Name]から値が生成されています。ただし、URLがすでに使用されている場合は、別の名前を指定する必要があります。
WordPressはMySQLを使用しますので、RDSを作成します。あと、環境はお決まりのVPC内に作成します。
この画面は、すべてデフォルトで進みます。ただし、いろいろと大切な内容ですので、出来ればちゃんと考えて設定したほうがよいです。
タグは、特に何も指定せずに進みます。一応、Beanstalk側でNameタグに環境名を付けてくれますので、それを見れば今回作成されたリソースが判別できます。
RDSの設定画面では、「mysql」を選択し、ユーザとパスワードを指定します。あと、可用性を考慮してMulit-AZを選択します(ここは用途に合わせてシングルでも構いません)。
VPCの設定は、デフォルトで作られている設定をそのまま利用してしまいます。
実際構築する際には、Fronted(ELBを配置)、Application(EC2インスタンスを配置)、Datahouse(RDSを配置)とサブネットを分けたVPCを用意しましょう。
最後に、いままでの設定内容をさらっと確認し、環境を作成します。
ダッシュボードで十数分ほど待ち(RDS作成が結構かかります。。)、以下の画面になったら環境の出来上がりです。
今回指定したURLhttp://wordpresstest-prd.elasticbeanstalk.com/にアクセスし、以下の画面が表示されれば成功です。
管理環境の作成
次に、管理用の環境を作成します。作成の中でWordPressの初回デプロイも行うので、事前にWordPressをダウンロードしておきます。wordpress-4.1-ja.zipというような、Zipファイルになっていますが、これをそのまま使用します。
では、先ほど作成したアプリケーション内に、別環境を作成し、WordPress管理用のインスタンスを立ち上げます。
なお、いまから作成するインスタンスは、Beanstalkを使用せずに単純なEC2インスタンスで構築しても問題ありません。逆に、その方が構成的にシンプルで運用しやすいかもしれませんが、今回はBeanstalkを利用してみます。
ダッシュボード右上の[Create New Environment]をクリックします。
IAM Roleはさきほど自動作成されたものを選択します。
今度は、管理用なのでシングルインスタンスにします。
アプリケーションは、先ほどダウンロードしたWordPressのZipファイルを選択します。
環境名を指定します。
RDSは先ほどの環境で作成したものを使用しますので、VPCの設定のみにチェックします。
管理用のインスタンスにはSSHアクセスしますので、Key Pairを指定します。
VPCの設定は、シングルインスタンスなので、片側のAZにあるSubnetを指定します。また、本番環境で作成したRDSと疎通が取れるように、本番環境作成時に自動作成されたEC2インスタンス用のSecurity Group(※1)を選択します。
最後に、設定内容をさらっと見返して作成します。
以下の画面でできあがりです(RDSを建てないので、先ほどと比べると早いです、)
ただし、このままhttp://wordpresstest-mgt.elasticbeanstalk.com/にアクセスしてもエラーになりますので、以下の画面で[Document root]を「/wordpress」に変更します([Configuration] > [Software Configuration])。
これで、http://wordpresstest-mgt.elasticbeanstalk.com/にアクセスして、スタートページが表示されれば成功です。
以上でBeanstalkの立ち上げは完了です。
WordPressのセットアップ
ここまでで一通り環境ができたので、WordPressのセットアップに入ります。
初期設定
上図のスタートページにて、[さあ、始めましょう!]をクリックし、以下の画面でRDSへの接続情報を指定します。
- データベース名:ebdb(Beanstalkで作成されるデフォルトDB名)
- ユーザ名:wpadmin(RDS設定画面で指定した名前)
- パスワード:********(RDS設定画面で指定したパスワード)
- データベースのホスト名:nantoka.kantoka.ap-northeast-1.rds.amazonaws.com:3306(※2)
- テーブル接頭辞:wp_(デフォルトのまま)
問題がなければ、[インストール実行]です。
サイトの必要情報(良い子はパスワードをちゃんと強固にしましょう!)を入力して、インストールを開始します。
以下の画面が表示されれば成功です。
管理画面にログインできることを確認しましょう。
まとめ
これでWordPress環境の構築はひとまず完了です。おめでとうございます。
少し記事が長くなってきたので二部構成とさせていただきます。
次回はWordPressの設定や、CloudFront、Route53などなどの設定を行います。AWSちゃんの本領発揮ですね!!
ワクワク(*^_^*)
補足
※1 以下の画面で確認できます([Configuration] > [Instances])。一つはデフォルトで、もう一つが自動作成されたものになります。
※2 本番環境の以下の画面で確認できます([Configuration] > [RDS])。