話題の記事

AWS Elastic BeanstalkでWordPressを始める

2013.02.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ご挨拶

はじめまして、今回初めてブログ書くとくがみありです。 3本書くと弊社会長からカレーをごちそうしてもらえるということでブログを書くことにしました。

AWS Elastic Beanstalk??

みなさん、AWS ElasticBeanstalkは使ってますか? データベースサーバであれば、EC2にMySQLをインストールして運用するよりもRDSを選択する人は沢山見かけますが、 EC2にApacheをインストールして運用しないで、ElasticBeanstalkを選択している人はそこまで多くないんじゃないかと思います。 おそらくですが、PHP,Rubyの対応が最近だったことと、使い方がよくわからないのが原因ではないでしょうか。 そこで今回はWordPressの環境を構築してみて、簡単に使えてメンテナンスが楽になることを確かめたいと思います。

次回はカスタムAMIを使ってEC-CUBEを運用するまでをやりますので、お楽しみに。

AWS Elastic Beanstalkとは

beanstalk

ElasticBeanstalkはロードバランサー、Webサーバ/ミドルウェア、データベースサーバ、それらの監視・通知が簡単に構築出来るサービスです。 BeanstalkではまずApplicationを作成し、その中でEnvironmentを複数持つことが出来ます。EnvironmentはそれぞれにURLを与えられているので、このEnvironmentは開発用、このEnvironmentは本番用といった使い方や、このEnvironmentはユーザが使う側、このEnvironmentは管理用アプリケーション といったことも出来ます。

beanstalk

実際にWordPressを動かすところまでを順を追ってやっていきます。 コマンドラインツールのebを使った方が楽だったりしますが、今回は流れを目で追って行きやすいようにManagementConsoleでの操作でやっていきます。

Application,Environmentの作成

  01_create_application_01 Application Nameと、ContainerTypeを選択します。 Application SourceはとりあえずUse the Smaple Applicationで良いです。

01_create_application_02 次に進むと、EnvironmentName:とURLの指定が出来ます。 Nameにはproductionなど本番っぽい名前を入れれば良いと思います。

01_create_application_03 次はInstance TypeとKeyPairといったEC2(AutoScalingのLaunchConfigration)の設定とSNSの通知場所、ELBのHealthCheckのURLを設定出来ます。

01_create_application_03-2 次にRDSの設定をします。

01_create_application_04 確認して大丈夫であれば、Finishです。

01_create_application_05 EnvironmentsのEventsのタブで現在の状況を確認できます。

Environmentは作成すると自動的に

  1. S3にBucketを作成
  2. SNSトピックの作成
  3. ELBの作成
  4. セキュリティグループの作成
  5. RDSの立ちあげ(任意)
  6. AutoScalingの設定
    ・LaunchConfigurationの作成
    ・AutoScalingGroupの作成
    ・ScalingPolicyの作成(スケールイン・アウトの2種類)
    ・CloudWatchのALARMにScalingPolicyを設定
  7. EC2の立ちあげ

という作業が自動で行われます。 もしこの中に一つでも分からない事があったらぜひElasticBeanstalkを使いましょう。

今回は 64bit AmazonLinuxで、PHP5.3のEnvironmentを作りました。 作るときにメールアドレスを設定して、Confirm subscriptionしておけば、Environmentが立ち上がった時にメールが届きます。 立ち上がるとSample ApplicationというVersionが用意されていますので、見てみましょう。

ManagementConsoleでEnvironmentのOverviewタブにURLがあるので、そこを開きます。

sample_deployed

これがSample Aplpicationです。

sample_application

Elastic Beanstalkのドキュメントなどへのリンクがあります。

wordpressのインストール

このSampleApplicationは今回は特に必要ないので、ここにWordPressを入れてみます。

ここからダウンロードしてきたWordPressのzipを一度解凍し、wordpress/wp-config-sample.phpをコピーしてwordpress/wp-config.phpを作ります。

wp-config 

このあたりの設定をEnvironment作った時に立ち上がったRDSの情報を指定します。 RDSのエンドポイントはEdit Configurationからも確認することが出来ます。 ユーザ名、パスワードはEnviromentを作るときに指定したものが使えます。 データベース名はデフォルトでebdbというのが作られています。

 

wp-config.phpを作ったらもう一度wordpressディレクトリごと圧縮し、デプロイします。

ManagementConsoleのActionsというところからDeploy a Different Versionを選択します。

 03_deploy_01

するとこんなダイアログが開くので、ここで「Upload and deploy a new version」を選択し、Upload Existing Applicationで先ほど作ったzipをアップロードします。

03_deploy_02_upload

そのままだとwordpressというディレクトリの下にindex.phpがあるので、wordpressというディレクトリをドキュメントルートにしてしまいましょう。 ActionsからEdit and Load Configurationを選択します。

04_configure_01

こんなダイアログが出てくるので、 ContainerのタブからDocumentRootを変更します。

04_configure_03

ついでなので、ログをS3に入れるようにもしておきましょう。 さらについでに、wordpressはインストールが終わるまでは、/にアクセスしても302で/wp-admin/install.phpにリダイレクトされるようになっていますので、ELBのHealthCheckに引っかからないように、少しだけ工夫が必要です。 インストールが終わるまでは、/readme.htmlをhealthcheck URLに指定しておいて、インストールが終わったら/に戻すといったようなやり方があります。

 

WordPressのインストーラにアクセス出来れば、名前などを設定しておしまいです。

アップロードされた画像がどうスケーリングされるのかなどの事はまだありますが、ひとまずこれでWordPressが無事に動くようになりました。wordpress

 

さいごに

一度環境を作ってしまえばメンテナンスに気を使う事がもの凄く少なくなるので、Elastic BeanstalkはこれからWebサイトを立ち上げる時には要検討です。