Redmineをwar化 (2) warblerでwar化する
前回、Redmine+JRubyを動かすところまで作業を行いました。次はこの環境をwar化して、Apache TomcatなどのServletコンテナーに簡単に配置できるようにします。
作成したwarファイル
前回・今回の作業で作成したファイルは、以下で配布しています。
- u6kapps / redmine-war / Downloads
redmine-yyyymmdd-for-2.1.2.war
というファイルです。
ライセンス
GNU General Public License v2とします。JRubyがCPL v1.0/GPL v2/LGPL v2.1、Redmineが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.dirs
にdb 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
前回はmysql
とpostgresql
を--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!