Jekyllで作った静的サイトをAmazon S3上にアップロードしてみた

今まで、はてなダイアリやPHPApps上のWordPressなどを使ってきたが、
いまいちしっくり来なかった。

分析すると、以下のような原因だと判定した。

  • Webブラウザ上のエディタが使いづらい
  • 自分の資産たるブログの記事が外部サービスに依存している

そこで代替として色々調べた結果、
Jeykll というRuby製の静的サイトのジェネレータがあることを知り、
今までのエントリなどをそこに集約することに。

また、その静的サイトの公開先としてAmazon S3を使ってみることにした。

インストール手順やらデプロイ手順やらはWebの至るところにあるので、
この記事ではそれに至った判断基準をゆるふわに挙げてみる。

Jekyll

Jeykllは、

  • プラグイン拡張可能
  • マークダウン記法採用
  • ローカルHTTPサーバでの確認が用意

という特徴をもつ静的サイトジェネレータ。

他にも静的サイトジェネレータはあるが、近年人気らしいので、飛びついてみた。
マークダウン記法による個々の記事のツールへの依存度の低さ、
また、Rubyスクリプトでの拡張性の高さも導入の後押しをした。

主なプラグインとして、octopressJeykll-Bootstrapというものがある。

それぞれ
ブログの構築を自動化したり、
デフォルトで良い感じのCSSやテンプレートを用意してくれたり、
Githubページ・Herokuへのデプロイをサポートしてたりと
盛りだくさんの機能を有するのだが、
そこまでの機能は必要ではなく、 Twitter Bootstrapを自らの手で勉強したいのもあって、
所々参考にしつつ自分でほぼ一からサイトを構築した。

記事の移行にあたっては、
はてなダイアリの記事を一度Movable Type形式でエクスポートしたあと、
PHPApps上のWordpressにインポートし、
その後、PHPApps上のWordpressからエクスポートしたファイルをローカルのMySQLに突っ込んで、
そこからJeykll用にエクスポートする、という無理やりな手順を取った。

もちろんコメントはインポートされないし、
日本語タイトルをURLエンコードした文字列を名前につけたファイルが大量で生成されて、
あとが大変だった。
もうちょっと検討の余地有りだが、二度とやりたくない・・・

Amazon S3

アップロード先としては、以下が候補に上がっていた。

  • レンタルサーバ
  • VPS
  • Heroku
  • Google App Engine
  • Amazon S3

今更レンタルサーバは学べるものがない。また、静的サイトごときにVPSはオーバースペック。

とのことで、当初はHerokuへのデプロイを想定し実際にデプロイしたのだが、
Herokuアプリが静的コンテンツにも関わらず、1時間でアイドリング状態になるのを看過できなかった。
外部サーバからpingで突っつくという裏ワザ的な方法もあるにはあるが、
たかが静的サイトにそこまでやるにしては管理負荷が高い。

Google App Engineも同様の理由で見送り。

ということでAmazon S3にデプロイすることに。 現在は、Jekyllで吐かれたHTMLファイルをGZIP圧縮したものを
s3cmdでデプロイしている。

Summary

静的サイトのアーキテクチャとしては、割りと気に入ってる。
欲を言えば、GithubのPost-Receive Hooksをトリガーに、
外部CIサーバからデプロイさせたいところだったけれど、
Amazon S3がSSH対応してないので、
セキュリティ上のトレードオフとして諦めた。

googleアナリティクスやTwitterのボタンなどを取り敢えず配置してみたものの、 まだブログとしては不完全。

これから、ブログコメントにDISQUSを導入して、各種ソーシャルメディア連携をサポートさせたいところ。

独自ドメインも取ったので、これからじっくり育てていきたい。

このエントリーをはてなブックマークに追加
comments powered by Disqus