GitBucketをApache/GlassFishで構築する方法

こんにちわ!!
ゴルフWEB予約を担当してるデラです。 LL(主にPHP)やCI界隈の記事を書いていこうかと思っています。 今回はGitBucketをGlassFish上に構築する方法を紹介します。 GitBucket を GlassFish 上で構築することによって WEBのコントロールパネルが使いやすく、GitBucketの更新やJenkins等も構築できるので便利です。

GitBucketとは

今更感はありますがGitBucketはGitHubオープンソースのクローンプロジェクトです。 Scalaで組まれており、JavaのAPサーバで動作し、導入が簡単に行えるのが特徴です。 https://github.com/takezoe/gitbucket

GlassFishとは

GlassFishは、サンを中心としたオープンソース・コミュニティと、同コミュニティで開発されたJava EE準拠のアプリケーションサーバの名称である。GlassFishはCommon Development and Distribution License (CDDL) と、クラスパス例外を含むGNU General Public License (GPL) の二重ライセンスである。 (Wikipediaから抜粋)

環境

GlassFishの構築

JDKのインストール

JDK7がインストール済みの場合は飛ばして下さい。 Oracleのサイト からrpmファイルをダウンロードしセットアップするマシンに移動。 今回はCentOS/64bitでしたので jdk-7u71-linux-x64.rpm を選択しました。

# JDKのインストール
# バージョンが表示されればOK
sudo rpm -Uvh jdk-7u71-linux-x64.rpm 
java -version
java version "1.7.0_71"

JDKがインストール済みで、入れ替えを行った場合、シンボリックリンクの付け替え等が必要な様です。 以下リンクを参考に付け替えを行ってください。 http://tsujimotter.hatenablog.com/entry/2014/06/26/215128

GlassFishの展開
# GlassFishをダウンロードして解凍
wget http://download.java.net/glassfish/4.0/release/glassfish-4.0-ml.zip
unzip glassfish-4.0-ml.zip

# GlassFishの起動
./glassfish4/bin/asadmin start-domain domain1

# 起動に失敗するの場合、以下を確認してみる
# hostsファイル
sudo vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 [ホスト名]
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 [ホスト名]
GlassFishコンソールへの接続設定
# ドメインを止めてadminパスワードを設定
./glassfish4/bin/asadmin stop-domain
./glassfish4/bin/asadmin change-admin-password 
Enter admin user name [default: admin]> [そのままEnter]
Enter the admin password> [そのままEnter]
Enter the new admin password> [新しいパスワード]
Enter the new admin password again> [新しいパスワード]
Command change-admin-password executed successfully.

# SSLの有効化(GlassFishドメインの動いている状態で実行します。)
./glassfish4/bin/asadmin start-domain domain1
./glassfish4/bin/asadmin enable-secure-admin
Enter admin user name>  admin
Enter admin password for user "admin"> 
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.

# ドメインの再起動
./glassfish4/bin/asadmin stop-domain
./glassfish4/bin/asadmin start-domain domain1

管理者ページにアクセスしてみる
http://[マシンのIP]:4848/
設定したパスワードでログインできたら成功
つながらない場合は iptables を確認してみる事

GlassFish自動起動設定
# 起動スクリプトの作成
sudo touch /etc/init.d/glassfish
sudo chmod +x /etc/init.d/glassfish

# /etc/init.d/glassfishファイルを編集して保存
# glassfish -------------------------------------
#!/bin/bash
# glassfish    Startup script for the Apache HTTP Server
# chkconfig: - 85 15  
# description: Startup script of Glassfish Application Server.
# processname: glassfish
#export LANG=ja_JP.utf8
GLASSFISH_HOME=/home/[ユーザ]/glassfish4/
case $1 in
start)
sh ${GLASSFISH_HOME}/bin/asadmin start-domain $2
;;
stop)
sh ${GLASSFISH_HOME}/bin/asadmin stop-domain $2
;;
restart)
sh ${GLASSFISH_HOME}/bin/asadmin restart-domain $2
;;
esac
exit 0
# ----------------------------------------------

# 自動起動を登録
sudo chkconfig --add glassfish
sudo chkconfig glassfish on
Apatchのインストール
# Apacheがインストールされていない場合に実行してください。
# インストール
sudo yum -y install  httpd
# 自動起動の設定
sudo chkconfig --add httpd
sudo chkconfig httpd on
# 起動
sudo /etc/init.d/httpd start
リバースプロキシの設定
# httpd.conf に 以下のモジュールがロードされているか確認
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

# リバースプロキシ用コンフィグを作成する。
sudo vi /etc/httpd/conf.d/reverse_proxy.conf 

# reverse_proxy.conf 
# /gitbucketにアクセスされた場合、localhost:8888に飛ばす。
# ポートは任意で決める。
<Location "/gitbucket">
ProxyPass http://localhost:8888/gitbucket
ProxyPassReverse http://localhost:8888/gitbucket
</Location>

# Apatchを再起動
sudo service httpd restart

GitBucketのデプロイをする

GlassFishコンソールからwarファイルをデプロイをします。
warファイルをここからダウンロードします。 管理コンソールのメニューから[アプリケーション]-[デプロイ]を選択し、warファイルをデプロイして完了です。

f:id:Derabon:20150115224318p:plain

リスナの設定

管理コンソールのメニューから[server-config]-[HTTPサービス]-[HTTPリスナー]-[http-listener-1]を選択し、ポートがreverse_proxy.conf の設定値、アドレスが127.0.0.0.1に変更し更新します。その後GlassFishを再起動します。

f:id:Derabon:20150115224826p:plain

http://[マシンのIP]/gitbucket/ で GitBucketのトップ画面が表示されれば完了です。

まとめ

ほぼ、GlassFishのセットアップ記事になりました^^;
以上でGitBucketの構築完了になります。次回はGitBucketとJenkinsの連携をしたいとおもいます。