Windows に Gitbucket をインストールする (Apache - Tomcat - PostgreSQL連携)

 

2018年09月17日 GitBucket
Windows に Gitbucket をインストールする (Apache - Tomcat - PostgreSQL連携)

Windowsのローカル環境に無料のGitサーバ「Gitbucket」をインストールする手順について説明します。Apacheと連携させたTomcat上で動作させ、PostgreSQLと連携させる方法で説明します。

 

目次

  1. 本ページで利用するチートシート
  2. 動作確認環境
  3. GitBucketとは?
  4. GitBucketをダウンロードする
  5. GitBucket単体で起動する
  6. GitBucketをTomcat上で起動する
  7. Apache経由でGitBucketにアクセスする
  8. 利用するDBを「H2」→「PostgreSQL」に変更する

本ページで利用するチートシート

本ページで利用するチートシート
# GitBucket起動コマンド
java -jar gitbucket.war

# GitBucket単体起動URL
http://localhost:8080

# Tomcat単体起動URL
http://localhost:8080/gitbucket/

# Apache設定ファイル(httpd.conf)の修正内容
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

<IfModule proxy_module>
  <IfModule proxy_ajp_module>
    AllowEncodedSlashes NoDecode
    ProxyPreserveHost On
    ProxyPass /gitbucket ajp://localhost:8009/gitbucket
    ProxyPassReverse /gitbucket ajp://localhost:8009/gitbucket
  </IfModule>
</IfModule>

# Tomcat設定ファイル(server.xml)の修正内容
<!--
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
-->

# Apache + Tomcat連携起動URL
http://localhost/gitbucket/

# PostgreSQLのログインコマンド
psql -U ユーザ名
C:\etc\pgsql\bin\psql -U postgres

# GitBucket用のロール作成コマンド
create role gitbucket with login password 'gitbucket';

# PostgreSQLロール一覧確認コマンド
\du

# GitBucket用のデータベース作成コマンド
create database gitbucket encoding 'UTF-8';

# GitBucketデータベース設定ファイル(database.conf)の修正内容
db {
  url      = "jdbc:postgresql://localhost:5432/gitbucket"
  user     = "gitbucket"
  password = "gitbucket"
#  connectionTimeout = 30000
#  idleTimeout = 600000
#  maxLifetime = 1800000
#  minimumIdle = 10
#  maximumPoolSize = 10
}

# GitBucket System Settings画面URL
http://localhost/gitbucket/admin/system

 

 

動作確認環境

本ページの内容は、以下の環境で動作確認をしています。

  • Windows 10 Home Edition 64bit
  • Java SE Development Kit 8u181
  • Apache 2.4 Win64
  • Apache Tomcat 9.0 64bit
  • PostgreSQL 10.5 Windows x86-64
  • GitBucket 4.28.0

 

本ページの内容は、以下のページの手順であらかじめ各ソフトウェア・ツールがインストールされていることを前提に説明します。

 

もし未インストールのものがあるようでしたら、上記ページを参考に各ソフトウェア・ツールをインストールしておいてください。

 

 

GitBucketとは?

gitbucket - GitHub
gitbucket – GitHub
  • GitBucket、Scalaで開発されたサーバ上で動作するGitアプリです。
  • GitBucket、オープンソースで無料で利用することができます。
  • GitBucketを利用すると、手軽にGitサーバを構築することができます。
  • GitBucket、GitHubのクローンアプリなので、GitHubライクな利用ができます。

 

 

GitBucketをダウンロードする

Releases · gitbucket/gitbucket · GitHub
Releases · gitbucket/gitbucket · GitHub
  1. GitBucketは、WAR形式(Java EE アプリケーションのパッケージ形式)で配布されています。
  2. GitHub上の「GitBucketのリリースページ」からダウンロードできます。
  3. ダウンロードしたいバージョンの「gitbucket.war」リンクを選択して、ファイルをダウンロードします。
  4. ダウンロード手順は以上です。

 

 

GitBucket単体で起動する

  1. GitBucketには、Jettyがビルトインされているため、それ単体で起動することが可能です。
  2. 起動するためには、コマンドプロンプトで以下のコマンドを実行します。
GitBucket起動コマンド
java -jar gitbucket.war

 

Windows セキュリティの重要な警告
Windows セキュリティの重要な警告
  1. 初回起動時のみ「Windows セキュリティの重要な警告」ダイアログが表示されます。
  2. 通信を許可する範囲について、今回は「プライベートネットワーク」のみにチェックをつけます。
  3. アクセスを許可する」ボタンを選択します。

 

GitBucket起動結果
GitBucket起動結果
  1. コマンドプロンプトに上のような表示されます。
  2. GitBucket単体起動の手順は以上です。

 

 

動作確認

  1. ブラウザで「http://localhost:8080」にアクセスします。

 

GitBucket トップページ
GitBucket トップページ
  1. 上のようなGitBucketの画面が表示されたら、起動成功です。
  2. GitBucketにログインするためには、まずは画面右上の「Sign in」を選択します。

 

GitBucket ログインページ
GitBucket ログインページ
  1. Username「root」、Password「root」でログインすることができます。

 

 

停止方法

  1. 以下のいずれかでGitBucketは停止することができます。
    • 起動中のコマンドプロンプトで「Ctrl+C」を押す。
    • 起動中のコマンドプロンプトを閉じる。

 

 

GitBucketをTomcat上で起動する

構成図① Tomcat
構成図① Tomcat
  1. GitBucketは、サーブレット3.0をサポートしているコンテナ上で動作させることができます。
  2. ここでは、サーブレット3.0をサポートしている「Tomcat 9.0」上で、GitBucketを起動させる手順について説明します。
  3. まずは「Tomcat」を起動します。
  4. ダウンロードした「gitbucket.war」をTomcatインストールフォルダ配下の「webapps」フォルダ内に配置します。
NOTE :
Tomcatインストール (Windows編)」どおりにTomcatをインストールしている場合は以下のフォルダに配置します。
webappsフォルダの場所
C:\var\share\tomcat\webapps
webappsフォルダ
webappsフォルダ
  1. webapps」フォルダ内に「gitbucket」フォルダが自動で生成されたら、GitBucketの配備完了です。
自動生成されない場合
    以下のような原因が考えられます。
  • Tomcat」が起動していない
  • webapps」フォルダの「autoDeploy」が有効になっていない

 

 

動作確認

  1. ブラウザで「http://localhost:8080/gitbucket/」にアクセスします。
GitBucket トップページ
GitBucket トップページ
  1. 上のようなGitBucketの画面が表示されたら、GitBucketの起動成功です。

 

 

Apache経由でGitBucketにアクセスする

構成図② Apache + Tomcat
構成図② Apache + Tomcat
  1. Tomcatは、簡易なWebサーバ機能を持っています。
NOTE :
Tomcat単体で、ブラウザから「http://localhost:8080/gitbucket/」にアクセスできたのはそのためです。

 

  1. デバッグ用途で運用する場合はこのままで問題ありませんが、本格運用を考慮するのであれば、設定の柔軟性、拡張性、などの観点から専用のWebサーバを用意した方が良いです。
  2. ここでは、「Apache(Webサーバ)をプロキシサーバにしてTomcatと連携させGitBucketにアクセス」する手順について説明します。

 

 

Apache側の対応

  1. Apache側では、「リバースプロキシサーバにする」ための設定をします。
  2. 設定ファイル「httpd.conf」の143行付近に以下のような記載があると思います。
  3. ここではApacheでプロキシサーバ機能を利用するためのモジュールを読み込む部分がコメントアウトされています。
143行付近の修正前内容(httpd.conf)
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
NOTE :
Apacheインストール (Windows編)」どおりにApacheをインストールしている場合、 設定ファイルの場所は以下のとおりです。
設定ファイルの場所
C:\apache\conf\httpd.conf

 

  1. 以下のように143行付近のコメントを外して、プロキシサーバ機能のモジュールを読み込むようにします。
143行付近の修正後内容(httpd.conf)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

 

  1. つづいて以下の記述をファイルに末尾に追記します。
  2. これは「http://localhost/gitbucket」へのアクセスを「ajp://localhost:8009/gitbucket/」 にリバースプロキシさせるための設定です。
Apacheのリバースプロキシ設定(httpd.conf)
<IfModule proxy_module>
<IfModule proxy_ajp_module>
  AllowEncodedSlashes NoDecode
  ProxyPreserveHost On
  ProxyPass /gitbucket ajp://localhost:8009/gitbucket
  ProxyPassReverse /gitbucket ajp://localhost:8009/gitbucket
</IfModule>
</IfModule>

 

  1. 設定ファイルの変更を適用するために、Apacheを再起動します。
  2. Apache側の対応は以上です。

 

 

Tomcat側の対応

  1. Tomcat側では、Webサーバとしての機能は不要となるため「Webサーバ機能を無効にする」設定をします。
  2. 設定ファイル「server.xml」の69行付近に以下のような記述があると思います。
69行付近の修正前内容(server.xml)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
NOTE :
Tomcatインストール (Windows編)」どおりにTomcatをインストールしている場合、 設定ファイルの場所は以下のとおりです。
webappsフォルダの場所
C:\var\share\tomcat\conf\server.xml

 

  1. 以下のように、この記述をコメントアウトすることで「Webサーバ機能が無効(HTTP通信を受け付けない)」になります。
69行付近の修正後内容(server.xml)
<!--
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
-->

 

  1. ちなみに以下のような記述が116行付近にあります。
リバースプロキシを許容する設定(server.xml)
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 

  1. これは「AJP通信をポート番号8009で受け付ける」という設定です。
  2. AJP (Apache JServ Protocol)とは、ApacheとTomcatを連携するためのプロトコルです。
  3. つまりこの設定により「ApacheからのリバースプロキシをTomcatが受け付けるこができる」ようになります。
  4. 設定ファイルの変更を適用するために、Tomcatを再起動します。
  5. Tomcat側の対応は以上です。

 

 

動作確認

  1. ブラウザで「http://localhost/gitbucket/」にアクセスします。
GitBucket トップページ
GitBucket トップページ
  1. 上のようなGitBucketの画面が表示されたら、ApacheとTomcatの連携が正常に動作しています。
  2. 次に、ブラウザで「http://localhost:8080/gitbucket/」にアクセスします。
アクセス不可ページ
アクセス不可ページ
  1. 上のようにアクセス不可ページ表示されたら、TomcatのWebサーバ機能が無効になっています。

 

 

利用するDBを「H2」→「PostgreSQL」に変更する

構成図③ Apache + Tomcat + PostgreSQL
構成図③ Apache + Tomcat + PostgreSQL
  1. GitBucketは、標準で内蔵の「H2」という組み込みデータベースで動作しています。
  2. H2」はデータの保全性に問題があるため、なるべくデータベースを変更したほうがよいです。
  3. ここでは、「GitBucketが利用するデータベースをH2からPostgreSQLに変更」する手順について説明します。

 

 

PostgreSQL側の対応

  1. PostgreSQL側では、GitBucket用のロールとデータベースを作成します。
  2. まずは、以下のコマンドでPostgreSQLにログインします。
PostgreSQLのログインコマンド
psql -U ユーザ名
NOTE :
PostgreSQLインストール (Windows編)」どおりにPostgreSQLをインストールしている場合、 以下のコマンドになります。
PostgreSQLのログインコマンド
C:\etc\pgsql\bin\psql -U postgres

 

PostgreSQL パスワード入力
PostgreSQL パスワード入力
  1. パスワードの入力を求められるため、パスワードを入力し「Enter」キーを押します。
  2. ログインに成功したら、まずは以下のコマンドで「GitBucket用のロール」を作成します。
GitBucket用のロール作成コマンド
create role gitbucket with login password 'gitbucket';
NOTE :
ロール名とパスワードについては、任意の値で問題ありません。

 

PostgreSQL ロール確認
PostgreSQL ロール確認
  1. ロール作成が成功したかは、以下のコマンドで確認することができます。
PostgreSQLロール一覧確認コマンド
\du

 

  1. 次に、以下のコマンドで「GitBucket用のデータベース」を作成します。
GitBucket用のデータベース作成コマンド
create database gitbucket encoding 'UTF-8';

 

  1. CREATE DATABASE」のメッセージが表示されたら、データベースが正常に作成されています。
  2. PostgreSQL側の対応は以上です。

 

 

GitBucket側の対応

  1. GitBucket側では、データベースの参照先を「H2」→「PostgreSQL」に切り替えるためにGitBucketのデータベース設定ファイル内容を変更します。
  2. 設定ファイル(database.conf)の場所は以下のとおりです。
GitBucketのデータベース設定ファイルの場所
C:\Windows\System32\config\systemprofile\.gitbucket\database.conf

 

  1. database.conf」は、デフォルトで以下のような内容になっています。
修正前の内容(database.conf)
db {
  url = "jdbc:h2:${DatabaseHome};MVCC=true"
  user = "sa"
  password = "sa"
#  connectionTimeout = 30000
#  idleTimeout = 600000
#  maxLifetime = 1800000
#  minimumIdle = 10
#  maximumPoolSize = 10
}

 

  1. データベースの参照先を「PostgreSQL」にするためには、以下のように変更します。
修正後の内容(database.conf)
db {
  url      = "jdbc:postgresql://localhost:5432/gitbucket"
  user     = "gitbucket"
  password = "gitbucket"
#  connectionTimeout = 30000
#  idleTimeout = 600000
#  maxLifetime = 1800000
#  minimumIdle = 10
#  maximumPoolSize = 10
}

 

  1. 設定ファイルの変更を適用するために、Tomcatを再起動します。
  2. GitBucket側の対応は以上です。

 

 

動作確認

  1. ブラウザで「http://localhost/gitbucket/admin/system」にアクセスします。
NOTE :
未ログインであればログインします
System Settings画面
System Settings画面
  1. 上のように「DATABASE_URL」欄が以下の値になっていれば設定成功です。
PostgreSQLのDATABASE_URL
jdbc:postgresql://localhost:5432/gitbucket

 

 

 

 

Programming Style