Amazon S3上にブログを公開する

Excite, Hatena, Blogspotとブログを転々としてきたが、2012年は初心に帰って自分が保有するドメインであるmasasushiにて動かそうと決めた。ただし、今更サーバーの設置・運用・保守をするのはいくらクラウド時代であっても面倒なのでAmazon S3上にコンテンツを置くことにする。S3でのサイト運営自体は昨年からやってきた話なのだが、いちいちブログ記事をs3cmdでアップロードして関連ページのリンクを確認して、なんていう作業までやると90年代のWeb日記時代に逆行してしまうので、なんとかしてS3で動くCMSがないものかと考えていた。

結局、Amazon AWSのWerner Vogels氏が書いているAll Things Distributedの記事を参考にして

  • WordPressをAmazon EC2 Micro Instanceに設置($0.02/Hour)
  • 上記Wordpressは非公開。自宅からのみ接続可能。
  • WordPressにWordPress Static HTML Output Pluginを導入。
  • このプラグインでWordpressコンテンツを静的HTMLに変換。
  • 変換した静的HTMLをS3syncでAmazon S3上にコピー

S3上のバケットはwww.masasushi.comにマッピングされているので、これでWordpressベースのブログ公開が完了。S3利用料は月々$2程度と思われるので、EC2と合わせても結構お安い自前ブログサイトが完成する。しかも、ブログホスティングサーバに比べて制約は少ない。

というのが基本的な流れなのだが、実際にやってみると色々と地雷があったのでまとめておく。

WP Static HTML Outputの使い方と設定
静的コンテンツでやるということは、http://www.masasushi.com/blog/?p=123のような形式のPermalinkではダメで、http://www.masasushi.com/blog/2012/1/1/123/みたいな形式にする必要がある。最後のスラッシュ重要。しかもWP Static HTML Outputは日本語文書名を正しく扱えないようなのでPermalinkはCustom Structureの/%year%/%monthnum%/%day%/%post_id%/あたりにするのが無難。

あと、Amazon LinuxについてくるApacheのhttpd.confがタコで、AllowOverride関係を全部コメントアウトしないとmod_rewriteを読んでくれない。mod_rewriteが読み込まれないと、上記Permalink設定が有効にならない。

もう一点。WP Static HTML OutputはWordpressホスト名の設定が正しくないと動作しない。例えばSSHのトンネリングで接続してhttp://localhost:1234/を割り当てるとか、Dynamic DNSを使ってわかりやすい名前を割り当てるとかすると動作しなくなる。確認していないが、Elastic IP Addressを割り当てた場合も怪しい。

s3syncについて
-pオプションをつけるとRead for Everyone権限がつく。-rオプションと合わせることでWordpressから生成されたディレクトリを丸々S3上でWeb公開できる。

コメントの扱い
S3側は単なるHTMLページなのでコメントをPostされても受け取れない。安直な答えはDisqusを使うことなのだが設定で手間取った。

  • WordPress側はコメント受付可能にしておく。「Allow people to post comments on new articles」をOn。後のDiscussion関係設定は全部Off。
  • WordPressにDisqus Comment Systemを設置。
  • Disqus側に設定するURLと、実際にWordpressコンテンツが表示されるベースURLが一致しないとDisqusのツールバーは表示されない。当然、EC2側のWordpressでは動作確認できない。

等々、しょうもない落とし穴はあったが、今後は安定度が極めて高いS3上にブログを置けるようになった。しかもLinux/Apache/PHP/MySQL/Wordpress/関連プラグインのバージョンアップをあまり気にする必要がないという嬉しさ。Wordpressサーバー自体はEC2上にあるけど、Firewallで蓋しているので不正アクセス心配する必要もないし。ありがたい時代になったものです。

 

This entry was posted in ソフトウェア開発 and tagged , . Bookmark the permalink.