Amazon S3は言わずと知れた, 静的ファイルをWeb上にホスティングできるサービス。Pelicanは日本ではマイナーですがMarkdownかreStructuredText形式のファイルを作るといい感じにhtmlを生成してくれるPython製のツール。"Pelican"という名前は, フランス語でノートを指す"calepin"から来ているらしいです。
http://docs.getpelican.com/en/
Pythonが流行ってない日本だとかなりマイナーなんですが, 使ってみた感じとてもシンプルで使い勝手も良いのでみんな使って欲しい!まだテーマ少ないので誰か作って欲しい!(他力本願)
今回はAmazon S3上にホストする例を挙げていますが, HerokuやGithub Pagesにも簡単にアップロードできるようになってるし, タグやプログラミングコードのハイライト, RSSなど機能的にも最低限のものは揃っているように感じます。
事前準備
- Amazon S3のサービス登録と設定(アクセスキーとシークレットキー)
- 独自ドメインの取得(必要な場合)
は先に実施しておきます。
Amazon S3のドメインは長ったらしくて微妙なので独自ドメインは必要かと思います。
私は以下のブログ等を参考にさせていただいて設定を進めました。
AWS S3 のバケットに独自ドメインを割り当てて、静的ファイルをホスティング - ニッチなWordPress徒然日記
注意点
-
サブドメインではなくルートドメインで運用する場合, Amazon Route 53でのドメイン登録が必須。
-
Webページとして運用する場合S3のbucket nameとブログのドメインとが一致している必要あり。
Pelicanのインストール
私はPythonは2.7系を使用してます。pipを使うと楽ですね。
$ pip install pelican
Markdown形式で書きたい場合はこちらも。
$ pip install markdown
インストールできたらクイックスタートコマンドを実行。
$ pelican-quickstart
たくさん質問が出てくるので順番に答えていってください。
入力が終わるとPelicanプロジェクトのひな形が作成されます。
$ ls
content/
output/
Makefile
develop_server.sh
pelicanconf.py
publishconf.py
content/
MarkdownかreST形式のファイルを入れるフォルダ。ユーザがブログを編集する作業フォルダになります。
output/
最終的なhtmlの出力先。
Makefile
htmlを出力したりlocalhostでコンテンツを確認したり, いろんなコマンドを提供してくれます。
pelicanconf.py
Pelicanの設定ファイル。
Blogの設定を変えたいときはだいたいこいつを編集します。
publishconf.py
商用の設定。実際に公開するときに必要な情報を編集します。Google AnalyticsやDisqusによるコメント入力の設定なんかも。
記事を書いてみる
とりあえず上記の設定ファイルなんかはいじらず, content配下にMarkdown形式でファイルを作ってみましょう。"This is..."以降がMarkdown形式での本文, そこから上はPelicanにブログのタイトルや日付, タグなどを伝えるためのシンタックスです。"Slug"は記事のURLをタイトルの文字列のハイフン繋ぎで表したものです。Huffingtonpostの各記事のURLなんかを見るとイメージがつくと思います。
Title: My super title
Date: 2010-12-03 10:20
Tags: thats, awesome
Category: yeah
Slug: my-super-post
Author: Alexis Metaireau
Summary: Short version for index and feeds
This is the content of my super blog post.
上記のようなファイル page.md をcontent/ に作成します。
出来たら
$ make html
でhtml出力,
$ make serve
でローカルサーバが動くのでlocalhost:8000で確認してみましょう。
上で作ったmdファイルがhtmlとして閲覧できるのが確認できるはずです。簡単ですね!
S3にデプロイ
ここまで出来たらいよいよS3にデプロイです。s3cmdというツールをインストールして, configureで設定をします。
$ pip install s3cmd
$ s3cmd --configure
また質問が出てきますが, アクセスキーとシークレットキー以外は空白でENTERで構いません。
次に商用の個別設定をpublishconf.pyにしている方は
$ make publish
コマンドを発行。これは読み込む設定ファイルをpublishconf.pyに変えて make html しているだけです。
最後に
$ make s3_upload
これでファイルがS3にアップロードされてブログが閲覧できます。
私も勉強しながらなので, 情報はちょこちょこ追記してきたいです。
基本はドキュメントを見ながら勉強ですね。Pythonの宿命として, 情報はだいたい英語圏にあります…。
追記
良く変更しそうな設定について別記事にまとめました.
Python製静的ブログ生成ツール'Pelican'の各種設定