Freelance Web Engineer

gitoliteのインストール

2011-10-17  git, ubuntu, VPS

gitリポジトリ管理ツールの「gitolite」をUbuntuサーバに入れた時のメモです。

環境は以下の通り:

サーバー
OS: Ubuntu 10.04.1 LTS
git: 1.7.0.4
クライアントPC
OS: Mac OS X 10.7.2
git: 1.7.4.4

1. ユーザーの公開鍵をgitoliteをインストールするサーバーにscpしておく

クライアントPCでの作業です。

[masayuki@local:~]$ scp ~/.ssh/id_masayuki.pub masayuki@your_git_server:/tmp/masayuki.pub

公開鍵の名前は、ユーザー名.pubにしてください。

2. gitolite用ユーザー(gitolite)作成

ここからサーバー側での作業です。まず、今コピーした公開鍵をreadできるようにしておきます。

[masayuki@server:~]$ chmod +r /tmp/masayuki.pub

gitoliteユーザーを作成します。

[masayuki@server:~]$ sudo su -
[root@server:~]# useradd -m gitolite
[root@server:~]# vipw
---
gitolite:x:1001:1001::/home/gitolite:/bin/bash #=> bashに変更する
---
[root@server:~]# exit

3. gitoliteインストール

いよいよインストールします。サーバー側での作業です。

[masayuki@server:~]$ sudo su - gitolite
[gitolite@server:~]$ git clone git://github.com/sitaramc/gitolite
Initialized empty Git repository in /home/gitolite/gitolite/.git/
remote: Counting objects: 4700, done.
remote: Compressing objects: 100% (1619/1619), done.
remote: Total 4700 (delta 3265), reused 4426 (delta 3022)
Receiving objects: 100% (4700/4700), 1.27 MiB | 531 KiB/s, done.
Resolving deltas: 100% (3265/3265), done.
[gitolite@server:~]$ cd gitolite
[gitolite@server:~/gitolite]$ src/gl-system-install
using default value for EUID=1001:
/home/gitolite/bin /home/gitolite/share/gitolite/conf /home/gitolite/share/gitolite/hooks
[gitolite@server:~/gitolite]$ cd
[gitolite@server:~]$ vi .bashrc
--
PATH="$PATH":/home/gitolite/bin #=> これを追加してパスを通しておきます。
--
[gitolite@server:~]$ source .bashrc
[gitolite@server:~]$ gl-setup /tmp/masayuki.pub
gitolite@your_git_server
gitolite on your_git_server
[master 34dbe53] start
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 keydir/masayuki.pub
[gitolite@server:~]$ exit
[masayuki@server:~]$ exit

4. ssh設定

クライアントPCにてsshの設定を行います。userとidentityfileにご注意ください。

[masayuki@local:~]$ vi .ssh/config
--
host gitserver
     user gitolite
     hostname your_git_server
     port 22
     identityfile ~/.ssh/id_masayuki #=> サーバーにコピーした公開鍵の対になる秘密鍵
     identitiesOnly yes
--

このように設定することで、gitoliteユーザーで先ほどコピーした鍵でssh可能になります。

5. 動作確認

クライアントPC側にて、gitolite-adminリポジトリをcloneしてみます。

[masayuki@local:~]$ cd /tmp/
[masayuki@local:~]$ git clone gitserver:gitolite-admin
Cloning into gitolite-admin...
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 8 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (8/8), done.

できました。あとはこのリポジトリでユーザー追加やリポジトリの管理を行います。

ハマりポイント

ssh接続ユーザーをsshd_configで制限していたため、作業マシンからsshができなくてハマりました。以下のように変更します。

[masayuki@server:~]$ sudo vi /etc/ssh/sshd_config
--
AllowUsers masayuki gitolite
--

※ スペース区切りです。

参考

comments powered by Disqus