CentOSのxinetdでGitサーバを立てる

このエントリーを含むはてなブックマーク

Gitのレポジトリサーバをxinetdで立てる

昨日に引き続き、git-daemonです。
マニュアルを見ているとgit daemonはinetdで起動できるみたいなので、それならxinetdで立ててみるかなという気持ちになってきました。

git-daemon(1) Manual Page
http://www.kernel.org/pub/software/scm/git/docs/everyday.html

xinetdをインストール

うちの環境はCentOS5.2です。デフォルトでxinetdがインストールされていなかったので、まずインストールするところからスタート。

  1. # rpm -q xinetd
  2. パッケージ xinetd はインストールされていません。
  3. # yum install xinetd
  4.  
  5. Dependencies Resolved
  6.  
  7. =============================================================================
  8.  Package                 Arch       Version          Repository        Size
  9. =============================================================================
  10. Installing:
  11.  xinetd                  x86_64     2:2.3.14-10.el5  base              125 k
  12.  
  13. Transaction Summary
  14. =============================================================================
  15. Install      1 Package(s)
  16. Update       0 Package(s)
  17. Remove       0 Package(s)
  18.  
  19. Total download size: 125 k
  20. Is this ok [y/N]: y


これでxintedはインストールされましたね。
続いて、xintedの起動と、次回から自動起動するようにchkconfigをonにしておく。

  1. # chkconfig xinetd on
  2. # /etc/init.d/xinetd start
  3. xinetd を起動中:                                           [  OK  ]


xinetdが起動しました。

xinetdにgitを登録

さてgit-daemonがxinetd経由で、gitのポートにリクエストがあった時、適宜起動してくれるよう設定します。

  1. # cat /etc/services | grep git
  2. ....
  3. git  9418/tcp   # git pack transfer service
  4. git  9418/udp   # git pack transfer service


gitがインストールされている場合、/etc/servicesにはすでに登録されていると思います。
続いて/etc/xinetd.d/にgit用の設定ファイルを設置します。

  1. # touch /etc/xinetd.d/git-daemon


内容は以下のように

  1. # default: off
  2. # description: The git server offers access to git repositories
  3. service git
  4. {
  5.         disable = no
  6.         type            = UNLISTED
  7.         port            = 9418
  8.         socket_type     = stream
  9.         wait            = no
  10.         user            = nobody
  11.         server          = /usr/bin/git-daemon
  12.         server_args     = --inetd --export-all --base-path=/var/git --enable=receive-pack
  13.         log_on_failure  += USERID
  14. }


以上で完了です。

レポジトリの追加

レポジトリの追加についても簡単にまとめておきます。

  1. mkdir /tmp/hoge
  2. cd /tmp/hoge
  3. git init


適当なところでローカルのgitレポジトリを作成する

  1. touch hoge.txt
  2. git add .
  3. git commit -m "1st commit."


そのリポジトリになんでも良いので1発コミットをしておく。

  1. cd /var/git
  2. git clone --bare /tmp/hoge .hoge.git
  3. touch hoge.git/git-daemon-export-ok
  4. chown -R nobody:nobody hoge.git


公開用に設定してある/var/gitに移動し、公開用リポジトリ作成。 --bareオプションを忘れずに。
ディレクトリのオーナーをnobodyにしておく(/etc/xinetd/git-daemonで設定したユーザー)

以上です。

--

追記

参考にしたのはここ

Everyday GIT With 20 Commands Or So
http://www.kernel.org/pub/software/scm/git/docs/everyday.html

さらに

gitosis - Git リポジトリ群の管理とアクセス制御 vol.0
http://openbooth.org/archives/60.html

この辺を参考にしてもっと細やかな管理方法を会得したい。

Posted in centos, linux at 2月 25th, 2009. Trackback URI: trackback
Tags: , ,

One Response to “CentOSのxinetdでGitサーバを立てる”

  1. 6月 15th, 2009 at 1:41 PM #xenix

    大変お世話になっております。 私はxenix.dip.jpというサイトを運営しております。 挨拶くらいはしたかったのでこのコメントを残します。 このサイトは私が自分のためにIT情報を集めるだけのサイトでしたが、ちょっとモッタイナイ気がして、公開する事になりました。 許可もなく、コピーペーした事、大変申し訳ありません。

    お陰さまで色々勉強になりました。

    これからもコピーペーしますが、お許しください~~~

Leave a Reply