前回は軽量WEBサーバであるlighttpdを利用することでRedmineをより良いパフォーマンスで動かすための方法を紹介しました。今回はRedmineをJava EEのアプリケーションサーバで運用するための方法を紹介します。
読者の方には既にJava環境で他システムを運用している方もいらっしゃるかと思います。そのような場合に、
Java EEのアプリケーションサーバは数多く存在しますが、
Glassfish以外にもRailsアプリケーションを運用することができるアプリケーションサーバには以下のようなものもあります
- Tomcat
- WebSphere
- Oracle OC4J
- BEA Weblogic
それでは始めに、
JRubyを利用することで得られるメリット
- Rubyの特性がそのままメリットとなる
- Javaとの連携が可能でJavaライブラリを活用する事ができる
- JDBCドライバを利用することで対応DBを増やすことができる
Java EEのアプリケーションサーバで運用することで得られるメリット
- Java EEの運用環境の良さをそのまま得られる
- 情報量が豊富で、
多くの運用実績がある - パフォーマンス・
安定性を獲得できる - 運用監視が充実している
- スケールアウトしやすい
- 情報量が豊富で、
上記のように数多くの恩恵を受けることができます。それでは、
環境構築
Redmineを運用するサーバと動作確認を行うサーバ
以上の前提より、
- テストサーバ
- JRubyもしくはRuby
- warファイル生成のためのプラグインであるgoldspike
- マイグレートするためのrakeパッケージ
- JDBC接続用のgemパッケージ
- jdbc-mysql
- activerecord-jdbcmysql-adapter
- activerecord-jdbc-adapter
- glassfish
- 運用サーバ
-
- JRubyもしくはRuby
- マイグレートするためのrakeパッケージ
- glassfish
本連載の第1回でRubyおよびrubygemsのインストール方法は紹介しましたので、
JRubyの導入
JRubyを利用するためには Java SE 5.
続いて以下のURLにアクセスし、
$ wget http://dist.codehaus.org/jruby/jruby-bin-1.1.2.tar.gz
ダウンロードしたファイルを今回は /usr/
$ tar xvzf jruby-bin-1.1.2.tar.gz
このままではコマンド実行時にフルパスを指定しなければならないため、
JAVA_HOME=/usr/local/jdk1.6.0_06
JRUBY_HOME=/usr/local/jruby-1.1.2
また、
$ source ~/.bashrc
続いて以下のコマンドを実行し、
$ java -version java version "1.6.0_06" Java(TM) SE Runtime Environment (build 1.6.0_06-b02) Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)
JRubyについても確認しておきます。
$ jruby -v ruby 1.8.6 (2008-05-28 rev 6586) [i386-jruby1.1.2]
${RAILS_
$ jruby -S gem install rake jdbc-mysql activerecord-jdbcmysql-adapter activerecord-jdbc-adapter
続いて、
production: adapter: jdbcmysql database: redmine_development host: localhost username: root password: encoding: utf8
マイグレートを実施する場合は、
$ jruby -S rake db:migrate RAILS_ENV=production
それでは最後にWEBrickを起動して、
$ jruby script/server webrick -e production
ブラウザで http://
WARの生成
Java EEのアプリケーションサーバでRedmineを運用するためには、
WARファイルを作成するには、
今後はwarblerが主流となっていくのではないかと筆者は考えていますが、
まずは${RAILS_
$ jruby script/plugin install http://jruby-extras.rubyforge.org/svn/trunk/rails-integration/plugins/goldspike
インストール後は、
# 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') #新規追加
続いて、
$ jruby -S rake war:standalone:create
すると、
Glassfishの導入とWARのデプロイ
今回はglassfishバージョン2.
インストール手順はGlassfish Downloadsサイトに紹介されていますので、
インストールが終了したらglassfishを起動します。
$ /usr/local/glassfish/bin/asadmin start-domain
それでは早速、
![glassfish管理画面 glassfish管理画面](/assets/images/dev/serial/01/redmine_use/0007/thumb/TH800_01.jpg)
「管理画面でWebアプリケーション配備」
「Application Server からアクセス可能なローカルのパッケージファイルまたはディレクトリ」を選択し、生成したWARファイルを指定
アプリケーション名:redmine
コンテキストルート:redmine
デプロイ完了後に http://
仮に初期アクセス時にエラーが発生した場合は、
glassfish | /usr/ |
redmine | /usr/ 2ee-modules/ |
最後に運用サーバにデプロイする際は、
これでglassfishでRedmineを運用することができるようになりました。
ベンチマーク
第6回同様、
環境・条件
測定を行った環境は以下の通りで、
- CentOS 4.
4 - Dual-Core AMD Opteron(tm) Processor 1210, 4GB Memory
比較対象となるWEB/アプリケーションサーバは以下のとおりです。
- WEBrick
(1. 3.1) - Ruby
(1. 8.6) , Rails (2. 0.2) , Redmine (0. 7.1) , productionモード
- Ruby
- glassfish (V2 UR2 b04)
- JRuby
(1. 1.2) , Rails (2. 0.2) , Redmine (0. 7.1) , productionモード
- JRuby
今回はDBアクセスが発生するように、
結果
"Requests per second"の平均値は以下となります。
Ruby + WEBrick | 1. |
JRuby + glassfish | 1. |
この結果より、
最後に
今回は、
筆者の運用環境では、
これまで全7回の連載で、
Redmineは現在も開発されており、