PostgreSQL
Tomcat
fedora
GitBucket

GitBucket 4.28.0 インストール手順 with PostgreSQL 10 and Tomcat 8 on Fedora 28

Fedora 28にGitBucket 4.28.0 をインストールする手順をまとめてみた


はじめに

構築する環境は次の通り

Software
Version

Fedora
28

Git (cmd-tool)
2.17.1

SVN (cmd-tool)
1.10.2

PostgreSQL
10.5

OpenJDK
1.8.0.181

Tomcat8
8.5.32

GitBucket
4.28.0

Apache(Web Server)
2.4.34


ロケール設定の確認と設定

PostgreSQLをインストールする前に、Localeの設定を確認します。GitBucketで使いたい言語に合わせて設定しておきます。

# 現在の設定を確認

$ localectl status
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: n/a

# 日本語が設定できるか確認する
$ localectl list-locales | grep ja_JP

# 日本語が無い場合、言語パッケージを追加インストールする
$ dnf list glibc-lang\* | grep ja
glibc-langpack-ja.x86_64 2.27-32.fc28 updates
$ dnf install -y glibc-langpack-ja

# 日本語が設定できるか確認する
$ localectl list-locales | grep ja_JP
ja_JP.eucjp
ja_JP.utf8

# 日本語ロケールに設定変更し、反映する
$ localectl set-locale LANG=ja_JP.UTF-8
$ source /etc/locale.conf
$ localectl status
System Locale: LANG=ja_JP.UTF-8
VC Keymap: us
X11 Layout: n/a


タイムゾーンの設定

ロケールと合わせて、タイムゾーンも合わせておきましょう。

# 現在の設定を確認

$ timedatectl
Local time: 土 2018-09-08 04:19:25 UTC
Universal time: 土 2018-09-08 04:19:25 UTC
RTC time: 土 2018-09-08 04:19:25
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: no
systemd-timesyncd.service active: yes
RTC in local TZ: no

# 東京時間に設定
$ timedatectl set-timezone Asia/Tokyo

# も一度確認
$ timedatectl
Local time: 土 2018-09-08 13:20:12 JST
Universal time: 土 2018-09-08 04:20:12 UTC
RTC time: 土 2018-09-08 04:20:12
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
systemd-timesyncd.service active: yes
RTC in local TZ: no


Gitコマンドのインストール

GitBucketはGitコマンドツールが無くても動作しますが、バックアップやサーバー内での処理など、あると便利です。

(後から入れても良いです。)

# git-svnをインストールする

$ dnf install -y git-svn

$ git svn --version
git-svn version 2.17.1 (svn 1.10.2)


PostgreSQL のインストール

ここでは、pgdgのリポジトリを追加してインストールしていますが、標準のUpdatesリポジトリからでもインストールできます。

# リポジトリの追加

$ dnf install -y https://download.postgresql.org/pub/repos/yum/10/fedora/fedora-28-x86_64/pgdg-fedora10-10-4.noarch.rpm

# パッケージをインストール
$ dnf install -y postgresql10-server

# 初期化
$ /usr/pgsql-10/bin/postgresql-10-setup initdb

# 認証方式をパスワード認証(MD5)に設定
$ sed -i \
-e 's@^\(host *all *all *127.0.0.1\/32 *\).*@\1md5@' \
-e 's@^\(host *all *all *::1\/128 *\).*@\1md5@' \
/var/lib/pgsql/10/data/pg_hba.conf

# サービス自動起動を設定
$ systemctl enable postgresql-10
$ systemctl start postgresql-10

# GitBucket用のユーザーを追加
$ sudo -u postgres LANG=C createuser --createdb --encrypted --pwprompt gitbucket
Enter password for new role:
Enter it again:

# 必要に応じて権限追加
$ sudo -u postgres LANG=C psql -c "grant gitbucket to postgres;"
GRANT ROLE

# GitBucket用のDBを作成
$ sudo -u postgres sh -c 'createdb --encoding=UTF-8 --owner=gitbucket gitbucket'

# 意図する文字コードで作成できているか念のため確認
$ sudo -u postgres psql
psql (10.5)
Type "help" for help.

postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-----------+----------+-------------+-------------+-----------------------
gitbucket | gitbucket | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)

postgres=# \q


JDKのインストール

$ dnf install -y java-1.8.0-openjdk-devel


Tomcatのインストール

# tomcatユーザーの作成

$ dnf install -y tomcat-admin-webapps

# サービス自動起動を設定
$ systemctl enable tomcat
$ systemctl start tomcat


GitBucketのインストール

GitBucketのホームディレクトリを/var/gitbucketとしてインストールします。

プラグインはお好みで。

https://plugins.gitbucket-community.org/ で提供されるプラグインについては、GitBucketの[System Administration] からプラグイン・リポジトリを参照するように設定すれば取得できる。

# Tomcatを停止

$ systemctl stop tomcat

# GitBucketをダウンロード
$ cd /var/lib/tomcat/webapps
$ curl -OL https://github.com/gitbucket/gitbucket/releases/download/4.28.0/gitbucket.war

# プラグインをダウンロード
$ mkdir -p /var/gitbucket/plugins
$ cd /var/gitbucket/plugins/
$ curl -OL https://github.com/mrkm4ntr/gitbucket-network-plugin/releases/download/1.6.1/gitbucket-network-plugin_2.12-1.6.1.jar
$ curl -OL https://github.com/YoshinoriN/gitbucket-monitoring-plugin/releases/download/v3.1.0/gitbucket-monitorting-plugin_2.12-3.1.0.jar
$ curl -OL https://github.com/YoshinoriN/gitbucket-application-logs-plugin/releases/download/v1.0.0/gitbucket-application-logs-plugin_2.12-1.0.0.jar

# 権限変更
$ chown -R tomcat. /var/gitbucket/

# Tomcat設定ファイルに GITBUCKET_HOME の設定を追加
$ echo GITBUCKET_HOME=/var/gitbucket >> /etc/tomcat/tomcat.conf

# Tomcatを起動
$ systemctl start tomcat

# warファイルが展開されたことを確認
$ ll /var/lib/tomcat/webapps

# GitBucketの設定ファイルが生成されていることを確認
$ ll /var/gitbucket/
total 168
-rw-r--r--. 1 tomcat tomcat 163840 9月 8 14:01 data.mv.db
-rw-r--r--. 1 tomcat tomcat 205 9月 8 14:00 database.conf
drwxr-xr-x. 3 tomcat tomcat 4096 9月 8 14:00 plugins

# サービスの応答を確認
$ curl http://localhost:8080/gitbucket/


Apache(httpd)のインストール

# httpdインストール

$ dnf install -y httpd

# AJPポートへのプロキシ設定を追加
$ echo "ProxyPass /gitbucket ajp://localhost:8009/gitbucket" >> /etc/httpd/conf.d/httpd-proxy.conf

$ /usr/sbin/setsebool httpd_can_network_connect 1

# httpdの起動
$ systemctl enable httpd
$ systemctl start httpd

# サービスの応答を確認
$ curl http://localhost:80/
$ curl http://localhost:80/gitbucket/


SELinuxが原因でApacheとTomcat間が接続できない場合

Tomcatの8080ポートへのリクエストは返ってくるのに、Apacheの80番ポートで503エラーが発生する場合、SELinuxが原因でmod_proxyがエラーを起こしていることがあります。

/var/log/httpd/error_logファイルの中を参照し、"[proxy:error] ... Permission denied: ..."が記録されているのであれば、SELinuxそのものを無効にしてしまうか、次のコマンドでポリシーを書き換えてみます。

# 試しにブーリアン値を変更する

$ /usr/sbin/setsebool httpd_can_network_connect 1

# 上手くいくようであれば、再起動時も設定が保持されるように設定する
$ /usr/sbin/setsebool -P httpd_can_network_connect 1


接続先DBをPostgreSQLへ変更し、Tomcatを再起動

$ vi /var/gitbucket/database.conf

/var/gitbucket/database.conf


database.conf

db {

url = "jdbc:postgresql://localhost/gitbucket"
user = "gitbucket"
password = "gitbucket"
# url = "jdbc:h2:${DatabaseHome};MVCC=true"
# user = "sa"
# password = "sa"
# connectionTimeout = 30000
# idleTimeout = 600000
# maxLifetime = 1800000
# minimumIdle = 10
# maximumPoolSize = 10
}


# Tomcat再起動

$ systemctl restart tomcat

ブラウザからアクセスし、無事表示されれば完了です。

お疲れ様でした。;-P


まとめ

標準のUpdatesリポジトリで比較的最新版が提供されているので、CentOS7で最新版を手動インストールすることを考えると、Fedora28の方がパッケージでインストールできる分楽だと思います。