panda's tech note

このノートの書き方

このノートはmarkdownで書いてgitで管理しています。 markdownドキュメントの自動コンパイルはgit hookと mdbook で自動コンパイルしています。

ここでは私の環境構築手順をメモとして残します。

mdbookのインストール

mdbookはRustで書かれています。 mdbookをインストールする前に,Rustのパッケージ管理ツールである Cargoをインストールします。 CargoRustのインストーラに含まれて居ますので, Rustのインストール手順 に従ってインストールします。

RustCargoをインストールしたら, 以下のコマンドでmdbookをインストールします。

$ cargo install mdbook

gitレポジトリの準備

まずgitレポジトリを準備します。 このノートではgit.example.com:/home/panda/repositories/mybookに レポジトリがあると想定します。

最初にレポジトリの初期化をします。 git.example.comにログインして以下のコマンドで レポジトリの初期化をします。

$ mkdir -p /home/panda/repositories/mybook
$ cd /home/panda/repositories/mybook
$ git init --bare

次に,レポジトリにコンテンツの変更をpushしたときに HTMLを自動生成するために,hookを設定します。 レポジトリ内の./hooks/post-updateを以下の通り編集します。

## Only master branch is the target
BRANCH=$(git rev-parse --symbolic --abbrev-ref $1)
if [ "$BRANCH" != "master" ];
then
        echo "Only effective for master branch, but current branch was $BRANCH."
        exit
fi

unset GIT_DIR
git -C /var/www/mybook pull
cd /var/www/mybook
mdbook build

exit 0

ファイルの編集後,パーミッションを変更し,実行権限を与えます。

$ chmod 0755 hooks/post-update

HTTPサーバのドキュメントルートの設定

自動生成されるHTMLファイルを公開するHTTPサーバのドキュメントルートを 設定します。 ここでは /var/www/mybook をレポジトリをcloneする作業用ディレクトリとし, /var/www/mybook/bookにHTMLファイルを生成します。 つまり,/var/www/mybook/bookをドキュメントルートに設定します。 root.

以下のコマンドで,作業用ディレクトリにレポジトリをコピーして, 上述のhookによりHTMLファイルの自動生成ができるようにします。 ここでの注意点は/var/wwwに適切なパーミッションを設定することです.

$ cd /var/www
$ git clone /home/panda/repositories/mybook mybook

初期コンテンツの追加

これで設定はほぼ完了です。 コンテンツを追加編集するには, 作業用のマシンでレポジトリ(book)を初期化し,markdownのソースファイルを追加します. 以下のコマンドで初期ファイルを追加できます。

$ git clone ssh://git.example.com/home/panda/repositories/mybook mybook
$ cd mybook
$ mdbook init
$ git add .
$ git commit -m "First commit"
$ git push -u origin master

あとはコンテンツを追加・編集して自由にbookをカスタマイズできます。