JekyllとS3による脱WordPressなサイト構築

WordPressは本当に必要?

WordPressはブログとして良く使われていますが、コンテンツ管理機能が充実しているため、Webサイトを構築することもできます。

私もちょっと使ったことありますが、WordPressはCMS(コンテンツ管理システム)として非常に完成度が高いです。

また、プラグインも豊富で簡単に拡張機能を追加することができるのも魅力です。

一方で、WordPressはPHPで動作するため、素のままで使うと大量のリクエストを裁くことができません。

そのため、nginxなどのリバースプロキシーを前面に配置し、バックエンドのPHPプロセスを増やすなどの対応がとられています。

また、多くのサイトではそもそもページが動的に生成される必要性がないため、リクエスト毎にPHPで処理せずに、
WordPressから静的なHTMLを生成し、それをサーバに配置するような方法もとられています。

ブログなどは、閲覧される場合には特に動的な処理を必要としないため、静的なサイトで実は十分なのです。

コメントなどは昔は自前のデータベースに書き込む必要がありましたが、Facebookのコメント機能を使えば、HTMLのタグを追加するだけでコメント機能がサイトで使えるようになります。

今回はWordPressを使わずに効率的にWebサイトを構築する方法を紹介します。

WordPressの代替としてのJekyll

WordPressに変わるツールとしてJekyllがあります。

もともとはGithubの各プロジェクト用の静的ページのための
Github Pagesの用に作られたツールで、エンジニアを中心に広く使われてきています。

Github PagesではJekyllOctopressというツールでブログが簡単に作れます。

Jekyllは元となるテンプレートファイルやデータファイルからHTMLを生成してくれます。

テンプレートとなるファイルをうまく構成することで、DRY原則が保たれ、サイトのメンテナンスを効率的にすることができます。

サイトの配置先としてのAmazon S3

AmazonのストレージサービスS3は安価でスケーラブルなストレージサービスです。

もともと単にストレージとして使われていたため、単なるストレージとしてのイメージが強いですが、Webサイトをホスティングすることも可能です。

S3にHTMLなどの静的なファイルを配置することでWebサイトを公開することができます。

また、非常に安価なため、サーバーをレンタルするよりも安く済みます。

たいしてトラフィックのないサイトであれば、Route53を利用する場合には別途費用がかかりますが、実質月額0円です。

今回はJekyllで生成したファイルをS3にアップロードすることでWebサイトを公開します。

JekyllとS3によるサイト構築例

それでは簡単なサイトを構築してみましょう。

まずはjekyllとjekyll-s3をインストールします。

$ gem install jekyll jekyll-s3

次に_jekyll_s3.ymlを用意します。
以下を適宜ご自身の環境に合わせて編集してください。

s3_id: YOUR_AWS_S3_ACCESS_KEY_ID
s3_secret: YOUR_AWS_S3_SECRET_ACCESS_KEY
s3_bucket: your.blog.bucket.com
s3_endpoint: ap-northeast-1

これでS3へファイルをアップロードする準備が整いました。

つぎにサイトの雛形を作ります。

$ jekyll new test

これでtest以下に雛形が生成されました。

ローカルにサーバーを起動して確認しましょう。

$ jekyll server

これで4000番ポートでWebサーバーが起動されたので、http://localhost:4000/にアクセスしてみましょう。

サイトが表示されているでしょうか?

ブログのエントリーが一件確認できるかと思います。

ブログのエントリーは_post以下にあるので、新しい記事を追加する場合には_post以下にファイルを追加して編集します。

編集が終わったら

$ jekyll server

で確認して、

$ jekyll-s3

S3にアップロードすれば、無事に公開されます。

とっても簡単ですね。

まとめ

今回、JekyllS3でお手軽にサイトを構築できることを見ていきました。

ぜひ皆さんも挑戦してみてくださいね。

ご質問等、何かありましたらこちらへ。