別のブログをpelicanで始めようと思っているので、このブログもpelicanで管理することにしたので作業内容をメモしておく
ローカル側にpelicanをインストール
$ pip install pelican Markdown
github pagesのリポジトリをclone
今回はgithubのユーザーページのリポジトリ(username.github.io)を/path/to/pelicanにクローンした。
$ cd /path/to/pelican
$ git clone https://github.com/username/username.github.io
cloneすると色々ファイルが入っているので全部削除した
pelicanの初期設定を行う
pelicanの初期設定はpelican-quickstartコマンドで行った
$ pelican-quickstart
> Where do you want to create your new web site? [.] .
> What will be the title of this web site? blog title
> Who will be the author of this web site? shigepon
> What will be the default language of this web site? [en] ja
> Do you want to specify a URL prefix? e.g., http://example.com (Y/n)
> What is your URL prefix? (see above example; no trailing slash) blog.shigepon.info
> Do you want to enable article pagination? (Y/n)
> How many articles per page do you want? [10]
> What is your time zone? [Europe/Paris] Asia/Tokyo
> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n)
> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n)
> Do you want to upload your website using FTP? (y/N)
> Do you want to upload your website using SSH? (y/N)
> Do you want to upload your website using Dropbox? (y/N)
> Do you want to upload your website using S3? (y/N)
> Do you want to upload your website using Rackspace Cloud Files? (y/N)
> Do you want to upload your website using GitHub Pages? (y/N) y
> Is this your personal page (username.github.io)? (y/N) y
> Done. Your new project is available at ...
octopressで今迄作成していたmarkdownファイルを移動
pelicanの初期設定を行ったらcontentフォルダが出来るので、そこにブログ内容を移動した。 /path/to/octopressにoctopressが入っているとして以下のようにして今迄作成したブログの内容を移動した
$ cp /path/to/octopress/source/_posts/*.markdown /path/to/pelican/content
{% include 'includes/ad-content.html' %}
markdownファイルを編集
octopressのmarkdownファイルの中でそのままではpelicanで使用出来ない部分があるので編集した。編集内容はこんな感じ。1個1個修正するのは面倒なのでなるべくsedで変更した。
元々のファイルはこんな感じ
---
title: "タイトル"
date: 2016-03-08 09:50:36 +0900
comments: true
categories: ["hoge", "fuga"]
---
## 見出し
....
categoriesの変更
categoriesをtagsに変更して、
["hoge", "fuga"]
を
hoge, fuga
になるように変更した
$ sed -e 's/^categories/tags/g' -i content/*.markdown
$ sed -e '/^tags/ s/\"//g' -i content/*.markdown
$ sed -e '/^tags/ s/\[//g' -i content/*.markdown
$ sed -e '/^tags/ s/\]//g' -i content/*.markdown
comments, layoutなど要らない部分の削除
layoutやcommentsは使わないし、ファイル内の「---」の部分も要らないので削除した
$ sed -e '/^layout:/ d' -i content/*.markdown
$ sed -e '/^comments:/ d' -i content/*.markdown
$ sed -e '/^---:/ d' -i content/*.markdown
summary, categoryの追加
summaryはoctpressでは
<!-- more -->
を使ってるので、それをそのまま使いたい場合はsummaryプラグインを使うと良い・・・らしい。試してないけど。
今回はsummaryを空白にしたかったので、「summary:」を追加した。
sed -e '/^tags:/ i summary:' -i content/*.markdown
カテゴリは記事によって違うので、さすがに手入力しないといけない(tagsの項目を使いたいが、pelicanは複数カテゴリを扱えないので上手く出来ない)。なので、とりあえず
sed -e '/^tags:/ i category:' -i content/*.markdown
こんな感じで空欄とした
urlの扱いをoctopressに合わせる
octopressでは/year/month/day/title/ みたいなurlになる。pelicanでは/title/だけなので、合わせるように設定すると良い
#pelicanconf.py
#ファイル名からslugを取得
FILENAME_METADATA = '(?P<date>\d{4}-\d{2}-\d{2})-(?P<slug>.*)'
#得られたslugからhtml生成時のurlと保存先を指定
ARTICLE_URL = '{date:%Y}/{date:%m}/{date:%d}/{slug}/'
ARTICLE_SAVE_AS = '{date:%Y}/{date:%m}/{date:%d}/{slug}/index.html'
コードハイライトの設定
コードハイライトの為の設定として「```」を使えるように修正した
#pelicanconf.py
MD_EXTENSIONS = ['fenced_code', 'codehilite(css_class=highlight)']
github pageへのアップ
記事が出来たので、とりあえずgithub pageへアップ出来れば完成。
$ make github
あとはユーザー名とパスワード聞かれるので、入力すればアップ出来た。
参考:
- Migrating from Octopress to Pelican - Pearls in Life
- Pelican + Github Pages でブログを作った話 | Futon note
- Create a github hosted Pelican blog with a Bootstrap3 theme - Drowned In Genomics
ちなみにこれから作成していく記事は別に2016_03_31_hogefuga.markdownみたいな形式にしないでも大丈夫。hogefuga.mdとかでも問題無い。