サーバ

FishEye 1.6.3 のインストール

FishEye はJBoss や Apache で使われているバグトラッキングシステム JIRA を開発している Atlassian の製品で、ソースコードリポジトリの変更履歴を確認したり、統計情報を確認したりできる Web アプリケーションです。
例によってオープンソース製品には無償のライセンスが用意されていてJBoss.orgでも使われています。

今回 自宅の JIRA とあわせて使ってみることにしました。

インストールガイドは以下のページにあります。
・英語 – FishEye Installation Guide – FishEye 1.6 – Confluence
・日本語 – FishEye インストールガイド – FishEye オンラインマニュアル (1.5版) – Atlassian Confluence

1. FishEye 1.6.3 のダウンロード
ダウンロードページより zip アーカイブをダウンロードします。FishEye はどういうわけか JIRA と違って JBoss や WLS 等の既存のアプリケーションサーバにデプロイすることはできず、スタンドアロン版しかないそうです。
ちなみに Jetty を内蔵しているようです。

FishEye Downloads

2. FishEye インストールディレクトリの作成
FishEye は自己完結型のディレクトリ構成を持っていますが、そのまま利用するとアップグレードが面倒になるため、運用環境ではデータは別ディレクトリに配置することを推奨しています

というわけで好きな位置に fisheye ディレクトリを掘ってみました。
また、fisheye ディレクトリには fisheye-1.6.3/config.xml ファイルをコピーしておきます。

3. FishEye を起動
まずは起動してからセットアップします。

$ export FISHEYE_INST=~/server/fisheye
$ export FISHEYE_HOME=~/server/fisheye-1.6.3
$ cd /FISHEYE_HOME/bin
./run.sh
INFO – FishEye 1.6.3 (build-336), Built on 2008-11-04
INFO –
INFO – =======================================================
INFO –
INFO – Welcome to FishEye!
INFO –
INFO – You need to configure an admin password and enter your
INFO – license key. You can do this by accessing FishEye through
INFO – a web browser:
INFO –
INFO – http://hostipaddress:8060/
INFO –
INFO – Alternatively you can edit config.xml, refer to the
INFO – FishEye administration guide for more infotmation:
INFO –
INFO – http://confluence.atlassian.com/x/N4CDBQ
INFO –
INFO – =======================================================
INFO –
Could not find a FishEye license.
Please visit http://my.atlassian.com and quote ****-****-****-**** to obtain a valid license,
or visit http://www.atlassian.com/fisheye/renew to renew your license.
INFO – Periodic polling for software updates is disabled.
INFO – Server started on :8060 (http) (control port on 127.0.0.1:8059)
WARN – No license info available, not starting FishEye repositories.

起動すると Server ID という 16 ケタの16進数の ID が発行されます。
これを控えておき、http://my.atlassian.com で評価用ライセンスを取得します。

4. ライセンスの入力
http://my.atlassian.com でライセンスキーを取得できたら http://ホスト:8060にアクセスし、ライセンスキーを入力します。

ライセンスキーを入力


ライセンスが受け入れられたところ

5. リポジトリのセットアップ
http://ホスト:8060/adminにアクセスすると、管理画面になります。

fisheye 管理画面
[Repository List > Add repository] より、リポジトリを追加するフォームが表示されます。
Name*: リポジトリの名前
Repository type: SVN, CVS, perforce の中から選択
SVN URL*: プロトコルスキームから始まるリポジトリのパスを入力
Path: リポジトリのうち特定のディレクトリだけを fisheye で表示したい場合は入力
trunk/branch/tag structure: /project/trunk/…, /project/branches/NAME/…, /project/tags/NAME/…


リポジトリ追加フォーム

フォームに必要事項を記入したら [add] でリポジトリの追加が完了。
自動的にリポジトリのスキャンが始まります。

6. コンテクストパス、ajp コネクタのセットアップ
FishEye はデフォルトでルートコンテキストで動作するようです。
今回は FishEye 用のサブドメインを立てるのではなく、http://yusuke.homeip.net/fisheye/ というパスでアクセスできるようにしたいのでコンテクストパスを設定することにしました。
コンテクストパスやその他 Web サーバの設定は [Server Settings > Web Server > Edit settings] より行えます。
以下のように設定しました。
WebContext: fisheye
Http Bind Address: 8060
Ajp13 Bind Address: 8069

Bind Address のところは特定の NIC だけでリスンてほしければ IPアドレス:ポート のフォーマットで入力すればokです。
今回は Wifi でも Ethernet でもリスンして欲しいのでポートだけ入力しました。

7. 起動スクリプト設定
デフォルトではヒープサイズや GC ログの設定がされていないようです。
最低限どれくらいのヒープサイズで動くのかわかりませんのでざっくりと 64mb に設定し、-XX:+PrintGCTimeSamps オプションで GC 状況のログを取っておくことにしました。
設定は fisheyectl.sh に書きます。

1: #!/bin/sh
2: FISHEYE_OPTS="$FISHEYE_OPTS -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xmx64m -Xms64m"
3: FISHEYE_INST=/Users/yusukey/server/fisheye
4: FISHEYE_HOME=/Users/yusukey/server/fisheye-1.6.3

8. mod_jk 設定
8060番ポートに穴を空けたくないので mod_jk を以下のように設定して Apache と連携させました。
worker.properties

worker.fisheye.port=8069
worker.fisheye.host=127.0.0.1
worker.fisheye.type=ajp13

uriworkermap.properties

/fisheye=fisheye
/fisheye/*=fisheye

9. 起動設定
FishEye は run.sh で簡単に起動できますが、サーバ(再)起動時に手動で起動するのは面倒なので自動起動できるように設定しました。

# cd /Library/StartupItems/
# mkdir fisheye

MacOSX 独自の起動スクリプトを書く

# cd /Library/StartupItems/fisheye
# vi fisheye

#!/bin/sh

##
# fisheye
##

. /etc/rc.common

StartService ()
{
ConsoleMessage “Starting FishEye”
cd /Users/yusukey/server/fisheye-1.6.3/bin
sudo -u yusukey ./start.sh
}

StopService ()
{
ConsoleMessage “Stopping FishEye”
cd /Users/yusukey/server/fisheye-1.6.3/bin
sudo -u yusukey ./stop.sh
}

RestartService ()
{
ConsoleMessage “Restarting FishEye”
cd /Users/yusukey/server/fisheye-1.6.3/bin
sudo -u yusukey ./stop.sh
sudo -u yusukey ./start.sh
}

RunService “$1”

# vi StartupParameters.plist

{
Description = “fisheye”;
Provides = (“fisheye“);
Requires = (“DirectoryServices”);
Uses = (“Disks”);
OrderPreference = “None”;
}

これで fisheye/StartupParameters.plist の2つのファイルを見て Mac OSX 起動時に勝手に FishEye を起動してくれるようになります。
コマンドラインから操作する際は
# SystemStarter start|stop|restart fisheye
でできます。
標準(エラー)出力は $FISHEYE_INST/var/log に記録されます。

10. robots.txt の設定
FishEye をセットアップしたことで、Google や Yahoo! にコードリポジトリそのものの索引を作ってもらう必要がなくなりましたので以下のように設定して検索対象からはずしました。
FishEye のコードは検索でヒットしても良いので Disallow に入れていません。

User-agent: *
Disallow: /svn/

11. 完了
以上の設定で無事 FishEye をインストールできました。
FishEye: browsing yusuke.homeip.net/

しばらく使ってみて特に問題無ければオープンソースプロジェクト向けライセンスの発行を依頼したいと思います。

関連記事:
JIRA 3.13.1 へ FishEye プラグイン 2.3 をインストール
JIRA をバージョン 3.13.1 へアップデート
JIRA をバージョン 3.12.3 へアップデート

JIRA(バグトラッキングシステム), Confluence(Wiki) など Atlassian 社の製品は日本では代理店であるイマヒマ社より購入していただくことも可能です。
チームウェア – アトラシアン JIRA(ジラ):画期的な課題トラッキング! Confluence(コンフルエンス):企業向けウィキ