2008年11月16日日曜日

Redmine on GlassFish -4

JRuby 1.1.5 の最新版でRedmineが動いたのに気をよくして、
立て続けに Redmine on GlassFish v3 も試してみました。

結論からいうと、若干の "問題" は残されているものの、
とりあえずRedmineが動きました!

残されている "問題" については後日改めて検証することにして、
まずはRedmineをGlassFishにのせるまでの手順をご紹介しておきます。


1. warblerをインストール
ディレクトリをまるごとDeployするやり方もあるのですが、
今回はWARファイルを作って、それを配備してみます。
JRuby on Rails アプリケーションをWar化するには、
Warblerというツールを使います(GoldSpikeというのもある)。

WarblerはRubyGemsでインストールできるので、
以下のようにしてJRuby環境にインストールします。

jruby -S gem install warbler


2. warblerのconfigファイルを作成
WarblerはWebアプリケーション用の設定ファイル(web.xml)を
自動生成してくれますが、この内容に手を入れたい場合は、
Warファイルを作成する前にconfigファイルを修正します。

Warbler用のconfigファイルは、次のようにコマンドを実行して
作成します。

jruby -S warble config

⇒ /config/warble.config というファイルができる。

※Warblerがデフォルトで作成するweb.xmlファイルでは、
Railsの環境(RAILS_ENV)がproductionになっています。
開発用のデータベースしか作成していない場合は、
この部分を「development」に修正する必要があります。

# Value of RAILS_ENV for the webapp -- default as shown below
config.webxml.rails.env = ENV['RAILS_ENV'] || 'development'


3. Warファイルの作成
configファイルを修正したら、いよいよWarファイルを作成します。
これは簡単。
次のようにコマンドを実行すれば、Redmineのルートディレクトリ直下に
redmine.war が作成されます。

jruby -S warble


4. GlassFishのdomain.xmlにJRubyのパスを追加
今度はGlassFish側の設定を行います。
GlassFishのdomain.xmlの中に、Redmineの実行に使うJRubyへの
パスを設定します。

<GlassFish_Home>\glassfish\domains\domain1\config\domain.xml

というファイルを開くと、下の方に <java-config ...>というエレメントが
ありますので、この中に以下のように一行書き足します。

<java-config ....>
...................
...................
<jvm-options>-Djruby.home=C:\jruby\trunk</jvm-options>
</java-config>

※実際に使用するJRubyのインストール先フォルダを指定して下さい。

5. GlassFishを起動
これで準備は完了です。GlassFishを起動してみましょう。

asadmin start-domain

6. Warファイルを配備
GlassFishが起動したら、Redmineを配備します。
GlassFish v3 には GUIベースのかっこいい管理画面もあるのですが、
今回はめんどうなのでコマンドラインから。

asadmin deploy c:\host\redmine\redmine.war

配備完了のメッセージが出れば準備はOKです。
ブラウザに以下のURLを入力してみましょう。
http://localhost:8080/redmine/


やったー、GlassFish上でRedmineが動いた!



…と思ったら、あら?なんか表示がヘンなような…
(リソースファイルへの参照が正しく行われていない?)


少々問題は残されているものの、
エラー画面しか出なかった数日前の状況から考えれば大きな進歩です^^

というわけで、本日はここまで。

【補足】
GlassFish v3 Prelude には、JRuby on Railsアプリケーションの
配備解除が正しく行えない、という不具合が残っています。
この不具合はPreludeでは修正対象からはずされたようですが、
Finalリリースで改修されると聞いています。
https://glassfish.dev.java.net/issues/show_bug.cgi?id=6610

配備したRailsアプリケーションの配備解除は、
以下のような手順で行ってみてください。
(正規の手順ではないですが、私はいつもこうやっています)

---
1. asadmin undeploy xxxxx (xxxxxはアプリケーション名)
2. asadmin stop-domain
3. タスクマネージャなどでプロセスを強制終了
4. 以下のフォルダを手動で削除
* <GlassFish_Home>\glassfish\domains\domain1\applications\xxxxx
* <GlassFish_Home>\glassfish\domains\domain1\generated\jsp\xxxxx

0 件のコメント: