サーバ

FishEye 2.4.4 のインストールとアップグレード

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

私は 自宅の Jira と連携させて使っています。

昨日セキュリティアドバイザリが出ていたので急遽アップデートしました。
FishEye and Crucible Security Advisory 2011-01-12 – FishEye 2.4 – Atlassian Documentation – Confluence

インストールガイドは以下のページにあります。
FishEye 2.4 Upgrade Guide – FishEye 2.4 – Atlassian Documentation – Confluence

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

FishEye Downloads

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

私は fisheye ディレクトリを掘ってありますのですんなりアップグレードできそうです。

3. FISHEYE_INST / FISHEYE_HOME の設定
fisheyectl.sh を編集して FISHEYE_INST と FISHEYE_HOME 環境変数を設定します。

FISHEYE_INST=/Users/yusukey/server/fisheye
FISHEYE_HOME=/Users/yusukey/server/fisheye-2.4.4

4. ライセンスの設定(アップグレードの場合は不要)
4.a. FishEye を起動
まずは起動してからセットアップします。

今回はアップグレードにまつわるエラーが発生しました。
com.atlassian.applinks.host.OsgiServiceProxyFactory$ServiceTimeoutExceeded Exception Upon Upgrading to Fisheye 2.4 – Fisheye Knowledge Base – Atlassian Documentation – Confluence
jarファイルの重複はなかったのですが FISHEYE_HOME/var/plugins/config/pluginstate.properties の false と設定されているプラグインを全てコメントアウトすることで対処できました。

$ cd $FISHEYE_HOME/bin
./run.sh
INFO – FishEye/Crucible 2.4.4 (20110111045701), Built on 2011-01-11
INFO – FishEye: Open Source License registered to Yusuke Yamamoto.
INFO – Periodic polling for software updates is enabled (interval is 1 day).
INFO – Starting plugin system…
INFO – Starting database…

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.b. ライセンスの入力
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-Xss180k"
3: FISHEYE_INST=/Users/yusukey/server/fisheye
4: FISHEYE_HOME=/Users/yusukey/server/fisheye-2.0.6

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-2.4.4/bin
sudo -u yusukey ./start.sh
}

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

RestartService ()
{
ConsoleMessage “Restarting FishEye”
cd /Users/yusukey/server/fisheye-2.4.4/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/

関連記事:
Fisheye 2.3.5 をインストール – 侍ズム
FishEye 2.0.6 のインストールとアップグレード – 侍ズム
Jira 3.13.1 へ FishEye プラグイン 2.3 をインストール
FishEye 1.6.3 のインストール – 侍ズム
Jira をバージョン 3.13.1 へアップデート
Jira をバージョン 3.12.3 へアップデート