rakuishi.com

WordPress から Hugo に乗り換えました

2011 年 8 月 25 日から数えて 3 年と半年、このブログは WordPress で運営してきたのですが、この記事から Hugo という静的サイトジェネレータで運用します。

当初は WordPress も PHP も分からない微生物専攻の大学生だったのが、最近では WordPress テーマ/プラグイン作成をする仕事をしていて、時間の流れは不思議だと感じるこの頃。そして、WordPress のことが大まかに掴めたからこそ、他のブログツールを勉強したいなと思いました。

調べてみたらフロントエンドエンジニア界隈で、Go 言語で作られた Hugo という静的サイトジェネレータがなんか流行りっぽいので、それに移行しました。

WordPress からの移行方法

まだ、公式に WordPress から Hugo に移行する方法がないのですが、以下の手順でだいたい出来ました。

Hugo 導入

go get して Hugo を導入して、新規サイトを作成。

$ export GOPATH=$HOME/go
$ go get -v github.com/spf13/hugo
$ hugo new site rakuishi.com

参考:Hugo Quickstart Guide

記事

  • WordPress の記事情報 xml を取得する(管理画面 → Export → All content → Download Export file)
  • WordPress の記事を Hugo 仕様に変換する。→ wp-xml-hugo-import.rb
  • 作成した markdown(記事記述部分は、html のままだが)を content/ 以下の任意の場所に置く。このブログの場合は、content/archives/*.md

画像

  • WordPress /wp-contents/uploads フォルダを FTP とかからローカルに落としておく
  • uploads 内サムネイル用画像は、もう使わないから削除する。find uploads -name "*-150x150.*" | xargs rm
  • uploads を images に名前を変えて static/images に配置

テーマファイル

layouts にオリジナルテーマを書くか、テーマをクローンしてくる。テーマは、あまり揃っていないので、自作するのが吉。

$ git clone --recursive https://github.com/spf13/hugoThemes themes

.htaccess にリダイレクトを追加する

WordPress は /feed に、Hugo は /index.xml にフィードを吐き出しているからリダイレクト処理を static/.htaccess に書く。

RedirectMatch 301 /feed /index.xml

ローカル環境

ローカル環境を起動できます。--buildDrafts は、ドラフト記事も生成。--watch は、記事を保存した時に、ブラウザが自動リロードされる。http://localhost:1313/ からローカル環境が見えます。 約 420 記事あるこのブログの生成時間は、400ms ぐらいでした。

$ hugo server --buildDrafts --watch
$ hugo server --theme=redlounge --buildDrafts --watch

サーバーとデータをシンクする

rsync コマンドで同期させている。以下のようなシェルスクリプトを書いた。

#!/bin/sh
hugo
rsync -auv --delete ~/Dropbox/Private/rakuishi.com/public/ rakuishi@rakuishi.sakura.ne.jp:/home/rakuishi/www/

雑感

静的サイトジェネレータだから、WordPress のようにブラウザで記事を書くのではなくて、ローカルに記事を書く。記事はマークダウン形式で書けて、それを html ファイル形式で出力する。それをサーバーにシンクして完了、という流れになります。

まだ、関連記事やページネーションを導入するのが難しい成長途中のジェネレータですが、細かいところを拘らなければ特に問題ない。そういう細かいところは、これから実装されるみたい。→ Hugo Roadmap

それより WordPress のセキュリティとか、データベースとか、バックアップとか、PHP の記述をミスって画面が白くなる、というストレスから開放されるのが良いと思いました。静的サイトジェネレータだから、当然ですが、記事の読み込みが早くなった。

それと、ブログを GitHub で管理できるようになりました。