gitoliteのインストール
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
--
※ スペース区切りです。