GitbucketをMacにインストールする

GitリモートリポジトリはBitbucketを普段使いしているが、
サンプルなどあんまりプッシュしすぎると煩雑になるので、
もっと気楽に使うリポジトリとしてGitbucketをMacに導入する

Apacheのインストール

MacにデフォルトでインストールされているApacheを使用する
割と新しいバージョンがインストールされている

$ apachectl -v
Server version: Apache/2.4.9 (Unix)
Server built:   Sep  9 2014 14:48:20

起動/終了確認

$ sudo apachectl start
http://localhost/ へのアクセスを確認
$ sudo apachectl stop

Apache Tomcatのインストール

http://tomcat.apache.org/ から apache-tomcat-8.0.18.zip ダウンロードして
~/Applications/apache-tomcat-8.0.18 に設置する

起動/終了確認

$ cd ~/Applications/apache-tomcat-8.0.18
$ ./startup.sh
http://localhost:8080/ へのアクセスを確認
$ ./shutdown.sh

Apache Tomcatの管理画面にアクセスできるようにする

変更前

<tomcat-users xmlns="http://tomcat.apache.org/xml"
...
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->
</tomcat-users>

変更後

<tomcat-users xmlns="http://tomcat.apache.org/xml"
...
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-status"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <user username="tomcat" password="tomcat" roles="admin-gui,admin-script,manager-gui,manager-status,manager-script,manager-jmx"/>
</tomcat-users>

Gitbucketのインストール

https://github.com/takezoe/gitbucket から gitbucket.war をダウンロードして
~/Applications/apache-tomcat-8.0.18/webapps/gitbucket.war に設置する

起動/終了確認

$ cd ~/Applications/apache-tomcat-8.0.18
$ ./startup.sh
http://localhost:8080/gitbucket/ へのアクセスを確認
$ ./shutdown.sh

Gitbucketのホームディレクトリを変更する

リポジトリのバックアップも考慮してGitbucketのホームディレクトリをDropbox以下に設定する
Tomcatが展開したgitbucketディレクトリ内の設定ファイルweb.xmlを変更する

$ cd /Applications/apache-tomcat-8.0.18/webapps/gitbucket/WEB-INF/
$ cp web.xml web.org.xml
$ vi web.xml

変更前

  <!-- ===================================================================== -->
  <!-- Optional configurations -->
  <!-- ===================================================================== -->
  <!--
  <context-param>
    <param-name>gitbucket.home</param-name>
    <param-value>PATH_TO_DATADIR</param-value>
  </context-param>
  -->

変更後

  <!-- ===================================================================== -->
  <!-- Optional configurations -->
  <!-- ===================================================================== -->
  <context-param>
    <param-name>gitbucket.home</param-name>
    <param-value>/Users/user/Dropbox/Gitbucket</param-value>
  </context-param>

起動/終了確認

$ cd ~/Applications/apache-tomcat-8.0.18
$ ./startup.sh
http://localhost:8080/gitbucket/ へのアクセスを確認
$ ./shutdown.sh

Gitbucketのデフォルトホームディレクトリは削除しておく

$ rm -rf ~/.gitbucket

ApacheとTomcatの連携

Tomcatの設定

HTTP Connectorを無効化してHTTP/1.1の8080ポート待ち受けを停止
変更前

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

変更後

    <!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->

AJP Connectorが有効なことを確認

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Apacheの設定

$ sudo cp /etc/apache2/httpd.conf /etc/apache2/httpd.org.conf
$ sudo vi /etc/apache2/httpd.conf

以下のモジュールが有効になっていることを確認する

LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so

httpd.confでは
Include /private/etc/apache2/other/*.conf
と定義されており、otherディレクトリのconfを読み込むようなので
other/gitbucket.confを作成して/gitbucket/の転送先を定義する
ちなみに、/etcはシンボリックリンクで/private/etcを指す

$ sudo vi /etc/apache2/other/gitbucket.conf

内容は以下のとおり、

<Location /gitbucket/>
    ProxyPass ajp://localhost:8009/gitbucket/
</Location>

起動/終了確認

$ cd ~/Applications/apache-tomcat-8.0.18
$ ./startup.sh
$ sudo apachectl start
http://localhost/gitbucket/ へのアクセスを確認
$ ./shutdown.sh
$ sudo apachectl stop