Skip to content

Instantly share code, notes, and snippets.

@taichi
Last active December 13, 2015 23:49
Show Gist options
  • Save taichi/4994025 to your computer and use it in GitHub Desktop.
Save taichi/4994025 to your computer and use it in GitHub Desktop.
gitblit を ubuntu12.04.01 LTS にインストールした。(2013/02)

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

JVMのインストール

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

GitBlitのインストール

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

GitBlitの初期設定

vi /opt/gitblit/current/data/gitblit.properties

HTTPS接続する事を強く推奨されているが、とりあえず8080ポートで実行する。

server.httpPort=8080
server.httpBindInterface=git.example.co.jp

LDAPによる認証設定

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をリバースプロキシとして利用する。

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 example@example.co.jp

        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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment