kapieciiのブログ

日々学んだことを残しておくためのブログです。このブログはGoogle Analyticsを利用しています。

Python製の静的サイトジェネレーター「Pelican」を試してみた

f:id:kapiecii:20191228153900p:plain

Golang製の静的サイトジェネレーター「HUGO」に続いて、Python製の静的サイトジェネレーターである「Pelican」を試してみました。

kapiecii.hatenablog.com

目次

環境

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についてはこちら

kapiecii.hatenablog.com

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/」にアクセスします。
作成した記事が表示されました。

f:id:kapiecii:20191228151900p:plain

テーマを変える

テーマを選ぶ

Pelicanにはたくさんのテーマがあります。

Pelican Themes

http://www.pelicanthemes.com/

テーマのインストール

今回は「Flex」と「BRUTALIST」を試してみようと思います。

Flex

github.com

pelican-themesを使ってインストールすることを推奨しているので、従います。

github.com

テーマのデータを取得

このコマンドを実行すると、pelican-themesに含まれる全てのthemeをcloneすることになります。
使いたいテーマが決まっている場合は、個別のthemeをclone方がいいと思います。

$ git clone --recursive https://github.com/getpelican/pelican-themes ./pelican-themes
テーマをインストール

「pelican-themes」コマンドを使う方法と、使わない方法があります。
公式のドキュメントに「pelican-themes」コマンドが紹介されていたので、まずは「pelican-themes」コマンドを使う方法を試してみました。

docs.getpelican.com

$ pelican-themes --install ./pelican-themes/Flex/
$ pelican-themes -l
simple
Flex
notmyidea
テーマを適用
$ pelican -t Flex
確認
$ pelican --listen

ブラウザで「http://localhost:8000/」にアクセスすると、themeが適用されていました。

f:id:kapiecii:20191228152358p:plain

「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を試してみます。

github.com

今回は「pelican-themes」コマンドを使わない方法でテーマを適用してみます。

テーマを適用

pelicanconf.pyに下記の設定を追加します。
「./pelican-themes/」は、git cloneしたthemeを配置しているディレクトリです。

THEME = './pelican-themes/brutalist'

その他の設定値はREADMEの「Configuration」を参照して設定します。

github.com

確認

ブラウザで確認してみます。

$ pelican --listen

f:id:kapiecii:20191228152810p:plain

プラグイン

Pelicanには多くのプラグインがあります。

github.com

Pelicanでブログを運用する場合は、「related_posts」も使ってみたいですね。
先日試したHUGOの場合は、このあたりを参照すると同様の機能を使えそうです。

gohugo.io

最後に

Python製の静的サイトジェネレーター「Pelican」を試してみました。
出力結果はHTMLなので、「あれ?画像が表示されない?」といったトラブル時はHTMLを直接確認して対処できます。各種CMSと違ってとてもシンプルですね。
また、Pelicanで使われているPythonとjinja2は昔触ったことがあったので、テンプレートの編集も試してみたいです。

参照情報

以下の記事を参照させていただきました。

docs.getpelican.com

yoshitaku-jp.hatenablog.com

kapieciiのブログについてお問い合わせがある場合、下記のフォームからご連絡をお願い致します。
お問い合わせはこちら