Pelican+GitHub Pagesでブログ引っ越し
これまでFC2ブログにお世話になってきたが、
- 技術系なネタが多いため、ソースコード等が書きやすいとうれしい
- 自在なレイアウトができるとうれしい
などの理由からGitHub Pagesを使うことにした。 あんまり書かないかもしれないけど・・・。
ともあれ、Pelicanを使ってこのブログを構築したので、そのときのメモ。
Pelicanを使ったブログ構築作業
概要
このブログはPelicanを使って静的ページを構成している。 生成に使用したソースを公開するのは気が引けるので、生成したhtmlファイル群だけを公開することとした。 このためにちょっと特殊な使い方をしている。
前提
pythonやvirtualenv、makeなどは導入されているものとする。
構築
-
ローカルマシンにpelican用の環境を構築。
-
適当なディレクトリを作成。
mkdir ~/blog cd !$
-
virtualenv環境でpelicanを導入。Markdownを使いたいので、Markdownも導入しておく。
virtualenv --system-site-packages ./ source bin/activate pip install pelican pip install Markdown
-
.gitignore
ファイルを作成しておく。なお、.DS_Store
などはグローバルに無視する設定をしているので除外してある。.Python bin/ include/ lib/ man/ local/ output/ pip-selfcheck.json cache/ *.pyc
-
pelican-quickstart
を実行して各種設定を施す。- 2015/04/27追記: 自分の場合は
pelicanconf.py
のSITEURL
がうまく設定できていなかった。この設定ができていないとCSSのURLがまずいことになり、うまく動かない場合がある。
- 2015/04/27追記: 自分の場合は
- ここでいったんcommitしておくと幸せになれるかも。
- gitレポジトリを作成。
git status
して出てきたファイルを追加してcommit。git init . git status git add Makefile .gitignore develop_server.sh ... git commit -m "Initial commit with pelican files."
-
-
htmlファイル群の出力先である
output
ディレクトリが消えないようにする。-
publishconf.py
を修正diff --git a/publishconf.py b/publishconf.py index 98162b2..dfb1731 100644 --- a/publishconf.py +++ b/publishconf.py @@ -16,7 +16,7 @@ RELATIVE_URLS = False FEED_ALL_ATOM = 'feeds/all.atom.xml' CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml' -DELETE_OUTPUT_DIRECTORY = True +DELETE_OUTPUT_DIRECTORY = False # Following items are often useful when publishing
-
Makefile
も修正しておく。make clean
すると消えてしまうので。diff --git a/Makefile b/Makefile index dc640c3..35df450 100644 --- a/Makefile +++ b/Makefile @@ -58,7 +58,7 @@ html: $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) clean: - [ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR) + [ ! -d $(OUTPUTDIR) ] || echo rm -rf $(OUTPUTDIR) regenerate: $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
-
-
ここで再びgit add & git commit。
-
そのままのMarkdownではGitHubに慣れている人にはツライので、各種のライブラリ(?)を導入。
-
mdx_linkfyとmdx_del_insを導入。
pip install mdx_linkify pip install mdx_del_ins
-
pelicanconf.py
に以下を追加する。MD_EXTENSIONS = ['del_ins', 'fenced_code', 'codehilite(css_class=highlight)', 'tables']
-
試しに記事を書いてみる
-
記事は
content
の下に配置する。-
管理を単純にするため、投稿日をファイル名とすることにした。
touch content `date +%Y%m%d`.md open !$
-
先頭に各種情報を書いておく。
Title: Pelican+GitHub Pagesでブログ引っ越し Date: 2015-04-26 18:00 Category: カテゴリ Tags: info, blog, python, pelican, github Slug: pelican-blog-github ←permanent link。「この名前+html」ファイルが生成される。 Author: pman0214 Summary: この記事の要約。
-
-
htmlファイル群を生成して表示してみる。
-
htmlファイル群を生成。
make html
-
localでWebサーバを起動。
make serve
-
あとはブラウザでhttp://localhost:8000を表示すればOK。
-
テーマの変更
デフォルトはブログっぽくないので変更する。
- テーマを検討する。Pelican Themesで確認できる。
-
テーマ用レポジトリを取得する。
-
テーマのレポジトリをsubmoduleとして追加する。
git submodule add git@github.com:getpelican/pelican-themes.git themes
-
先ほどのテーマのディレクトリがsubmoduleであれば、それを取得する。この記事執筆時点ではblue-penguinを選択した。
cd themes git submodule init blue-penguin git submodule update blue-penguin
-
-
pelicanconf.py
に以下のように設定する。THEME = "pelican-themes/blue-penguin"
- 2015/04/27追記: 間違ってます。正しくはこうです。
THEME = "themes/blue-penguin"
- 2015/04/27追記: 間違ってます。正しくはこうです。
公開用レポジトリの設定
- GitHubに
blog
という名前のレポジトリを作成。ここに公開用のhtmlファイル群をpushする。自分はhttps://github.com/pman0214/blogを作成した。 -
output
の下をレポジトリにしてしまえばOK。ただし、レポジトリのGitHub Pageを使うため、gh-pages
ブランチにcommit & pushする必要がある。-
output
ディレクトリをgitレポジトリにする。cd output git init ./
-
gh-pages
ブランチに切り替え。git checkout -b gh-pages
-
全ファイルをadd、そしてcommit。
git add * git commit -m "Article `date +%Y%m%d`."
-
GitHubにpushできるようにする。自分の場合はこんな感じ。
git remote add origin git@github.com:pman0214/blog.git git push origin gh-pages
-
-
公開されたページを確認する。
http://account.github.com/repository
でアクセスできるはず。- このブログはhttp://pman0214.github.io/blogとなる。