オープンソースのGitHubクローンとして人気の「GitBucket」。動作させるのに複雑な設定が必要でなく、簡単に動かせるところが人気の要因の一つとなっています。
GitBucketは、Scalaで作られていて「java -jar gitbucket.war」とすれば動かすことができますが、本格的に運用したい場合、Jetty、Tomcat、GlassFishといったJavaサーブレット用のアプリケーションサーバーにデプロイして運用した方がなにかと便利かもしれません。
今回はOS X Yosemiteで、Tomcatを使い最新版GitBucketを運用する方法を説明します。
Tomcat 8の準備
Scala 2.11.0によると、GitBucket 2.2で、Scala 2.11、Scalatra 2.3、Slick 2.1が導入され、Scala 2.11がServlet 3.1を要求しています。このためGitBucket 2.2以降では、Tomcat 8.xが必要となります。
Tomcat 8をYosemiteで動かす方法に関しては以下記事を参考にしてください。
GitBucketのデータディレクトリの作成
まずgitbucketのデータディレクトリの場所決めます。
gitbucketは通常、$HOME/.gitbucketにデータを格納するため、Tomcatの実行ユーザーで同ディレクトリが作成できることが必要となります。
実行ユーザーが_wwwの場合、/Library/WebServer/.gitbucketがデフォルト。データディレクトリを変更したい場合、環境変数GITBUCKET_HOMEで指定します。環境変数はTomcatの起動スクリプト、例えばtomcat-launchd.sh等で設定すれば良いでしょう。
export GITBUCKET_HOME=/opt/home/gitbucket
Tomcatの実行ユーザーで、GITBUCKET_HOMEが作成できるかどうか分からない場合、手作業であらかじめディレクトリを作成しておくほうがトラブルが少ないかもしれません。以下、GITBUCKET_HOMEが/opt/home/gitbucketの場合。
# cd /opt/home
# mkdir gitbucket
# chown -R _www gitbucket
# chgrp -R _www gitbucket
GitBucketのデプロイ
Releasesから最新版のgitbucket.warをダウンロードし、Tomcatのwebappsディレクトリにコピーします。ブラウザでhttp://localhost:8080/gitbucketを開、アクセスできれば成功です。
ユーザー名:root、パスワード:rootでログインできます。
ユーザーの作成
rootのままだとカッコ悪いので、Administrationメニューで、普段使い用のユーザーを作成しておきましょう。
sshアクセスの有効化
GitBucketはsshサーバー機能を内蔵しているため(いわゆるsshdとは別物です)、リポジトリアクセスにsshを使うこともできます。
そのためには、Administrationメニューから、System Settingsを開いてBase URLと、SSH accessの設定を行います。
Base URLはgitbucketにアクセスするためのURLで、例えば「srcw.net」というサーバーで動かしている場合「http://srcw.net:8080/gitbucket」となります。外部に公開せず自分だけでアクセスできれば良い場合、「http://macmini:8080/gitbucket」 (macminiはホスト名)みたいにすることもできます。
SSH accessは、「Enable SSH access to git repository」にチェックをいれるだけです。ポート番号はそのままで良いです。
そうするとリポジトリにsshを使ったアクセスが可能になります。URLは「ssh://root@maroon:29418/root/sample.git」のような形式となります(ポート番号が先ほど設定したポート番号になっていることに注意してください)。
ただしsshアクセスする場合ユーザーのプロファイル設定でsshの公開鍵を登録しておく必要があります。自分が使いたい公開鍵をKeyのところに貼り付けて保存しておきましょう(タイトルは何でもよい)。
まとめ
GitBucketをMacで運用する方法を説明しました。Tomcatにこだわらなければ、brew install gitbucketでインストールすることもできます。とりあえず動かしたいという場合、そちらのほうがてっとり速いかもしれません。
またhttpアクセスでパスワード入力を省略したい場合は、git-credential-osxkeychainを使うこともできます。