reStructuredText を使った静的 HTML 生成ツール
heavenshell's note -reStructuredText を使った静的 HTML 生成ツール の転載。
静的 HTML 生成ツールをブログとして使う最近だと Jekyll と Octpress を使って Github pages と連携させるというのが流行ってるんだろう。
Jekyll は Ruby で書かれているツールで、その Python 版として Hyde というのがあるが、 Sphinx 並みにもっと手軽なものがないものかと思ったら、 rstblog があったのを思い出した。
rstblog は文字通り reStructuredText で本文を記述して HTML を生成する。個人的には Markdown 形式より慣れているので嬉しい。
インストール&設定
サイト用のディレクトリを作成する。
$ mkdir -p /path/to/site
rstblog は PyPi にはアップロードされていないので、Github からダウンロードしてインストールする。
$ git clone https://github.com/mitsuhiko/rstblog.git $ cd rstblog $ python setup.py install
rstblog から必要なものをコピーする。
$ cp -r templates /path/to/site/_templates $ cd /path/to/site
config.yml を作成する。
--- active_modules: [pygments, tags, blog, latex] author: Your name canonical_url: http://heavenshell.github.com/ modules: pygments: style: tango
css などの静的ファイルを格納するディレクトリを作成する。 static ディレクトリにテンプレートから読み込む css ファイルを作成する。
$ mkdir static
ブログを配信するディレクトリを作成する。ディレクトリ名は配信する日付になる。
$ mkdir -p 2012/01/28
記事を reStructuredText で作成する。
$ cd 2012/01/28 $ vim start_rstblog.rst
public: yes tags: [python, restructuredtext] summary: | reStructuredText を使った静的 HTML 生成ツールを使ってみた reStructuredText を使った静的 HTML 生成ツール ============================================= 静的 HTML 生成ツールをブログとして使う最近だと `Jekyll <https://github.com/mojombo/jekyll>`_ と `Octpress <http://octopress.org/>`_ を使って Github pages と連携させるというのが流行ってるんだろう。
public はトップの一覧に表示するかどうかの設定。
これが no の場合トップにリンクが表示されなくなる(ただし url で直接アクセスすれば表示はできる)。
tags はその記事のタグでタグ一覧に表示される。
summary はトップページに表示される要約。
デザインカスタマイズ
自分でデザインなどをカスタマイズするには、基本的に _templates の下のテンプレートファイルを編集する。
テンプレートエンジンに Jinja2 が使われているが、さほど難しい事をやってる訳ではないので、基本的には css をいじる感じ。
HTML 生成
以下のコマンドを実行すると、_build というディレクトリが出来る。
$ run-rstblog build $ tree _build _build ├── 2012 │ ├── 01 │ │ ├── 28 │ │ │ └── start_rstblog │ │ │ └── index.html │ │ └── index.html │ └── index.html ├── archive │ └── index.html ├── feed.atom ├── index.html ├── static │ ├── _pygments.css │ ├── site.css │ └── style.css └── tags ├── index.html ├── python │ ├── feed.atom │ └── index.html └── restructuredtext ├── feed.atom └── index.html 9 directories, 14 files
このまま生成した HTML ファイルをブラウザで開いても css などが絶対パスになるので、組み込みの Web アプリケーションとして起動する。
$ run-rstblog serve Serving on http://127.0.0.1:5000/
ブラウザで http://127.0.0.1:5000/ にアクセスすると表示される。
一々コマンドを打つのが面倒くさいので、Makefile にした。
all: build serve clean: rm -rf _build build: run-rstblog build serve: run-rstblog serve