概要
メモ用で、ローカルでmarkdownファイルを作って日付ごとにファイルを作っているけれども
ごちゃごちゃしていてファイルを探すのが大変だし、
文章がちょっと長くなると全体の見通しが悪い。(ブラウザでいい感じに見たい)
grepすればいいけれども、ターミナル上で探すのはちょっと微妙でブラウザから見たくなった。
tocを吐き出すのも出来ないことはないけど、pandocをかますのがちょっと面倒。
用途にあうもので、jekyllとhugoがあるようだ。
sphinxはmarkdownではないのと、昔使っていてなんとなく飽きてしまったので、
今流行りの2つのどっちかを使ってみる。
どうも速度的にかなり早いというhugoを入れてみることにしました。
(なんとなく最新版を使いたくてdockerを使って構築しています。使うだけなら、バイナリをダウンロードする方が圧倒的に楽です。バイナリで良い方は、「基本ファイル作成」セクションまで飛んでOKです。)
手順
- goをインストールする
- goコマンドでhugoをインストール
dockerfile
インストールしたバージョンは以下の通り
golang version:1.4.2
hugo:0.14-DEV
git:2.3.4
hg:1.4
以下のdockerfileで動きました。
FROM centos:6
# golang install
RUN yum install -y wget tar
RUN cd /tmp && wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.4.2.linux-amd64.tar.gz
ENV PATH /usr/local/go/bin:$PATH
# for git
RUN yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
RUN yum install -y gcc
RUN cd /tmp && wget https://www.kernel.org/pub/software/scm/git/git-2.3.4.tar.gz && tar zxvf git-2.3.4.tar.gz && cd git-2.3.4 && ./configure --prefix=/usr/local && make prefix=/usr/local all && make prefix=/usr/local install
# hugo install with go command
ENV GOPATH /root/go
RUN go get -v github.com/spf13/hugo
go getで依存関係のものが$GOPATHにインストールされるようです。
あとはhugoをアップグレードしたいときは
go get -u -v github.com/spf13/hugo
でいけるようです。
gitは、yumでインストールして1.7.1を入れましたが、go get実行時に途中で止まってしまいました。
なので、最新版をコンパイルして入れています。
あと、hgも入れないとgo getのコンパイルが完了しませんでしたので入れてます。
参考URL:http://gohugo.io/overview/installing/
で、dockerfileをおいたディレクトリで以下を実行
% docker build -t hugo:0.14dev ./
dockerで使ってみる
dockerで走らせます。
% docker run -h hugo --name hugo -p 1313:1313 -v ~/hugo:/root/hugo -v /etc/localtime:/etc/localtime:ro -t -i hugo:0.14dev /bin/bash
ローカルとdockerのポートを合わせています。
理由は、
docker側: 172.0.0.1:1313
ホスト側: localhost:8888
みたいにdockerとホストで別ポートにしてしまうと
localhsot:8888にアクセスすると、cssファイルはlocalhost:1313/css/...を見に行ってしまい、
172.0.0.1:1313にアクセスすると、cssファイルはlocalhost:1313/css/...を見に行ってしまい、
見つからなくなってしまうからです。
何かきっと解決策はありそうですが、とりあえずお試しなのであわせています。
また、-vでローカルフォルダ(~/hugo)をマウントしているのは、ローカルのvimを使いたいからです。
もう1つは時刻合わせです。
基本ファイル作成
適当にディレクトリに作成する。
[root@hugo ~]# cd /root/hugo/
[root@hugo ~]# hugo new site ./memo
[root@hugo ~]# ls
go memo
[root@hugo ~]# cd memo
[root@hugo memo]# ls
archetypes config.toml content data layouts static
[root@hugo memo]# hugo new 20150324.md
/root/hugo/memo/content/20150324.md created
[root@hugo memo]# ls content
20150324.md
[root@hugo memo]# hugo new post/first.md
/root/hugo/memo/content/post/first.md created
[root@hugo memo]# git clone --recursive https://github.com/spf13/hugoThemes themes
[root@hugo memo]# hugo server --theme=hyde --buildDrafts
ここまでやると、/root/hugo/memo/content以下に20150324.mdファイルが作成されており、これが1313ポートで公開されます。
localhost:1313でアクセスできるはずです。(別のポートかも。コマンドのログにアクセスURLは書いてある)
テーマはデフォルトで用意されているhydeっていうのを使ってみました。
参考URL:http://gohugo.io/overview/quickstart/
autoreload
--watchを渡すと、変更を自動で感知してくれる。
[root@hugo memo]# hugo server --theme=hyde --buildDrafts --watch
ってやると、content/以下のファイルが更新されると、ファイルの変更を感知してブラウザが自動でリロードしてくれます。
table of contents
全体の見通しが悪いのを解決するために、最低限tocはほしい。
テーマがtoc表示に対応していればできるっぽい。
いくつかテーマを変更していったらそれっぽいのがあった。
[root@hugo memo]# hugo server --buildDrafts --watch --theme=redlounge
とりあえずこれで表示された。
使ってみた感想
まだpostとcontentsの違いもわかってないし、tagもつけれるみたい。
s3とかbitbucketに静的コンテンツだけ飛ばして
blogとして使えるのがもともとのウリみたいだけれど、
テーマ変更が簡単だったりwatchも用意されてたりメモ機能としてもなかなか便利。
sphinxのときはwatchするのもbashのスクリプト組んで自前でやってたので、
そういう面も楽かも。
sphinxはテーマもこんなに簡単に変えることができなかったイメージだな。
あと軽いらしいけれども、まだコンテンツ量が少ないので実感はない。
それと、テーマが充実していて、font-awesomeとか入ってるんで、なによりブラウザから見て綺麗。
コミュニティも盛り上がっているし、メモで使うだけにしてもよさそう。
やり始めてから環境構築に1.5時間くらいかかったけど、
上記dockerファイル使うかバイナリならたぶん10分くらいで終わるはずだから、
試す価値はあると思います。