このサイト(www.gniibe.org)は pelican を使った static HTML で serve するようにしました。
この稿では Pelican について紹介します。
Pelican はPython で書かれたstatic site generatorです。
このサイト(www.gniibe.org)では2011年3月から2014年5月までは、CherryPyとGenshiを用いて、 reStructured Text のソースから dynamic にページを生成して serve してました。 ソースは Git リポジトリに入れて管理していました。gitwebも運用していました。
2014年5月に運用するサーバを移行したのを契機に serve する仕組みも更新しました。
www.gniibe.org は static な HTML を serve するだけとし、gitweb は別のホストの git.gniibe.org で serve することにしました。
サイトにおける更新作業の流れ
前提
- ソースはGitのリポジトリとして管理している。
- サイトの文章のソースのフォーマットは reStructured Text である。
- サイトの更新を行ったらpelicanでHTMLを生成し、それを web server が serve する。
作業の流れ
文章を書く。画像を用意してimagesに置く。
"make" でpelicanによりHTMLを生成する。手元で
$ cd output $ python -m pelican.server
とサーバを動かして 127.0.0.1:8000 をブラウザで見て確認する。
- 生成したHTMLをweb server管理下に置く。
Pelicanでカスタマイズして使っているところ
Pelicanのthemeは "notmyidea" の theme を
/usr/share/pyshared/pelican/themes/notmyidea/
からコピーして、必用に応じて変更して使っています。
- CSS と templates/base.html を変更して、レイアウトを変えました。ロゴを足す、色を変えるなどです。
- authors index は使わないので、site 独自の plugin で authors index を生成しないようにしています。
- tag cloud を deterministic にするように変更しています。
- サイト全体でひとつではなく、カテゴリ index 毎, tag index 毎の tag cloud を用意しています。
- pagenatorを数字で飛べるようにして、箱で矢印の形にしています。
- navigation はカテゴリ毎のindexと archive.
- (さらに) このサイトではないですが、www.fsij.org では、sidebar のメニューを用意するようにしています。(tag, tag cloud は使ってません。)
利点
1. オフライン でのサイトの更新作業が容易です。 ローカルな環境で、エディタで編集し、Gitでtrackと、できます。
2. Gitの機能を活用し、(必用ならば)複数人で 分散した作業 が効率よく進められます。 Gitの機能で複数のコピーで作業となるので、万が一の際のサイトのソースの バックアップ にもなります。
3. Webサイト以外への応用が効き、 文章が保守しやすく、長持ちさせることができます 。 たとえば、Sphinxでマニュアルを作成する、PDFで紙に印刷するという用途へ、文章のソースがそのまま使えます。
- サイトの見栄えのデザインと文章の管理を分離できているので、一方に注力して作業、とやりやすい。
5. staticなHTMLなので、 serveする環境を選ばず 、必用に応じてどこでもできます。
(*) 分散した作業: 一人だけでサイトを保守する場合でも、 通常のパソコンでの作業、出張先のノートパソコンでの作業と分散した作業になることがあります。