2012/10/11

Recent entries from same category

  1. 別のプロセスの動的な環境変数を盗み取る
  2. ぼくがかんがえたさいきょうの rebuild.fm クライアント
  3. サーバを再起動したら勝手にscreenが起動してその中でirssiが動いていて欲しい場合のベストプラクティス
  4. grep で文字列を縦書きに変換
  5. WalkmanをLinuxでSonicStage無しに転送する方法

JekyllGitoliteを連携させたら思いのほか便利だったという話。
以下は 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 ぽくなってウマー。
Posted at by