redmineのアカウントでgitを使う方法

http(もしくはhttps)でgitのリポジトリを公開している場合に、
Redmineのアカウントでそのまま認証できると便利そうだったので
設定を行なってみました。

今回は、Ubuntu12.04とRedmine2.1.4の環境にRedmine.pmをインストールしました。

CentOSの時のメモと、違いはそんなに無さそうです。

設定方法はAlminiumの設定スクリプトを参考にさせて頂きました。

gitのインストール

gitのバージョンを最新にするため、sources.listファイルを編集します。

/etc/apt/sources.list
1
2
deb http://ppa.launchpad.net/git-core/ppa/ubuntu precise main
deb-src http://ppa.launchpad.net/git-core/ppa/ubuntu precise main

gitのリポジトリを登録します。

1
2
3
apt-get install python-software-properties
add-apt-repository ppa:git-core/ppa
apt-get update

gitをインストールします。

1
apt-get install git

Redmine.pmのインストール

Basic認証時にRedmineとDB連携するので、その処理に必要なライブラリをインストール

1
apt-get install libapache2-mod-auth-mysql libdigest-sha-perl libapache-dbi-perl libdbd-mysql-perl

RedmineがLDAP認証を使用している場合、以下も追加でインストール

1
apt-get install libauthen-simple-ldap-perl

Redmine.pmのインストールを行います。

一部、Perlのクラス名を変更しないと動かない箇所があるので修正しつつコピーします。

1
2
mkdir -p /etc/perl/Apache/Authn
cat /var/www/redmine/extra/svn/Redmine.pm |sed 's/Digest::SHA1/Digest::SHA/g' > /etc/perl/Apache/Authn/Redmine.pm

apacheのconfの記述

まずは、gitリポジトリ用のディレクトリを用意します。

この例ではgitリポジトリ用のディレクトリ名は

/path/to/git/reposとして説明します。

1
mkdir -p /path/to/git/repos

Git用のconfを記述します。

1
vi /etc/apache2/sites-available/vcs
/etc/apache2/sites-available/vcs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PerlLoadModule Apache::Authn::Redmine
PerlLoadModule Authen::Simple::LDAP #LDAP認証を使う場合のみ必要

SetEnv GIT_PROJECT_ROOT /path/to/git/repos/
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

<Location /git/>
PerlAccessHandler Apache::Authn::Redmine::access_handler
PerlAuthenHandler Apache::Authn::Redmine::authen_handler

AuthType Basic
AuthName Git
Require valid-user

RedmineDSN "DBI:mysql:database=redmine_db;host=192.168.1.xx"
RedmineDbUser "redmine_db_user"
RedmineDbPass "**********************"
RedmineGitSmartHttp yes
</Location>

モジュールとconfを有効にします。

1
2
a2enmod auth_mysql
a2ensite vcs

confファイルに誤りが無いことを確認し、apache再起動します。

1
2
apache2ctl configtest
service apache2 restart

Gitのリポジトリテスト

Redmineにプロジェクトを作成し、プロジェクトの識別子をgit_testにします。

プロジェクトメンバーに、gitリポジトリにアクセスさせたいメンバーを追加します。

次に、以下の手順でgitのリポジトリの作成を行います。

1
2
3
4
5
6
cd /path/to/git/repos/
mkdir git_test
cd git_test
git --bare init --shared
git config --file config http.receivepack true
git update-server-info

次に、プロジェクトの設定のリポジトリで、上記のリポジトリの追加を行います。

(管理の設定のリポジトリで、gitを有効にしておく必要があります)

追加後、以下のコマンドでリポジトリが使えるか試します。

1
git clone http://サーバーのIPもしくはドメイン名/git/git_test

ユーザー名とパスワードを聞かれるので、Redmineのログインユーザー名とパスワードを入力します。

設定がうまく出来ていれば、認証成功後にcloneが行われます。