WordPressをスタティック運用

WORDPRESSは動的にページを表示するブログツールですが、情報を発信するだけなら動的でなくても、静的(スタティック)で十分です。
※ただし、コメント機能は使えなくなります。

簡単にスタティックページを生成して、動的だったときと同じページ構成でCDN配信(Cloud Front利用)します。

スタティックページを生成するには、StaticPressプラグインを使います。
StaticPressの設定
静的ページURL: http://mantainc.co.jp/
出力先ディレクトリ: /var/www/html/static/

$ sudo vi /etc/hosts
127.0.0.1    localhost    localhost.localdomain    mantainc.co.jp

StaticPressから「再構築ボタン」をクリックするとページが生成されます。

次に、生成されたページをS3にアップロードします。

$ sudo yum –enablerepo epel install s3cmd
$ s3cmd –configure
Access Key: xxxx
Secret Key: xxxx

次にホームディレクトリ配下に作成される .s3cfg の中身を、使用するリージョンにあわせて編集します。
以下は Oregon の場合の例です。

■ 編集前
bucket_location = US
host_base = s3.amazonaws.com
host_bucket = %(bucket)s.s3.amazonaws.com
simpledb_host = sdb.amazonaws.com

■ 編集後
bucket_location = us-west-2
host_base = s3-us-west-2.amazonaws.com
host_bucket = %(bucket)s.s3-us-west-2.amazonaws.com
simpledb_host = sdb.us-west-2.amazonaws.com

$ cd /var/www/html/static/
$ s3cmd put -r –acl-public $(pwd)/* s3://mantainc.co.jp

Cloud Frontでオリジンを指定しますが、S3をそのまま選んではいけません。
そのまま選ぶと、下層ディレクトリの index.html が効きません。

S3のバケットをWEB公開し、そのパスをコピーして指定してください。
mantainc.co.jp.s3-website-us-west-2.amazonaws.com

ちなみに、スタティック運用する場合、元となるWordpressサーバーをAWSで用意する必要もなくなります。

Windows8.1のHyper-V等を利用して、ローカルにサーバーを構築してしまえば、ec2を使用することなくAWSでWordpressサイトを公開することができてしまいます。

※実際に当サイトはローカルにWordpressを置き、スタティック運用に切り替え済みです。

AWSの料金とWordPress

このサイトはAWS(Amazon Web Service)の機能を最大限に活かして作った、ある意味実験サイトです。

AWS構成図
AWS構成図

構成図を簡単に説明すると、中核になるのはEC2で、ここにブログツールであるWordPressを入れてあります。

それを負荷分散させる機能ELB(Elastic Load Balancing)ロードバランサーで受けて、CDN(Contents Delivery Network)であるCloudFrontがサイトを表示させています。

EC2, ELBは米国西部のオレゴンに配置していますが、CDNのおかげで、日本から表示するときは日本国内のサーバーから配信されるので、とても早く表示できます。

この構成を維持する料金は約1ヶ月(正確には25日)で$31.08でした。内訳は次の通り。

AWS料金内訳
AWS料金内訳

ELBとEC2でほぼ半々といったところです。

AWSを使い始めてから1年間は無料期間があります。
私の場合、すでに1年経過していてこの料金になります。

このサイトのEC2で使用しているインスタンスは、t1.microですが、ブログに必要とされる通信はGETが主で、CDN構成なのでこれで十分(同時アクセス・即応性に優れる)です。

最新のバージョンを使おうというコンセプトで、AMIAmazon Linux AMI 2014.03を使用。
PHP5.5、MySQL5.5にWordPress最新版を乗せています。

Glacierの料金が$0.90かかってますが、実はこのサイトとは無関係な個人的なデータを90GBほど保存しているためです。AWS Glacierはコスト面・耐久性で最も優れたストレージサービスだと思います。

オレゴンリージョンを利用している理由は、東京リージョンより3割ほど安いこと、消費税がかからないことが挙げられます。
(2015/12/26追記 現在、消費税は日本のユーザーに対してどこのリージョンを使用していてもかかるようになっています)

CloudFrontのエッジロケーションが東京にもあるので、実際どこのリージョンを使用しても変わりはありません。というのも、CloudFrontがPUTにも対応しているうえ、DNSであるRoute53と連携して動的にアドレスを決定することができるからです。

CloudFrontを利用しているので、nslookupするとなんと8つもIPアドレスが出てきます。これなら、DoS攻撃でダウンさせられることもないでしょう。

nslookup

あと、監視にはCloudWatchを利用しています。
DNSにRoute53を利用している理由は、先に述べた通り、CloudFrontとの連携があること、それに自由に設定できるため、Google AppsのSPF, DKIMを設定しています。