gitblit を ubuntu12.04.01 LTS にインストールした。(2013/02)
gitblit は、Javaのみで実装されたGitサーバプロセスです。
タスクトラッカやプルリクエストの様な機能はありません。
フェデレーションというリポジトリを自動的にコピーする為の高水準な機能や、
リポジトリへのアクセス権限を柔軟に設定出来る機能があります。
リポジトリへのアクセス権限設定をLDAPと上手く連携する事も出来ます。
面白い機能としては、GitのコミットフックをGroovyで記述する事が出来ます。
lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 12.10
Release: 12.10
Codename: quantal
- /etc/environment に HTTPプロキシの設定を追加。
http_proxy=http://proxy.example.co.jp:8000
https_proxy=http://proxy.example..co.jp:8000
- 専用ユーザの追加
sudo adduser gitblit
sudo usermod -aG sudo gitblit
su - gitblit
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
cd
sudo mkdir -p /opt/gitblit
sudo chown gitblit:gitblit /opt/gitblit
VERSION=1.2.1
wget https://gitblit.googlecode.com/files/gitblit-$VERSION.zip
mkdir /opt/gitblit/$VERSION
cd /opt/gitblit/$VERSION
jar xvf ~/gitblit-$VERSION.zip
ln -s /opt/gitblit/$VERSION /opt/gitblit/current
- 起動用のシェルスクリプトをインストールしたディレクトリ構成に併せて変更する。
vi /opt/gitblit/current/gitblit-ubuntu
GITBLIT_PATH=/opt/gitblit/current
GITBLIT_BASE_FOLDER=${GITBLIT_PATH}/data
- Javaプロセス用のプロキシ設定を行う。
vi /opt/gitblit/current/java-proxy-config.sh
PROXY_HOST=http://proxy.example.co.jp
PROXY_PORT=8080
- OSのブートに併せてGitBlitが起動する様に設定する。
sudo ln /opt/gitblit/current/gitblit-ubuntu /etc/init.d/gitblit
sudo chmod +x /etc/init.d/gitblit
sudo update-rc.d gitblit defaults
vi /opt/gitblit/current/data/gitblit.properties
HTTPS接続する事を強く推奨されているが、とりあえず8080ポートで実行する。
server.httpPort=8080
server.httpBindInterface=git.example.co.jp
LDAPによる認証は本家のマニュアルを読む。但し、以下の設定はちょっと分かり辛いのでメモ。
realm.userService = com.gitblit.LdapUserService
実はソースコードを読むのが一番分かり易い。
log4j.propertiesをデフォルトのものから変更して、以下の様にGitBlitを起動する。
- log4j.custom.properties
log4j.logger.com.gitblit=DEBUG
java -Dlog4j.configuration=file:///opt/gitblit/current/log4j.custom.properties -jar gitblit.jar --baseFolder data
特に自前の設定ファイルはURLで指定しなければならないので要注意。(太一はサクっとハマった…orz)
Apacheをプロキシとして立てるのは、
- 将来的にSSLの処理をApacheにやらせたい
- バージョンアップ等でGitBlitを停止する際にもキチンとエラーページを出力したい
- 想定に反してユーザが急に増えた時に簡単なロードバランサとして使いたい
等、管理し易くする為です。
sudo apt-get install apache2
sudo a2enmod proxy_http
- プロキシの為の設定を記述する。
sudo vi /etc/apache2/mods-available/proxy.conf
<IfModule mod_proxy.c>
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
</IfModule>
- バーチャルホストの設定を記述する。
ApacheはURLの中に%2Fが含まれていると問答無用で404を返すので、AllowEncodedSlashesをNoDecodeにします。
加えて、mod_proxyがパスの中に含まれている/(slash)をエンコードしない様に、ProxyPass ディレクティブにnocanonを付加します。
sudo vi /etc/apache2/sites-available/git_host
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName git.example.co.jp
AllowEncodedSlashes NoDecode
ProxyPass / http://localhost:8080/ nocanon
ProxyPassReverse / http://localhost:8080/
ErrorLog ${APACHE_LOG_DIR}/error_git_host.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- バーチャルホストの設定を有効にする。
sudo ln -s /etc/apache2/sites-available/git_host /etc/apache2/sites-enabled/git_host