yano3nora
7/1/2017 - 8:16 AM

[GitBucket: note] GitBucket - GitHub clone Application. #git #gitbucket

[GitBucket: note] GitBucket - GitHub clone Application on Tomcat. #git #gitbucket #tomcat

OVERVIEW

GitHub クローンなコンセプトの OSS な Git サーバ。日本人の @takezoe 様個人開発。Scala 製で Java VM 環境で動作するため Apache で動かす場合は Tomcat が必須。GitLab で良くね?とか言わない。

Plugins

インストールは GITBUCKET_HOME/plugins.jar おいて Tomcat 再起動で大体いける。

Installation

# java8 へアップデート
$ yum remove java-1.7.0-openjdk  # 古いの削除
$ yum install java-1.8.0-openjdk

# tomcat7 のインストール
$ yum -y install tomcat7 tomcat7-webapps tomcat7-admin-webapps

# tomcat7 の時刻合わせ
$ vim /usr/share/tomcat7/bin/setenv.sh
> CATALINA_OPTS='-Duser.timezone=Asia/Tokyo'
> export CATALINA_OPTS

# Tomcat 管理画面ディレクティブを編集
$ vim /usr/share/tomcat7/conf/tomcat-users.xml
> <role rolename="manager-gui"/>
> <role rolename="admin-gui"/>
> <user username="ユーザー名" password="パスワード" roles="manager-gui,admin-gui"/>  

# tomcat/webapps 配下へ gitbucket.war ぶち込む
$ cd /usr/share/tomcat7/webapps
$ wget https://github.com/gitbucket/gitbucket/releases/download/4.28.0/gitbucket.war
$ chmod -R 755 .gitbucket
$ chown -R tomcat:tomcat .gitbucket
$ service tomcat7 restart

# http://domain:8080/gitbucket/ へブラウザでアクセス
# 初回アクセス以降 gitbucket.war の存在するディレクトリ上に gitbucket / .gitbucket が生成される

Tomcat へ Apache 経由でアクセスさせる

ApacheとTomcatを連携させてみた

Installation で説明したインストール方法では、ポート 8080 で Tomcat が直にアクセスを捌くことになる。この場合 SSL/TLS 対応の際に Tomcat に証明書をインストールする必要が生じる。

KingSSL - Tomcat SSL/TLS 対応

Apache から https://server-name.com/gitbucket などで Tomcat 配下の ( /webapps 配下の ) アプリケーションにリクエストを流すには Apache から AJP ( Apache Java servlet Protocol ) を使ってプロキシ設定をする必要がある。

Apache httpd と Tomcat を連携させる方法

# 必要なモジュールがインストールされていることを確認
$ cat /etc/httpd/conf/httpd.conf | grep mod_proxy
> LoadModule proxy_module modules/mod_proxy.so
> LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

# プロキシ設定 ( 単純な Location 設定なのでこれだけで HTTPS もさばける )
$ vim /etc/httpd/conf/httpd.conf
> <Location /gitbucket >
>   ProxyPass ajp://localhost:8009/gitbucket
>   Order allow,deny
>   Allow from all
> </Location>

# Tomcat の AJP 受けポートが解放されていることを確認
$ cd /usr/share/tomcat7/conf
$ cat server.xml | grep protocol=\"AJP/1.3\"
> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

# Tomcat のデフォルト受けポート ( 8080 ) を無効化
$ vim server.xml
> <!--
> <Connector port="8080" protocol="HTTP/1.1"
>   connectionTimeout="20000"
>   redirectPort="8443" /> -->
> -->

# gitbucket の base_url を変更
$ vim /usr/share/tomcat7/webapps/.gitbucket/gitbucket.conf
> base_url=http\://www.example.com/gitbucket

TIPS & REFERENCES

SSH での初回接続

ssh -T ssh://git@登録してる ssh 用のドメイン

ファイルサイズ制限の緩和

https://qiita.com/ibuki2003/items/29b0b865f96ac319e4a6

$ vim /usr/share/tomcat7/conf/catalina.properties
> gitbucket.maxFileSize=134217728

メール通知

  1. System settings から SMTP 設定
  2. Notification チェック

Slack と Webhooks で連携させる

https://qiita.com/AkihiroTakamura/items/971cf758a813cc7d1ea5

情報が古いみたいで、今は GitHub Notifications (Legacy) を選択する必要あり。あとメンションを Slack 側につけるには <@name><!channel> みたいにやればイケる - 参考

バージョンアップ

CentOS上のGitBucketをアップデートする手順 Tomcat上で稼働しているGitBucketの更新手順

$ cd /usr/share/tomcat7/webapps
$ service tomcat7 stop

# 既存のGitbucketをバックアップ
$ mv gitbucket.war gitbucket.war.bak
$ mv gitbucket gitbucket.bak

# 最新バージョンをダウンロード & 展開
$ wget https://github.com/gitbucket/~~/gitbucket.war
$ unzip gitbucket.war -d gitbucket

$ service tomcat7 restart