Pelicanで静的サイトを作った話(1)

はじめに

たまになんですけど、ふとしたはずみでプログラミングをしたりそれを行うための環境構築などをするのですが、 どうも最初の段階で満足してしまい後が続きません。 何かモチベーション継続のきっかけになったり後で備忘録として役立てられればいいなあと思い、 ブログを書いてみることにしました。 どの媒体を使うか色々検討していたのですが、 ブログサイトは記事を書くページがツールボタンでごちゃごちゃしていて使う気になれませんでした。 自分の希望と合うのはないかと探している中で Pelican+netlifyにたどり着きました。 このブログはそれらの技術を用いて作成しています。

Pelicanは静的サイトジェネレータといってサイトをいい感じに作ってくれます。 そしてサイトに必要な記事は自分の好きなエディタを使って書くことができます。 netfilyは作成した静的サイトをデプロイ(誰でも閲覧できる状態に)するサービスです。 この二つを組み合わせて使えば自分の好きなようにブログを書けるのではと考え実際にやってみました。 以下にその時に行ったセットアップのまとめを記述したいと思います。

Pelicanとは

Pelicanはオープンソースの静的サイトジェネレータです。 ここで静的サイトとはページを要求した時にサーバ上に保存されているhtmlファイルをそのまま送るサイトのことを指します。 wikiや阿部寛のホームページがこれにあたります。 静的サイトジェネレータは他にも多数あります。 各静的サイトジェネレータを開発の頻度によってスコア化して一覧表示しているStaticGenというサイトをみると沢山の種類があることがわかります。 なぜ多数ある中からPelicanを選択したかというと開発言語がPythonだったからです。 上位の静的サイトジェネレータはRubyやJavaScriptで書かれているのですがあまり馴染みがなかったので、 比較的開発が盛んでPythonを使っているPelicanを選びました。

Pelicanインストール

PelicanはPython 2.7or Python 3.*で動作します。 本環境はPython 3.6.5を使用します。 はじめにPelicanをインストールする前にPelican実行用仮想環境を作成します。 Python 3.6.5にはvenvという仮想環境を作成するモジュールが最初からインストールされているのでこれを使用します。 仮想環境を作成するコマンドは

$ python -m venv /path/to/your/venv

これによって仮想環境用のディレクトリが作成されました。 次にそのディレクトリ内に入って仮想環境を有効化させます。

$ cd /path/to/your/venv
$ source ./bin/activate

端末がhogehoge $から(venv) hogehoge $になったら成功です。 次にPythonのパッケージインストーラpipからPelicanをインストールします。

$ pip install pelican

またMarkdown形式で記事を書くためにそのライブラリもインストールします。

$ pip install Markdown

これでPelicanのインストールは完了です。 次にサイトを作成するためのセットアップを行います。

Pelicanセットアップ

はじめに静的サイトのファイルを置くディレクトリを作成しそこへ移動します。

$ mkdir /path/to/your/project/dir
$ cd /path/to/your/project/dir

セットアップはpelican-quickstartコマンドを実行しいくつかの質問に答えると完了です。 質問は

> Where do you want to create your new web site? [.] .
> What will be the title of this web site? test web site
> Who will be the author of this web site? ykoba
> What will be the default language of this web site? [ja] ja
> Do you want to specify a URL prefix? e.g., https://example.com   (Y/n) n
> Do you want to enable article pagination? (Y/n) Y
> How many articles per page do you want? [10] 10
> What is your time zone? [Europe/Paris] Japan     
> Do you want to generate a tasks.py/Makefile to automate generation and publishing? (Y/n) Y
> Do you want to upload your website using FTP? (y/N) N
> Do you want to upload your website using SSH? (y/N) N
> Do you want to upload your website using Dropbox? (y/N) N
> Do you want to upload your website using S3? (y/N) N
> Do you want to upload your website using Rackspace Cloud Files? (y/N) N
> Do you want to upload your website using GitHub Pages? (y/N) N
Done. Your new project is available at /path/to/your/project/dir

lsコマンドで確認してみるといくつかのファイルとディレクトリが作成していることがわかります。

(venv) yourname@:/path/to/your/project/dir$ ls
Makefile       content        output         pelicanconf.py publishconf.py tasks.py

以上でPelicanのインストール&セットアップは完了しました。 今後はcontentディレクトリに記事を書いていくことになります。 次回に続きます。