Pelican について

このサイト(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 することにしました。

サイトにおける更新作業の流れ

前提

  1. ソースはGitのリポジトリとして管理している。
  2. サイトの文章のソースのフォーマットは reStructured Text である。
  3. サイトの更新を行ったらpelicanでHTMLを生成し、それを web server が serve する。

作業の流れ

  1. 文章を書く。画像を用意してimagesに置く。

  2. "make" でpelicanによりHTMLを生成する。手元で

    $ cd output
    $ python -m pelican.server
    

とサーバを動かして 127.0.0.1:8000 をブラウザで見て確認する。

  1. 生成したHTMLをweb server管理下に置く。

Pelicanでカスタマイズして使っているところ

Pelicanのthemeは "notmyidea" の theme を

/usr/share/pyshared/pelican/themes/notmyidea/

からコピーして、必用に応じて変更して使っています。

  1. CSS と templates/base.html を変更して、レイアウトを変えました。ロゴを足す、色を変えるなどです。
  2. authors index は使わないので、site 独自の plugin で authors index を生成しないようにしています。
  3. tag cloud を deterministic にするように変更しています。
  4. サイト全体でひとつではなく、カテゴリ index 毎, tag index 毎の tag cloud を用意しています。
  5. pagenatorを数字で飛べるようにして、箱で矢印の形にしています。
  6. navigation はカテゴリ毎のindexと archive.
  7. (さらに) このサイトではないですが、www.fsij.org では、sidebar のメニューを用意するようにしています。(tag, tag cloud は使ってません。)

利点

1. オフライン でのサイトの更新作業が容易です。 ローカルな環境で、エディタで編集し、Gitでtrackと、できます。

2. Gitの機能を活用し、(必用ならば)複数人で 分散した作業 が効率よく進められます。 Gitの機能で複数のコピーで作業となるので、万が一の際のサイトのソースの バックアップ にもなります。

3. Webサイト以外への応用が効き、 文章が保守しやすく、長持ちさせることができます 。 たとえば、Sphinxでマニュアルを作成する、PDFで紙に印刷するという用途へ、文章のソースがそのまま使えます。

  1. サイトの見栄えのデザインと文章の管理を分離できているので、一方に注力して作業、とやりやすい。

5. staticなHTMLなので、 serveする環境を選ばず 、必用に応じてどこでもできます。

(*) 分散した作業: 一人だけでサイトを保守する場合でも、 通常のパソコンでの作業、出張先のノートパソコンでの作業と分散した作業になることがあります。