鶏頭のプログラム

Ruby, Javascript, C言語, SQLなどのプログラミング

gitサーバーをCentOS上に構築

今回はgitのサーバーが必要になったので構築してみます。

必要なものは
git
gitを使用するためのもの
git-daemon
gitサーバーをたてるためのデーモン
Git - git-daemon Documentation
git-all
スケーラブルな分散型リビジョン管理システム (全サブパッケージ)
Debian -- squeeze の git-all パッケージに関する詳細

$ yum -y install git git-all git-daemon


xinetd
initdの上位互換。
xinetd - Wikipedia

$ yum -y install xinetd


/etc/xinetd.d/gitファイルを下記の様に編集

# default: off
# description: The git dæmon allows git repositories to be exported using \
#       the git:// protocol.

service git
{
        disable         = no
        socket_type     = stream
        wait            = no
        user            = git
        server          = /usr/libexec/git-core/git-daemon
        server_args     = --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd --verbose
        log_on_failure  += USERID
}


私の場合は git 専用のユーザー git を作成。

$ useradd -m -d /home/git -s /usr/bin/git-shell git


ここでgit-shellを指定するとgitユーザーで通常のログインはできなくなります。
こうするとログインしようとするとこんなエラーが発生します。

fatal: What do you think I am? A shell?


それで xinetd を起動します。

$ service xinitd start 


git-daemonに接続できるようにhosts関連のファイルや
iptablesの設定も正しく行う必要があります。
gitデーモンが使用するport番号は

$ cat /etc/services | grep git


で調べられます。(デフォルトは 9418)

とりあえずサーバーに

$ cd /var/lib/git
$ mkdir repo
$ cd repo
$ sudo -u git git init --bare ./test.git


そしてクライアントから取得。

$ git clone git//:server/var/lib/git/test.git


これで取得が可能にりました。