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
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の方がパッケージでインストールできる分楽だと思います。