Windowsのローカル環境に無料のGitサーバ「Gitbucket」をインストールする手順について説明します。Apacheと連携させたTomcat上で動作させ、PostgreSQLと連携させる方法で説明します。
目次
- 本ページで利用するチートシート
- 動作確認環境
- GitBucketとは?
- GitBucketをダウンロードする
- GitBucket単体で起動する
- GitBucketをTomcat上で起動する
- Apache経由でGitBucketにアクセスする
- 利用する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、Scalaで開発されたサーバ上で動作するGitアプリです。
- GitBucket、オープンソースで無料で利用することができます。
- GitBucketを利用すると、手軽にGitサーバを構築することができます。
- GitBucket、GitHubのクローンアプリなので、GitHubライクな利用ができます。
GitBucketをダウンロードする
- GitBucketは、WAR形式(Java EE アプリケーションのパッケージ形式)で配布されています。
- GitHub上の「GitBucketのリリースページ」からダウンロードできます。
- ダウンロードしたいバージョンの「gitbucket.war」リンクを選択して、ファイルをダウンロードします。
- ダウンロード手順は以上です。
GitBucket単体で起動する
- GitBucketには、Jettyがビルトインされているため、それ単体で起動することが可能です。
- 起動するためには、コマンドプロンプトで以下のコマンドを実行します。
GitBucket起動コマンド
java -jar gitbucket.war
- 初回起動時のみ「Windows セキュリティの重要な警告」ダイアログが表示されます。
- 通信を許可する範囲について、今回は「プライベートネットワーク」のみにチェックをつけます。
- 「アクセスを許可する」ボタンを選択します。
- コマンドプロンプトに上のような表示されます。
- GitBucket単体起動の手順は以上です。
動作確認
- ブラウザで「
http://localhost:8080
」にアクセスします。
- 上のようなGitBucketの画面が表示されたら、起動成功です。
- GitBucketにログインするためには、まずは画面右上の「Sign in」を選択します。
- Username「
root
」、Password「root
」でログインすることができます。
停止方法
-
以下のいずれかでGitBucketは停止することができます。
- 起動中のコマンドプロンプトで「Ctrl+C」を押す。
- 起動中のコマンドプロンプトを閉じる。
GitBucketをTomcat上で起動する
- GitBucketは、サーブレット3.0をサポートしているコンテナ上で動作させることができます。
- ここでは、サーブレット3.0をサポートしている「Tomcat 9.0」上で、GitBucketを起動させる手順について説明します。
- まずは「Tomcat」を起動します。
- ダウンロードした「gitbucket.war」をTomcatインストールフォルダ配下の「webapps」フォルダ内に配置します。
NOTE :
「Tomcatインストール (Windows編)」どおりにTomcatをインストールしている場合は以下のフォルダに配置します。
「Tomcatインストール (Windows編)」どおりにTomcatをインストールしている場合は以下のフォルダに配置します。
webappsフォルダの場所
C:\var\share\tomcat\webapps
- 「webapps」フォルダ内に「gitbucket」フォルダが自動で生成されたら、GitBucketの配備完了です。
自動生成されない場合
以下のような原因が考えられます。
以下のような原因が考えられます。
- 「Tomcat」が起動していない
- 「webapps」フォルダの「autoDeploy」が有効になっていない
動作確認
- ブラウザで「
http://localhost:8080/gitbucket/
」にアクセスします。
- 上のようなGitBucketの画面が表示されたら、GitBucketの起動成功です。
Apache経由でGitBucketにアクセスする
- Tomcatは、簡易なWebサーバ機能を持っています。
NOTE :
Tomcat単体で、ブラウザから「
Tomcat単体で、ブラウザから「
http://localhost:8080/gitbucket/
」にアクセスできたのはそのためです。
- デバッグ用途で運用する場合はこのままで問題ありませんが、本格運用を考慮するのであれば、設定の柔軟性、拡張性、などの観点から専用のWebサーバを用意した方が良いです。
- ここでは、「Apache(Webサーバ)をプロキシサーバにしてTomcatと連携させGitBucketにアクセス」する手順について説明します。
Apache側の対応
- Apache側では、「リバースプロキシサーバにする」ための設定をします。
- 設定ファイル「httpd.conf」の143行付近に以下のような記載があると思います。
- ここではApacheでプロキシサーバ機能を利用するためのモジュールを読み込む部分がコメントアウトされています。
143行付近の修正前内容(httpd.conf)
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
NOTE :
「Apacheインストール (Windows編)」どおりにApacheをインストールしている場合、 設定ファイルの場所は以下のとおりです。
「Apacheインストール (Windows編)」どおりにApacheをインストールしている場合、 設定ファイルの場所は以下のとおりです。
設定ファイルの場所
C:\apache\conf\httpd.conf
- 以下のように143行付近のコメントを外して、プロキシサーバ機能のモジュールを読み込むようにします。
143行付近の修正後内容(httpd.conf)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
- つづいて以下の記述をファイルに末尾に追記します。
-
これは「
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>
- 設定ファイルの変更を適用するために、Apacheを再起動します。
- Apache側の対応は以上です。
Tomcat側の対応
- Tomcat側では、Webサーバとしての機能は不要となるため「Webサーバ機能を無効にする」設定をします。
- 設定ファイル「server.xml」の69行付近に以下のような記述があると思います。
69行付近の修正前内容(server.xml)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
NOTE :
「Tomcatインストール (Windows編)」どおりにTomcatをインストールしている場合、 設定ファイルの場所は以下のとおりです。
「Tomcatインストール (Windows編)」どおりにTomcatをインストールしている場合、 設定ファイルの場所は以下のとおりです。
webappsフォルダの場所
C:\var\share\tomcat\conf\server.xml
- 以下のように、この記述をコメントアウトすることで「Webサーバ機能が無効(HTTP通信を受け付けない)」になります。
69行付近の修正後内容(server.xml)
<!--
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
- ちなみに以下のような記述が116行付近にあります。
リバースプロキシを許容する設定(server.xml)
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
- これは「AJP通信をポート番号8009で受け付ける」という設定です。
- AJP (Apache JServ Protocol)とは、ApacheとTomcatを連携するためのプロトコルです。
- つまりこの設定により「ApacheからのリバースプロキシをTomcatが受け付けるこができる」ようになります。
- 設定ファイルの変更を適用するために、Tomcatを再起動します。
- Tomcat側の対応は以上です。
動作確認
- ブラウザで「
http://localhost/gitbucket/
」にアクセスします。
- 上のようなGitBucketの画面が表示されたら、ApacheとTomcatの連携が正常に動作しています。
- 次に、ブラウザで「
http://localhost:8080/gitbucket/
」にアクセスします。
- 上のようにアクセス不可ページ表示されたら、TomcatのWebサーバ機能が無効になっています。
利用するDBを「H2」→「PostgreSQL」に変更する
- GitBucketは、標準で内蔵の「H2」という組み込みデータベースで動作しています。
- 「H2」はデータの保全性に問題があるため、なるべくデータベースを変更したほうがよいです。
- ここでは、「GitBucketが利用するデータベースをH2からPostgreSQLに変更」する手順について説明します。
PostgreSQL側の対応
- PostgreSQL側では、GitBucket用のロールとデータベースを作成します。
- まずは、以下のコマンドでPostgreSQLにログインします。
PostgreSQLのログインコマンド
psql -U ユーザ名
NOTE :
「PostgreSQLインストール (Windows編)」どおりにPostgreSQLをインストールしている場合、 以下のコマンドになります。
「PostgreSQLインストール (Windows編)」どおりにPostgreSQLをインストールしている場合、 以下のコマンドになります。
PostgreSQLのログインコマンド
C:\etc\pgsql\bin\psql -U postgres
- パスワードの入力を求められるため、パスワードを入力し「Enter」キーを押します。
- ログインに成功したら、まずは以下のコマンドで「GitBucket用のロール」を作成します。
GitBucket用のロール作成コマンド
create role gitbucket with login password 'gitbucket';
NOTE :
ロール名とパスワードについては、任意の値で問題ありません。
ロール名とパスワードについては、任意の値で問題ありません。
- ロール作成が成功したかは、以下のコマンドで確認することができます。
PostgreSQLロール一覧確認コマンド
\du
- 次に、以下のコマンドで「GitBucket用のデータベース」を作成します。
GitBucket用のデータベース作成コマンド
create database gitbucket encoding 'UTF-8';
- 「CREATE DATABASE」のメッセージが表示されたら、データベースが正常に作成されています。
- PostgreSQL側の対応は以上です。
GitBucket側の対応
- GitBucket側では、データベースの参照先を「H2」→「PostgreSQL」に切り替えるためにGitBucketのデータベース設定ファイル内容を変更します。
- 設定ファイル(database.conf)の場所は以下のとおりです。
GitBucketのデータベース設定ファイルの場所
C:\Windows\System32\config\systemprofile\.gitbucket\database.conf
- 「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
}
- データベースの参照先を「PostgreSQL」にするためには、以下のように変更します。
修正後の内容(database.conf)
db {
url = "jdbc:postgresql://localhost:5432/gitbucket"
user = "gitbucket"
password = "gitbucket"
# connectionTimeout = 30000
# idleTimeout = 600000
# maxLifetime = 1800000
# minimumIdle = 10
# maximumPoolSize = 10
}
- 設定ファイルの変更を適用するために、Tomcatを再起動します。
- GitBucket側の対応は以上です。
動作確認
- ブラウザで「
http://localhost/gitbucket/admin/system
」にアクセスします。
NOTE :
未ログインであればログインします
未ログインであればログインします
- 上のように「DATABASE_URL」欄が以下の値になっていれば設定成功です。
PostgreSQLのDATABASE_URL
jdbc:postgresql://localhost:5432/gitbucket