Python製の静的サイトジェネレーター「Pelican」を試してみた
Golang製の静的サイトジェネレーター「HUGO」に続いて、Python製の静的サイトジェネレーターである「Pelican」を試してみました。
目次
環境
ubuntu 16.04
環境準備
pyenv update
pyenvのバージョンが古くなっていたので、まずはpyenvを更新します。
$ git clone git://github.com/yyuu/pyenv-update.git ~/.pyenv/plugins/pyenv-update $ pyenv update
python 3.8.1をインストール&適用
$ pyenv install 3.8.1 $ pyenv local 3.8.1 $ python --version Python 3.8.1
pipenv環境を作成
$ pipenv --python 3.8.1
pipenvについてはこちら
Pelicanインストール
ここからはpipenv環境で実行します。
$ pipenv shell
Pelicanをインストールします。 記事はmarkdownで書くので、markdownを指定しています。
$ pipenv install pelican[Markdown]
Pipfileはこのようになっています。
$ cat Pipfile [[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] [packages] pelican = {extras = ["markdown"],version = "*"} [requires] python_version = "3.8"
クイックスタート
公式ドキュメントのクイックスタートに沿って進めます。
実行環境は、先程作成したpipenvの環境です。
Pipfileがあるディレクトリで作業します。
プロジェクト作成
$ pipenv shell $ mkdir -p sample-site $ cd sample-site/ $ pelican-quickstart
「サイトのタイトルは?」「言語は?」「Pagenationは使う?」「Github Pagesに公開する?」など、作成する静的サイトに関する質問が表示されるので回答します。
質問に回答すると、下記のファイルが作成されました。
$ tree . . ├── content ├── Makefile ├── output ├── pelicanconf.py ├── Pipfile ├── Pipfile.lock ├── publishconf.py ├── sample-site └── tasks.py 3 directories, 6 files
記事を作成
任意のエディタでcontent以下に記事を作成します。 今回は下記の様な記事を作成しました。
$ cat content/my-first-content.md Title: My First Content Date: 2019-12-26 17:00 Category: test This is a my first content.
静的ページ作成
作成したMorkDownファイルをHTMLに変換します。
$ pelican content/ Done: Processed 1 article, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 0.16 seconds.
表示確認
$ pelican --listen
コマンドを実行後、ブラウザで「http://localhost:8000/」にアクセスします。
作成した記事が表示されました。
テーマを変える
テーマを選ぶ
Pelicanにはたくさんのテーマがあります。
Pelican Themes
テーマのインストール
今回は「Flex」と「BRUTALIST」を試してみようと思います。
Flex
pelican-themesを使ってインストールすることを推奨しているので、従います。
テーマのデータを取得
このコマンドを実行すると、pelican-themesに含まれる全てのthemeをcloneすることになります。
使いたいテーマが決まっている場合は、個別のthemeをclone方がいいと思います。
$ git clone --recursive https://github.com/getpelican/pelican-themes ./pelican-themes
テーマをインストール
「pelican-themes」コマンドを使う方法と、使わない方法があります。
公式のドキュメントに「pelican-themes」コマンドが紹介されていたので、まずは「pelican-themes」コマンドを使う方法を試してみました。
$ pelican-themes --install ./pelican-themes/Flex/ $ pelican-themes -l simple Flex notmyidea
テーマを適用
$ pelican -t Flex
確認
$ pelican --listen
ブラウザで「http://localhost:8000/」にアクセスすると、themeが適用されていました。
「pelican-themes」 コマンドを使わなくても 、pelicanconf.pyで「THEME」を指定することでテーマが適用されます。
pelican-themesコマンドを実行すると、ローカルのvirtualenvs領域にthemeファイルがコピーされます。
静的サイトを運用する場面を考えると、関連ファイルをGitHubでまとめて管理したいです。そのため、「pelican-themes」コマンドを使うよりもpelicanconf.pyで「THEME」を指定する方法の方が管理しやすいのではないでしょうか。
$ pelican-themes -l -v /home/foo/.local/share/virtualenvs/tutorial1-hMFza1H1/lib/python3.8/site-packages/pelican/themes/simple /home/foo/.local/share/virtualenvs/tutorial1-hMFza1H1/lib/python3.8/site-packages/pelican/themes/Flex /home/foo/.local/share/virtualenvs/tutorial1-hMFza1H1/lib/python3.8/site-packages/pelican/themes/notmyidea /home/foo/.local/share/virtualenvs/tutorial1-hMFza1H1/lib/python3.8/site-packages/pelican/themes/brutalist
BRUTALIST
続いてBRUTALISTを試してみます。
今回は「pelican-themes」コマンドを使わない方法でテーマを適用してみます。
テーマを適用
pelicanconf.pyに下記の設定を追加します。
「./pelican-themes/」は、git cloneしたthemeを配置しているディレクトリです。
THEME = './pelican-themes/brutalist'
その他の設定値はREADMEの「Configuration」を参照して設定します。
確認
ブラウザで確認してみます。
$ pelican --listen
プラグイン
Pelicanには多くのプラグインがあります。
Pelicanでブログを運用する場合は、「related_posts」も使ってみたいですね。
先日試したHUGOの場合は、このあたりを参照すると同様の機能を使えそうです。
最後に
Python製の静的サイトジェネレーター「Pelican」を試してみました。
出力結果はHTMLなので、「あれ?画像が表示されない?」といったトラブル時はHTMLを直接確認して対処できます。各種CMSと違ってとてもシンプルですね。
また、Pelicanで使われているPythonとjinja2は昔触ったことがあったので、テンプレートの編集も試してみたいです。
参照情報
以下の記事を参照させていただきました。