今回は、JRubyでrailsを設置し、さらにApacheと連携したTomcatで運用する方法を紹介します。
なお、今回動作を確認したのは、以下の環境です。
- Windows XP Professional SP2
- JRuby 1.0.1
- Apache httpd 2.2.4
- Tomcat 6.0.14
JRuby on Rails
JRubyでも簡単にrailsを扱えます。まず、以下のコマンドでrailsをインストールします。
$ jruby -S gem install rails
これで普通のrubyと同じようにrailsコマンドが使えるようになります。railsするときは、
$ jruby -S rails project_name
これでいける。-Sがポイント。
JRubyでrails開発をおこなう利点のひとつとして、JDBCによるデータベース運用が可能なことがあげられますが、今回は省略します。
Tomcatにdeployする
JRuby on Railsで作られたアプリケーションはJava VM上で動作するので、JSP/Servletアプリケーションのように、Tomcatを用いて運用することが出来ます。
railsのpluginとして公開されているgoldspikeを用いることで、railsプロジェクトをwarファイルに出力できるので、それをTomcatにdeployします。
goldspikeをインストールするには、以下のようにします。
$ jruby script\plugin install http://jruby-extras.rubyforge.org/svn/trunk/rails-integration/plugins/goldspike
goldspikeを用いてプロジェクトをwarファイルにしたいときは、以下のようにします。
$ jruby -S rake war:standalone:create
このrakeで、warが生成されます。このrakeの裏ではmaven2が走り、必要なjarを自動的に収集しにいっています。
私はここでハマったのですが、この記事を執筆した当時(2007/9/24)では、デフォルトのmaven2リポジトリからうまくjarが持ってこられずに、エラーを吐いてrakeが失敗してしまいました。
そこで、プロジェクトディレクトリの中の、vender/plugins/goldspike/lib/war_config.rbを編集します。
85c85 < @maven_remote_repository = 'http://repo1.maven.org/maven2/' --- > @maven_remote_repository = 'http://www.ibiblio.org/maven2' 95c95 < add_library(maven_library('org.jruby', 'jruby-complete', '1.0.1')) --- > add_library(maven_library('org.jruby', 'jruby-complete', '0.9.8'))
ここでは、maven2のセントラルリポジトリを参照するように変更しています。
jrubyのバージョンを0.9.8に落としているのは、執筆当時、セントラルリポジトリに置いてあるjrubyの最新版が、0.9.8だったためです。
ちなみに、0.9.8だと、Tomcatでうまく動かないので、かならず1.0以降のjarに置き換えるようにしてください。
WEB-INF/libの中にjruby-complete-1.0.1.jarを置いておけば、それがそのまま使われます。
生成されたproject_name.warをTomcatのwebappsに置き、
http://localhost:8080/project_name
でアクセスできれば成功です。
Apacheとの連携
面倒なので、mod_jkを使わずに、お手軽な方法でApacheをTomcatと連携します。
httpd.confに、以下の行を追加します。
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so <Location /project_name > ProxyPass ajp://localhost:8009/project_name </Location>
これだけでOKのはずです。
http://localhost/project_name
このURLにアクセスして、動作が確認できればOKです。