Hatena::ブログ(Diary)

とりあえず、一応、その方向で

2010-11-03

最小限のgitレポジトリサーバ作成

| 23:43

チーム用にgitの共有レポジトリを作る機会があったので、その過程をメモしておきます。Ubuntu 10.04 LTSを使って、なるべく余計なものを動かさないという方針でやってみました。

インストール先はVMware server上の仮想マシンです。

Ubuntu 10.04インストール

最小限のパッケージしかいらないので、インストールに使用するメディアInstallation/MinimalCD - Community Ubuntu Documentationから持ってきたmini.isoを使ってインストールしました。プロキシ越しでもいいので、なんらかのネットワーク接続環境がないとこの方法はとれません。

インストールが終わったら、

% sudo apt-get update
% sudo apt-get upgrade

で念のためパッケージを最新版にしておきます。多分インストール時に最新版を持ってきてくれているだろうけど。

VMware toolsのインストール

パッケージで入れたほうが何かとラクなので、VMware/Tools - Community Ubuntu Documentationに従ってopen-vm-toolsインストール。headlessなサーバにするので、

% sudo apt-get install --no-install-recommends open-vm-dkms
% sudo apt-get install --no-install-recommends open-vm-tools

として完了。

git/gitosisのインストール

gitレポジトリへのアクセス制御などはgitosisで行うので、まずはこの2つをインストールします。これに関してはGit - Community Ubuntu Documentationの前半を参考にしました。

インストール自体は下記のコマンドで。

% sudo apt-get install git-core gitosis

管理に使うユーザの公開鍵を使って、gitosisの初期設定をします。

% sudo -H -u gitosis gitosis-init < /path/to/public_key

その鍵を使って、テストをかねてリモートからgitosisの設定ファイルをチェックアウト。

% git clone gitosis@yourserver.com:gitosis-admin.git

gitosis-admin/gitosis.confを適切に設定し、設定をサーバにpushします。

% git commit -am "Initialize"
% git push

これでSSH越しの接続は動くはず。

gitwebのインストール

webからレポジトリをブラウズできると便利なので、gitwebを入れます。これに関しては、How to setup git, gitosis and gitweb | Public Memoryのgitwebのインストール部分を参考にしました。

gitwebにはapache2が必要なので、同時にインストールします

% sudo apt-get install apache2 gitweb

上記サイトの例を参考に、/etc/gitweb.confを書き換え、gitosisが管理しているレポジトリ群を参照できるようにします。変更/追加部分は下記の通りです。

$projectroot = "/srv/gitosis/git";
$projects_list = "/srv/gitosis/gitosis/projects.list";
$export_ok = "";
$strict_export = "true";

これで、gitosis.confで"gitweb=yes"としたレポジトリはgitwebから参照できるようになるはず。

git-daemon-runのインストール

gitプロトコルでもアクセスできるようにするために、git-daemonを起動するためのスクリプト群をインストールします。

% sudo apt-get install git-daemon-run

さらに、gitosisが管理しているレポジトリアクセスするようにするために、/etc/service/git-daemon/runを編集。

 ... /usr/lib/git-core/git-daemon --verbose --base-path=/srv/gitosis/git /srv/gitosis/git

gitosis.confで"daemon=yes"としたレポジトリはこれでgitプロトコルアクセス可能になります。

リソース消費量は?

この設定を行ったあと、ディスクの占有量は796Mbyte、メモリ利用量は64Mbyte程度でした。最小限のインストールでも800Mbyte程度はディスクを食ってしまうんですね。