Octopressの運用をあきらめ、Hugoへ移行開始。 Arch Linux使用 (201602)

久しぶりにOctopressで記事を書こうかと思ったら、動かない。Rubyは他では全く使っていないので、具合もわからない。遅いし。諦めて、Hugoを試すことにした。

以下を参考にした。感謝。

spiegel-im-spiegelさん”ゼロから始める Hugo — インストールから Hello World まで”

sotaさん”OctopressからHugoへ移行した”

syuiさん”HUGOを使ってサイトを立ち上げる方法”

公式サイトには多くのドキュメントがあった。 Quickstartとか Configurationなども参考にした。

Go のインストール

goはリポジトリ取得で幾つかのVCSに対応している。 ここでは git と mercurialが必要。

# pacman -S go git mercurial

各ユーザーのGo使用準備

$ mkdir ~/.go
$ export GOPATH=~/.go
$ PATH=$PATH:$GOPATH/bin

hugo インストール

$ go get -v github.com/spf13/hugo

hugoが $GOPATH以下にインストールされる。

新たなサイトのためのディレクトリをセットアップ

存在しないか、空のディレクトリを指定する。ここでは ~/hugoとする。

$ hugo new site ~/hugo
Congratulations! Your new Hugo site is created in "/home/User/hugo".

テーマのインストール

とにかく動くところまで進めたいので、出来合いのテーマのセットをインストール。

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

hugo/themesにcloneされた、一連のディレクトリの名前が各テーマの名前。

以下の説明では、これに含まれる テーマ ‘base16’ を使用する。以下の通りconfigファイルに指定しても良いし、hugoのコマンドラインオプションに –theme=<テーマ名> を指定してもよい。コマンドラインが優先される。

最低限のコンフィグ

baseurlは、サーバーモードで使用するとき、–baseURLオプションで差し替え可能なので、今は何でも良いし、最終的に必要なurlを設定しても良い。

$ vi ~/hugo/config.toml
#baseurl = "http://replace-this-with-your-hugo-site.com/"
#languageCode = "en-us"
#title = "My New Hugo Site"
baseurl = "http://www.example.com/"
languageCode = "jp"
title = "俺の New Hugo Site"

テーマをコマンドラインで指定するのが面倒なら、config.tomlに書いておける。

theme = "base16"

Octopress用に作成した原稿を hugoへコピー

まずはcontentディレクトリへそのままコピー

$ rsync -av ~/octopress/source/_posts/  ~/hugo/content/

日付のフォーマットを変更する。

旧:`date:  2015-02-08 21:16:51 +0900`
新:`date: "2015-02-08T21:16:51+09:00"`

$ cd ~/hugo
$ for f in content/* ; do  \
  sed -ri 's|^date:[ ]+([0-9]{4}-[0-9]{2}-[0-9]{2})[ ]+([0-9]{2}:[0-9]{2}:[0-9]{2})[ ]+[+]([0-9]{2})([0-9]{2})|date: "\1T\2+\3:\4"|' $f ; done

サーバーモードで テスト

まず構築のみ

$ cd ~/hugo
$ hugo
0 draft content
0 future content
21 pages created
0 non-page files copied
0 paginator pages created
24 categories created
0 tags created
in 112 ms

エラーなし。

サーバーモードでプレビューしてみる。別ホストのWEBブラウザからこのホストへ、ayu.example.com:18080 でアクセスし、このホストが192.168.7.6の場合、以下通り。

$ hugo server --baseURL "http://ayu.example.com/" --bind=192.168.7.6 --port=18080 --watch
  • –baseURL

    HTML中に出力するベースURL。デプロイ時とプレビュー時では異なる(と思う)ので、プレビューではコマンドラインオプションで与えれば優先される。 –portの値も反映される。

  • –bind

    listenするインターフェースのIPアドレスか、対応するドメイン名。ネットワーク経由でプレビューするなら必要。指定しなければ、localhost (127.0.0.1)となり他ホストからプレビューできない。

  • –port

    使用するポート。指定なければ 1313 。

  • –watch

    ファイル変更を検出してビルドしなおしてくれる。2016/02/12現在、config.tomlの変更も検知してくれるので、テーマ選びが簡単。と思ったらだめだった。サーバーモードを一旦とめて、ビルドが必要。