Redmineを運用するためのイロハを身につけよう

第7回 Javaプラットフォームでの運用

この記事を読むのに必要な時間:およそ 4 分

JRubyについても確認しておきます。

$ jruby -v

ruby 1.8.6 (2008-05-28 rev 6586) [i386-jruby1.1.2] 

${RAILS_ROOT}に移動して,必要となるgemパッケージを以下のコマンドを入力することでインストールします。ちなみにjruby -Sをコマンドの始めに付けて実行することで,JRuby付属のコマンドを実行することができるようになります。

$ jruby -S gem install rake jdbc-mysql activerecord-jdbcmysql-adapter activerecord-jdbc-adapter

続いて,データベース接続設定ファイルである ${RAILS_ROOT}/config/database.yml を編集します。今回は,JDBC-MySQLを通してDBに接続させるためadapterを書き換えます。またエンコーディングを指定しないと文字化けしてしまうため,適切な文字コードを指定するようにしてください。※2⁠。

production:
adapter: jdbcmysql
database: redmine_development
host: localhost
username: root
password:
encoding: utf8

マイグレートを実施する場合は,DBのスキーマを作成してから以下のコマンドを入力してください。

$ jruby -S rake db:migrate RAILS_ENV=production

それでは最後にWEBrickを起動して,Redmineの動作確認をしましょう。

$ jruby script/server webrick -e production

ブラウザで http://localhost:3000 にアクセスすると,Rubyで動かした時とほぼ同等くらいのレスポンスでRedmineが動作することが確認できると思います。

※2)
DBがmysql以外の場合は,こちらを参考に設定してください。

WARの生成

Java EEのアプリケーションサーバでRedmineを運用するためには,ソースコードやライブラリを圧縮したWARファイルを生成してサーバにデプロイする必要があります。

WARファイルを作成するには,goldspikeプラグインを利用する方法と,gemでインストール可能であるwarblerを利用する方法の2種類があります。goldspikeはWAR生成時のファイル構成がJavaServletAPIに準拠した配置なっていませんが,warblerは準拠したものになっており,不要なファイルも排除されるようになっています。

今後はwarblerが主流となっていくのではないかと筆者は考えていますが,筆者の環境ではwarblerで生成したWARファイルを glassfishにデプロイしても,日本語化の設定ファイル(ja.yml)がロードされていなかったり,時折アプリケーションエラーが発生したりと正常に動作させることができなかったので,今回はgoldspikeを利用してWARを生成する方法を紹介します※3⁠。

まずは${RAILS_ROOT}に移動してgoldspikeプラグインをインストールします。

 $ jruby script/plugin install
http://jruby-extras.rubyforge.org/svn/trunk/rails-integration/plugins/goldspike

インストール後は,${RAILS_ROOT}/vendor/plugins 以下にgoldspikeが追加されています。WAR生成設定ファイルである ${RAILS_ROOT}/vendor/plugins/goldspike/lib/war_config.rb を編集します。

# default build properties
@compile_ruby = false
@keep_source = false
@add_gem_dependencies = true
@servlet = 'org.jruby.webapp.RailsServlet'
@rails_env = 'production' #動作モードをdevelopmentにしたい場合はこちらを変更

・・・(略)

# default java libraries
add_library(maven_library('org.jruby', 'jruby-complete', '1.1.2')) #バージョンを1.1.2に変更

・・・(略)

# default gems
@gem_libraries = {}
add_gem('rails', rails_version) unless File.exists?('vendor/rails')
add_gem('activerecord-jdbc-adapter') if Dir['vendor/{gems/,}{activerecord-jdbc-adapter,ActiveRecord-JDBC}'].empty?
add_gem('activerecord-jdbcmysql-adapter') #新規追加
add_gem('jdbc-mysql') #新規追加

続いて,以下のコマンドを入力しWARを生成してください。このとき,jruby-complete-1.1.2.jarもwar内に格納されます。

$ jruby -S rake war:standalone:create

すると,${RAILS_ROOT}以下にredmine-[バージョン].warが生成されたことが確認できるはずです。

※3)
warblerでのWAR生成方法については筆者のブログで紹介していますが,今後も調査結果を投稿していく予定です。

著者プロフィール

安達輝雄(あだちてるお)

TIS株式会社勤務。入社してすぐにRuby on Railsと出会う。現在はJRubyやXenなどOSSを中心に調査・検証をおこなっている。

ブログ:http://d.hatena.ne.jp/interu/


並河祐貴(なみかわゆうき)

TIS株式会社 基盤技術センター所属。オブジェクト指向開発,開発環境・ツール整備に従事した後,近年はRuby on Railsを中心としたオープンソース系ミドルウェアの検証/導入や,Xenなどのサーバ仮想化技術をターゲットに取り組んでいる。

ブログ:http://d.hatena.ne.jp/rx7/