Redmineをwar化 (2) warblerでwar化する

Updated: / Reading time: 4 minutes

前回、Redmine+JRubyを動かすところまで作業を行いました。次はこの環境をwar化して、Apache TomcatなどのServletコンテナーに簡単に配置できるようにします。

作成したwarファイル

前回・今回の作業で作成したファイルは、以下で配布しています。

ライセンス

GNU General Public License v2とします。JRubyがCPL v1.0/GPL v2/LGPL v2.1RedmineがGPL v2であるためです。

war化する作業手順

Railsアプリをwar化するwarblerというgemがありますので、これを使用します。

warblerをインストール

以下のコマンドを実行して、warblerをインストールします。

>jgem install warbler

warbler設定ファイルを作成

どのファイルをwarファイルに含めるか、どのgemを含めるかなどを指定する、warbler設定ファイルを作成します。

まず、%REDMINE_HOME%で以下のコマンドを実行して、warbler設定ファイルの雛形を生成します。

>warble config

%REDMINE_HOME%\config\warble.rbが作成されます。開くと色々書かれていますが、dbフォルダ、filesフォルダ、pluginsフォルダをwarファイルに含めるため、config.dirsdb files pluginsを追記します。

config.dirs = %w(app config lib log vendor tmp db files plugins)

war化

%REDMINE_HOME%で以下のコマンドを実行して、warファイルを生成します。

>warble

%REDMINE_HOME%\redmine.warファイルが生成されます。

Tomcatにredmine.warを配置 - 失敗

warファイルを作成したので、これをTomcatに配置します。なお、Tomcatはあらかじめ起動できる状態にしておいてください。

起動したら、にアクセスします。問題なければ、Redmineのトップページが表示されるはずです。

Oh…エラーになってしまいました。Tomcatのコンソールを確認すると、以下のように表示されていました。

[31mCould not find jdbc-mysql-5.1.13 in any of the sources [0m
[33mRun `bundle install` to install missing gems. [0m

何か文字が化けていますが、jdbc-mysqlのgemが足りないと言われています。今回はsqlite3を使用するのでmysqlは関係ないのですが…

もう一度、bundlerを実行、warファイルを作成

mysql(とついでにpostgresql)のgemを含めるため、以下のコマンドを実行します。

>bundle install --without development test

前回はmysqlpostgresql--withoutで指定しましたが、その指定を無くしました。

これでgemの問題は解決したはずなので、以下のコマンドでwarファイルを生成します。

>warble

Tomcatにredmine.warを配置 - 成功

生成したredmine.warをTomcatに配置して、再度、にアクセスします。

Redmineのトップページが表示されました! この後、以下の作業を行いましたが、問題なく動作しました。

  • 設定を日本語環境に変更
  • testユーザーを作成
  • adminユーザーをロック
  • プロジェクトを作成
  • チケットを作成、添付ファイルつき

CentOSにファイルを移動、Tomcatで動作

次に、先ほど作成したredmine.warをCentOSに移動し、CentOS上のTomcatに配置、動作させてみます。また、動作確認したファイルも動作確認します。これにより、OS関係なくServletコンテナーがあれば動作することを確認します。

なお、CentOSはあらかじめ以下のように設定してください。

  • Java SDKをインストール
  • 8080番ポートを開放(またはiptablesを無効化)
  • Apache Tomcatが動作することを確認

CentOS上のTomcatにredmine.warを配置

Tomcatにwarファイルを配置します。

/redmineが初期状態のRedmine、/redmine_testが動作確認したRedmineです。

まず、/redmineにアクセスしてみます。

Redmineのトップページが表示されました。

次に、/redmine_testにアクセスしてみます。

Redmineのトップページが表示され、登録したプロジェクトが表示されています。

登録したチケットも表示できました。

チケットの登録ができることも確認します。

チケットが登録できました。

これで、Tomcatに展開するだけで使用可能なRedmineを作成できました! Yeah!