2013年8月11日日曜日

debian上でgitoliteをhttpインターフェースで使う

jessie/testing(2013/8/11)です。

以下参考。
https://github.com/sitaramc/gitolite/blob/master/t/smart-http.root-setup

データとスクリプトのセットアップ

gitoliteとapacheをapt-getで入れている前提で以下のようにコマンドを打つ。
# mkdir -p /var/www/gitolite-home
# cd /var/www/gitolite-home
# install -d -m 0755 -o gitolite3 -g gitolite3 bin
以下を"/var/www/gitolite-home/bin/gitolite-suexec-wrapper.sh"として作成。
(2013/8/11 13:09: gitolite-shellのパスが間違ってたので修正)
#!/bin/bash
#
# Suexec wrapper for gitolite-shell
#

export GIT_PROJECT_ROOT="/var/lib/gitolite3/repositories"
export GITOLITE_HTTP_HOME="/var/lib/gitolite3"
exec /usr/share/gitolite3/gitolite-shell
gitolite-suexec-wrapper.shの属性を修正する。
# chown gitolite3:gitolite3 /var/www/gitolite-home/bin/gitolite-suexec-wrapper.sh
# chmod 0700 /var/www/gitolite-home/bin/gitolite-suexec-wrapper.sh

apacheのセットアップ

apacheは2.4系です。
apacheの動く環境ををapt-getで入れている前提で。 /etc/apache2/sites-enabled/git.confを新規に編集。
VirtualHost設定は環境に合わせて設定。
必要なのは太字の部分だけです。
<VirtualHost 192.168.1.1:80>
ServerName git.local.domain

SuexecUserGroup gitolite3 gitolite3
ScriptAlias /git/ /var/www/gitolite-home/bin/gitolite-suexec-wrapper.sh/
ScriptAlias /gitmob/ /var/www/gitolite-home/bin/gitolite-suexec-wrapper.sh/

ErrorLog /var/log/apache2/git_error.log
CustomLog /var/log/apache2/git_access.log combined

DocumentRoot /var/www/gitolite-home
<Directory /var/www/gitolite-home>
        Require all denied
</Directory>

<Location /git>
    AuthType Basic
    AuthName "Private Git Access"
    Require valid-user
    AuthUserFile /var/lib/gitolite3/gitolite-http-authuserfile
</Location>

</VirtualHost>

ユーザ追加

以下のコマンドでユーザ追加(gitoliteのユーザ設定も追加しておかないといけないと思う)
htpasswd /var/lib/gitolite3/gitolite-http-authuserfile ユーザ名

debianでgitolite3をインストール

jessie/testing(2013/8/11)です。

sshのkeyを作る

適当な場所で、
$ ssh-keygen -t rsa -f gitkey
gitkey.pubをgitoliteをインストールする装置にコピーする。 名前は固定ではない。gitkeyでなくてもいい。

gitoliteをインストール

以下を実行
$ apt-get install gitolite3
基本デフォルトで、"Administrator's SSH key"を聞かれた時に、 さっき作ったkeyの公開鍵を(gitkey.pub)のパスを指定する。

管理者の設定

/home/ユーザ名/.ssh/ 以下にさっき作ったkeyの秘密鍵をコピーする。
/home/ユーザ名/.ssh/config に以下を追加する。
Host gitoliteをインストールした装置
IdentityFile /home/ユーザ名/.ssh/gitkey
User gitolite3
HostName gitoliteをインストールした装置
以下を行ってエラーでなければとりあえずインストール完了。
$ git clone gitolite-admin:gitolite-admin