以下は CentOS6 でやった履歴。まず jekyll をインストールする。これは rvm じゃなくて後で作る git ユーザから実行可能な物でないといけない(まぁパス通してもいいけど)。
$ yum install git gitweb ruby rubygems
$ gem install jekyll
git ユーザを作る。
$ useradd git
$ passwd git
ssh でログイン出来る様にする。
$ vi /etc/sshd/sshd_config
$ /etc/init.d/sshd restart
※AllowUsers に git を足すgitolite のインストール。
$ su - git
$ cp /tmp/trusted-key.pub foo.pub
$ git clone https://github.com/sitaramc/gitolite.git
$ `pwd`/gitolite/install -ln
$ gitolite setup -pk foo.pub
※foo はメインで使うユーザ名にしておくと良いリモートから gitolite-admin で blog を作る。
$ git clone git@server:gitolite-admin
$ cd gitolite-admin
$ vi conf/gitolite.conf
repo gitolite-admin
RW+ = mattn
#repo testing
# RW+ = @all
repo blog
RW+ = foo
R = gitweb
config gitweb.owner = foo
config gitweb.description = blog
$ git commit -a
$ git push origin master
ここでサーバ側に仕掛けを入れる。
$ su - git
$ vi ~/repositories/blog.git/hooks/post-receive
#!/bin/sh
GIT_REPO=$HOME/repositories/blog.git
TMP_GIT_CLONE=$HOME/tmp/blog
PUBLIC_WWW=/var/www/blog
git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE && jekyll --no-auto $TMP_GIT_CLONE $PUBLIC_WWW
cd ~ && rm -rf $TMP_GIT_CLONE
find $PUBLIC_WWW -type f -print0 | xargs -0 chmod 666
find $PUBLIC_WWW -type d -print0 | xargs -0 chmod 777
exit
またapacheでブログが見れる様にする。
$ su -
$ mkdir /var/www/blog
$ chmod 775 /var/www/blog
$ chown git:git /var/www/blog
$ vi /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/blog"
apacheグループから見れる様にする
$ usermod -a -G apache git
リモートから blog リポジトリをチェックアウト。
$ git clone git@server:blog
ここから先は、Jekyllで始める簡単ブログを読んでJekyllを設定して欲しい。さて、あとは記事を書いてgit addして、コミットそしてプッシュすれば自動的にサーバ側でjekyllが静的コンテンツを生成してくれ、ブログが公開される様になる。
GitHub Pages ぽくなってウマー。