Githubクローン界の新星 GitBucket を Ubuntu 12.04 で動かす


**2014/05/01 : 公開当初の情報から非常に古くなっているため、一部修正しました。**

@takezoeさんが作っているGitHubクローンである[GitBucket](https://github.com/takezoe/gitbucket)を動かしてみたのでそのメモ。Ubuntu 12.04 LTS 64bit でのお話。

GitBucketは、最低限のレポジトリ管理は可能ですが、いくつかの大事な機能はまだ作成中とのこと。（例えばpull request） **（執筆当初の古い情報です。現在はバッチリプルリクできます。）**

Scalaで書かれているというだけでも十分心くすぐるアプリになってます。(Scalatra + Slick + twirl)
最近画面のあるWebアプリに触れてなかったので、勉強の題材としてもいいかなと思って触ってみてます。 (RESTでJSONしか返してくれないインフラ構築Webアプリ？には毎日触れてたけど・・・)

GitBucketを動かすのは、他の類似のgitlab等と比較すると圧倒的に簡単でリリースされてるwarファイルを TomcatやJettyにデプロイするだけである。
[GitBucketのリリースページ](https://github.com/takezoe/gitbucket/releases)
もしくは開発版を動かしたい場合はsbtを使用すればよい。
バージョンアップも新しいバージョンのwarファイルに置き換えて再起動するだけでよい。実に簡単ですね。（DBマイグレーション等も起動時自動で実施してくれる）
簡単すぎてinstall.shやsetup.shのようなものも不要です。

**バージョン1.6より、Tomcat,jettyといったServlet Containerの準備が不要になっています。もっとも簡単な手順を示します。**

```
$ sudo apt-get install openjdk-7-jre
$ wget https://github.com/takezoe/gitbucket/releases/download/1.6/gitbucket.war
$ java -jar gitbucket.war
# なんとなく1.6をダウンロードしてますが、リリースページから最新版をダウンロードしてください
# http://localhost:8080/ をWebブラウザから開いてください
```

1. Tomcat
2. Jetty
3. sbt

とりあえずの３パターンをメモしておく。

### Tomcat で動かす

JDKはUbuntuのレポジトリにあるOpenJDKのパッケージを使うけどが、Tomcatはオフィシャルからtarボールをダウンロードしてきて展開したものを使う。

```shell
$ sudo apt-get install openjdk-7-jre
$ wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.tar.gz
$ tar xzf apache-tomcat-7.0.42.tar.gz
$ wget https://github.com/takezoe/gitbucket/releases/download/1.3/gitbucket.war
$ cp gitbucket.war apache-tomcat-7.0.42/webapps/
$ cd apache-tomcat-7.0.42/
$ ./bin/startup.sh
# デーモンで起動してくれるので、止める場合は以下を実施。
$ ./bin/shutdown.sh
```

以上でおしまい。これで8080をlistenしてTomcatが起動し、gitbucketが使用出来ます。簡単。
http://localhost:8080/gitbucket/

初期ユーザはroot/rootで、gitbucketのDBデータやgitレポジトリの実体は、すべて実行ユーザの`$HOME/gitbucket`というディレクトリ以下に保存されます。
お試ししていろいろ作ったり消したりしたら、このディレクトリを削除して再起動すればOK。

※ どうでもいい話。githubのリリースページからwarをダウンロードするとAmazon S3 からダウンロードされるようになってた。githubさんマジ洒落乙。

### Jettyで動かす

Jettyも同様に、JDKはUbuntuのレポジトリにあるOpenJDK 7 を使用する。

```shell
$ sudo apt-get install openjdk-7-jre
$ wget "http://eclipse.org/downloads/download.php?file=/jetty/stable-9/dist/jetty-distribution-9.0.4.v20130625.tar.gz&r=1" -O jetty-distribution-9.0.4.v20130625.tar.gz
$ tar xzf jetty-distribution-9.0.4.v20130625.tar.gz
$ wget https://github.com/takezoe/gitbucket/releases/download/1.3/gitbucket.war
$ cp gitbucket.war jetty-distribution-9.0.4.v20130625/webapps/
$ cd jetty-distribution-9.0.4.v20130625
$ ./bin/jetty.sh start
# デーモンで起動してくれるので、止める場合は以下を実施。
$ ./bin/jetty.sh stop
```

### sbtで動かす

Windowsの場合は、sbt.batがレポジトリに入ってるしドキュメントもあるのでそれを見るのが正解。 [GitBucketの開発者向けドキュメント](https://github.com/takezoe/gitbucket/wiki/HowToRun)
OSが変わっても、やり方はほぼ変わんないけど、せっかくだから書いておく。
**UNIXユーザのためにsbt.shもリポジトリに入りました。**

* 必要なパッケージをインストールする （ githubからソースを取得するのでgitを、Scalaで書かれているのでJDKとして OpenJDKを入れる。）


```shell
$ sudo apt-get install git openjdk-7-jdk
```

* gitbucket を cloneしてくる

```shell
$ git clone https://github.com/takezoe/gitbucket.git
$ cd gitbucket
```

* 実行！

```shell
# とりあえず動かす（テスター向け）初回はjarのダウンロードが始まるので結構時間かかります。。。
$ ./sbt.sh ~container:start

# 開発者向けのCCモードで使う
$ ./sbt.sh
…
> container:start
…
> ~ ;copy-resources;aux-compile
```