git鯖の構築 -2-

こんどは、前よりHDDもRAMも少ない素のMac mini環境。
UbuntuServer 11.04は入った。
インストーラーで入れたのは、sshdだけ。
gitをパッケージインストールした。


httpで鯖を公開してしまうのは、いろいろとリスクもあるので、gitプロトコルのみの許可にする。
Web公開はローカルだけにしておく。


gitのリポジトリを作成しておく。

kinneko@gitsv2:~$ sudo mkdir -p /var/git/EVT/test.git
kinneko@gitsv2:~$ cd /var/git/EVT/test.git
kinneko@gitsv2:/var/git/EVT/test.git$ sudo git --bare init --shared
Initialized empty shared Git repository in /var/git/EVT/test.git/
kinneko@gitsv2:/var/git/EVT/test.git$ sudo groupadd developer
kinneko@gitsv2:/var/git/EVT/test.git$ sudo usermod -G developer kinneko
kinneko@gitsv2:/var/git/EVT/test.git$ sudo chown root:developer -R ./


gitサーバーを動かす。
Ubuntuだと、起動スクリプト類がgit-daemon-runという専用のパッケージになっているそうな。
依存するrunitのインストールで、

grep: /etc/inittab: No such file or directory

と出ているのが気になるところ。
gitlogとgitdaemonというユーザーが自動追加された。
デフォルトの設定ファイルでは、gitディレクトリが"/nonexistent"になっているようで、起動時にエラーを出している。
しかし、起動はしている。

 1905 ?        Ss     0:00 runsvdir -P /etc/service log: ..................................................
 1945 ?        Ss     0:00 runsv git-daemon
 1946 ?        S      0:00 svlogd -tt /var/log/git-daemon
 1947 ?        S      0:00 /usr/lib/git-core/git-daemon --verbose --base-path=/var/cache /var/cache/git

設定を編集しておく。

kinneko@gitsv2:~$ sudo vi /etc/sv/git-daemon/run
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon \
  "$(git --exec-path)"/git-daemon --verbose --base-path=/var/cache /var/cache/git

nonexistentは判定で存在しなかったから出しただけなのかな。

  "$(git --exec-path)"/git-daemon --verbose --base-path=/var/git --export-all --enable=receive-pack 


現在のサービス状態を見る。

kinneko@gitsv2:/var/git/EVT/test.git$ sudo sv stat git-daemon
run: git-daemon: (pid 1947) 2141s; run: log: (pid 1946) 2141s

一応動いているみたい。


サービスを停止・起動する。

kinneko@gitsv2:/var/git/EVT/test.git$ sudo sv stop git-daemon
ok: down: git-daemon: 0s, normally up
kinneko@gitsv2:/var/git/EVT/test.git$ sudo sv start git-daemon
timeout: down: git-daemon: 1s, normally up, want up


なんか、ps見ても、止まっている気がしないわ...
logのほうは別に停止起動をする必要があるみたい。

kinneko@gitsv2:/var/git/EVT/test.git$ sudo sv stop git-daemon/log
ok: down: git-daemon/log: 0s, normally up
kinneko@gitsv2:/var/git/EVT/test.git$ sudo sv start git-daemon/log
ok: run: git-daemon/log: (pid 2682) 1s
kinneko@gitsv2:/var/git/EVT/test.git$ sudo sv stat git-daemon/log
run: git-daemon/log: (pid 2682) 16s

こちらは、svlogdのプロセスがなくなるので、明確に止まるのが確認できる。


簡単すぎて不安になるくらいだな。
でも、普通のsysvスタイルになってない起動システムは、嫌な感じがするのは年寄りですか、そーですか。