githubpagesに移行した
社内でS3が安いと知る→静的コンテンツの生成とかについて調べる→jekyllとか見つける→そういえばgithub pagesあったな〜
という流れで、移行した。
jekyllに対応
markdown形式で書いて、コミットしたらページができる。記事一覧とかも一応自動生成できるようになってる。octpressだと楽できるらしいけど、よく知らない。
静的ページしか対応してないので、コメント欄を設けたかったら、facebook コメントとか設置しないといけない。今は別にいらんので設置してない。
RSSの生成はどうすんだ〜と思ったけど、まだ調べてない。
Wordpress(前のサイト)の記事の移行
jekyll-importってのがあるので、それを使った。wordpressにもちゃんと対応している。手順はjekyllのページに載ってる。
http://jekyllrb.com/docs/migrations/
書いてある通りにやれば良いかなと思ったけど、地味に躓いた。
- RubyのDBアクセスライブラリ?のsequelというのがないと、jekyll/jekyll-import/wordpressの読み込みに失敗する。
- sequel で使うmysql2 がいる
- mysql2 のインストールにmysql-develがいる
- JekyllImport::WordPress.process の引数がオプションになってる
なので、手順としては以下になった。
% sudo yum install mysql-devel
% cat Gemfile
# A sample Gemfile
source "https://rubygems.org"
gem 'github-pages'
gem 'jekyll-import'
gem 'sequel'
gem 'mysql2'
% bundle
% bundle exec ruby -rubygems -e 'require "jekyll/jekyll-import/wordpress";
JekyllImport::WordPress.process(:dbname => "database", :user => "user", :pass => "pass")'
上手く行くと、_postsの下にファイルがごっそりできる。
ファイルを見ると、wordpress関係の余計な情報が入っているので、必要なものだけ出力されるようにjekyll-import/wordpressを修正する。必要な情報としては、layout, published, tags くらいかな。
def self.process_post の最後の方に出力するデータが定義されているので、その辺をごにょごにょっと変更。
data = {
'layout' => post[:type].to_s,
'published' => (post[:status].to_s == "publish"),
'title' => title.to_s,
'tags' => options[:tags] ? tags : nil,
}.delete_if { |k,v| v.nil? || v == '' }.to_yaml
これでもう一度エクスポート処理をすると問題なかった。
github に push する前にローカルで確認しておく。jekyll serve で立ち上げると4000番ポートにアクセスできる。
% jekyll serve
ここで、移行したデータに問題があればエラーとかページがおかしかったりするので、ちまちま直す。けっこうめんどくさくなってきた…。
変更した箇所は主に以下の2つ。
- pre タグ使ってたところ
- RawHTML にひっついた文字列があるところ(文章中のアンカータグとか)
最後に改行コードが気になったので、統一しておく。dos2unixが入ってなかったので、ついでに入れといた。
% sudo yum install dos2unix
% dos2unix _posts/*
出来たらgithub に push して終わり。
% git add -A _posts/*
% git commit -m "過去記事の追加"
% git push
投稿の内容に関しては、wordpressのショートタグとか使ってなかったので、特に問題なさそう。
とりあえずこんなとこで。