ホーム > CentOS, MySQL > JRuby on Railsをwarファイルにして,Tomcat上で動かすまで

JRuby on Railsをwarファイルにして,Tomcat上で動かすまで

2009 年 7 月 5 日

いまさらですが,JRuby on Railsを動かして見ました.その時の手順メモです.

動作環境は以下の通りです.

  • CentOS 5.3
  • java 1.6.0_14
  • Tomcat 6.0.20
  • MySQL 5.1.35
  • JRuby 1.3.1 (Ruby 1.8.6p287, gem 1.8同梱)
  • Rails 2.3.2

1.事前に下記URLからJava,Tomcat,MySQLのインストールを行います.
CentOSで自宅サーバー構築
http://centossrv.com/

2.JRubyのインストール
(1)バイナリのダウンロード
JRuby - Home
http://jruby.codehaus.org/

$ wget http://dist.codehaus.org/jruby/1.3.1/jruby-bin-1.3.1.tar.gz
$ tar zxvf jruby-bin-1.3.1.tar.gz
$ mv jruby-1.3.1 /usr/

(2)環境変数の設定

$ vi /etc/profile
最終行に以下を追加します.

export JRUBY_HOME=/usr/jruby-1.3.1
export PATH=$PATH:$JRUBY_HOME/bin

環境変数の反映
$ source /etc/profile

(3)JRubyの確認

$ jruby -v
jruby 1.3.1 (ruby 1.8.6p287) (2009-06-15 2fd6c3d) (Java HotSpot(TM) Client VM 1.6.0_14)
[i386-java]

3.JDBCのMySQLコネクタの設置
(1)バイナリのダウンロード
MySQL :: Connector/J 5.1
http://dev.mysql.com/downloads/connector/j/5.1.html

$ wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.7.zip
/from/ftp://ftp.jaist.ac.jp/pub/mysql/
$ unzip mysql-connector-java-5.1.7.zip
$ mv mysql-connector-java-5.1.7/mysql-connector-java-5.1.7-bin.jar /usr/java/default/

(2)環境変数のCLASSPATHに:$JAVA_HOME/mysql-connector-java-5.1.7-bin.jarを追加

$ vi /etc/profile

export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
:$JAVA_HOME/mysql-connector-java-5.1.7-bin.jar #追加する.

$ source /etc/profile

4.gemで必要なモジュールをインストール
(1)通常のgemと使い分けるために.bashrcに以下を追加

$ vi .bashrc
GEM_HOME=/usr/jruby-1.3.1/lib/ruby/gems/1.8

(2)gemでモジュールのインストール

$ jruby -S gem install rubygems-update  --no-rdoc
$ jruby -S gem update_rubygems
$ jruby -S gem install rails --include-dependencies --no-ri --no-rdoc
$ jruby -S gem install jruby-openssl --no-ri --no-rdoc
$ jruby -S gem install ActiveRecord-JDBC --no-ri --no-rdoc
$ jruby -S gem install activerecord-jdbc-adapter --no-ri --no-rdoc
$ jruby -S gem install activerecord-jdbcmysql-adapter --no-ri --no-rdoc
$ jruby -S gem install jdbc-mysql --no-ri --no-rdoc
$ jruby -S gem install rake --no-ri --no-rdoc
$ jruby -S gem install mongrel --no-ri --no-rdo
$ jruby -S gem install warbler --no-ri --no-rdo

*gemの前にjruby -Sを必ずつける.

(3)Railsの確認

$ jruby -S rails -v
Rails 2.3.2

それ以外のモジュールの確認
$ jruby -S gem list

*** LOCAL GEMS ***

actionmailer (2.3.2, 2.1.2)
actionpack (2.3.2, 2.1.2)
activerecord (2.3.2, 2.1.2)
ActiveRecord-JDBC (0.5)
activerecord-jdbc-adapter (0.9.1)
activerecord-jdbcmysql-adapter (0.9.1)
activeresource (2.3.2, 2.1.2)
activesupport (2.3.2, 2.1.2)
BlueCloth (1.0.0)
facets (2.5.2)
gem_plugin (0.2.3)
jdbc-mysql (5.0.4)
jruby-openssl (0.5.1)
mongrel (1.1.5)
rails (2.3.2, 2.1.2)
rake (0.8.7)
RedCloth (4.2.2)
rspec (1.2.6)
rubygems-update (1.3.4)
sources (0.0.1)
warbler (0.9.13)

5.JRuby on Rails
(1)新規JRuby on Railsを作成する場合

$ jruby -S rails hogehoge

(2)既存のRuby on RailsをJRuby on Railsに対応させる場合
svnやgitでrailsアプリケーションをチェックアウトする.

$ cd hogehoge
$ jruby -S rake rails:update

(3)DB設定ファイルを編集

$ cd hogehoge
$ vi config/database.yml

development:
  adapter: jdbcmysql
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost/hogehoge_development
  username:
  password:

production:
  adapter: jdbcmysql
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost/hogehoge_production
  username:
  password:

(4)DB及びテーブル作成

$ jruby -S rake db:create
$ jruby -S rake db:migrate #developmentの場合
$ jruby -S rake db:migrate RAILS_ENV=production	#productionの場合

*DBが作成されていない場合は,普通にmysqlコマンドから作成します.

$ mysql -u[username] -p[password]
mysql> create database hogehoge_development;
mysql> create database hogehoge_production;

(5)サーバ起動

$ jruby -S script/server

(6)ブラウザで確認

http://localhost:3000/home

とりあえずここまでで正常に表示されて動作するかチェックした方がよいです.

6.warファイルを作成して,Tomcat上で動かします.
(1)warファイルにまとめる

$ cd hogehoge
$ jruby ./script/plugin install svn://rubyforge.org/var/svn/jruby-extras/trunk/
rails-integration/plugins/goldspike
$ jruby -S rake war:standalone:create
$ jruby -S warble pluginize
$ jruby -S warble config

(2)environment.rbの編集

$ vi config/environment.rb

コメントアウトを解除します.
#RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION
↓
RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION

(3)warble.rbに追加

$ vi config/warble.rb

Warbler::Config.new do |config|
  config.dirs = %w(app config lib log vendor tmp)
  config.gems << "activerecord-jdbcmysql-adapter" #activerecord-jdbcmysql-adapter追加する.
  config.gem_dependencies = true
  #config.webxml.rails.env = development #developmentの時に追加する.
  config.webxml.rails.env = ENV['RAILS_ENV'] || 'production'	#productiontの時に追加する.
end

(4)warファイルの作成

$ jruby -S warble war
$ cd hogehoge/tmp/war/
$ wget http://dist.codehaus.org/jruby/1.3.1/jruby-complete-1.3.1.jar
$ rm -rf jruby-complete-1.3.0RC.jar
$ cd ..
$ mv war /usr/local/tomcat/webapps/

(5)Tomcatの再起動

$ /etc/rc.d/init.d/tomcat restart

(6)ブラウザで確認
http://localhost:8080/war/home

正常に表示されて動作すれば完了です.

*動かなかった場合は,(4)warファイル作成を行う前に以下のコマンドで前回のwarファイル削除を行うこと.

jruby -S warble war:clean

参考URL

Author: basi Categories: CentOS, MySQL Tags: , , , , , このエントリをはてなブックマークに登録 Twitter
  1. コメントはまだありません。
  1. トラックバックはまだありません。