GitBucketの導入について
Tomcatで動作するオープンソースのGitHubクローン。プライベートなGitHubが欲しいけどGitHubの有料サービスだと都合が悪いときによいのかも。個人的にはマネージドサービス好きじゃないし。
このGitBucketを導入し、httpd経由でアクセスするように設定する。Tomcatとか詳しくないし、慣れているhttpdの方が設定やりやすいので。
設定手順
前提条件
- GitBucket 4.18.0
- CentOS 7
- Tomcat 7
- httpd 2.4
- インストール先サーバにはGitBucket以外のWebサービスも稼働させたい
- 複数のホスト名を付け、GitBucketにはgit.yourhost.yourdomainというホスト名でアクセス出来るようにする
- インストール先パスのgitbucketが自動的に補完されるようにする
- HTTPSでもアクセスできるようにする
- サーバ証明書はLet's Encryptでマルチドメイン証明書を作成して利用するがここは省略
GitBucketのインストール
Tomcatのインストール
GitBucketを動作させるためにTomcatをインストールする。
# yum install -y tomcat
# yum info tomcat
tomcat.noarch 7.0.76-3.el7_4 @updates
tomcat-el-2.2-api.noarch 7.0.76-3.el7_4 @updates
tomcat-jsp-2.2-api.noarch 7.0.76-3.el7_4 @updates
tomcat-lib.noarch 7.0.76-3.el7_4 @updates
tomcat-servlet-3.0-api.noarch 7.0.76-3.el7_4 @updates
GitBucketパッケージの入手
GitBucketのGitHubリポジトリで最新版のリリースを確認する。gitbucket.warをダウンロードするか、ダウンロードURLをコピーしておく。
# yum install -y wget
# cd /usr/local/src/
# wget https://github.com/gitbucket/gitbucket/releases/download/4.18.0/gitbucket.war
GitBucketパッケージのデプロイ
Tomcatのwebapp dirにGitBucketのWARファイルをコピーする。
# cd /var/lib/tomcat/webapps/
# cp gitbucket.war /var/lib/tomcat/webapps/
Tomcatを起動するとWARは自動でデプロイされる。SELinuxは後でまとめて設定するためpermissiveモードにしておく。
# setenforce 0
# systemctl start tomcat
# systemctl enable tomcat
WebブラウザでGitBucketのURLにアクセスして動作確認する。インストール先ホスト名がgit.yourhost.yourdomainなら http://git.yourhost.yourdomain:8080/gitbucket/ になる。
GitBucketのログインページが表示されれば成功。Firewalldなどでアクセス出来ない場合はこの動作確認だけアクセスが出来るように変更する。終わったらアクセス出来ないようにして問題ない。
httpdとの連携
httpdをインストールする。HTTPSでアクセスできるようにmod_sslも追加する。
# yum install -y httpd mod_ssl
mod_proxy_ajpが存在することを確認する。
# cat /etc/httpd/conf.modules.d/00-proxy.conf
(snip)
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
(snip)
HTTP用の設定を記述する。
# vi /etc/httpd/conf.d/gitbucket.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerName git.yourhost.yourdomain
Redirect / /gitbucket/
ProxyPass /gitbucket/ ajp://localhost:8009/gitbucket/
<Location />
# アクセス制限とか
</Location>
</VirtualHost>
# systemctl start httpd
# systemctl enable httpd
http://git.yourhost.yourdomain にWebブラウザでアクセスできることを確認する(gitbucket/ は自動的に補完される)。
必要に応じてSSLの設定をする。
# vi /etc/httpd/conf.d/ssl.conf
(snip)
NameVirtualHost *:443
<VirtualHost _default_:443>
(snip)
</VirtualHost>
<VirtualHost *:443>
ServerName git.yourhost.yourdomain
Redirect / /gitbucket/
ProxyPass /gitbucket/ ajp://localhost:8009/gitbucket/
<Location />
# アクセス制限とか
</Location>
SSLEngine on
SSLCertificateFile /path/to/certs/cert.pem
SSLCertificateKeyFile /path/to/certs/privkey.pem
SSLCertificateChainFile /path/to/certs/chain.pem
</VirtualHost>
SELinuxへの対応
とりあえずSELinuxをEnforcingに戻す。
# setenforce 1
audit2allowコマンドを使ってSELinux用のルールを作成する。