昨日の記事で Azure Web Apps でも JRuby をインストールして Rails 4 を動かすとこまで出来たので、今日は Redmine 3.0.3 をインストールしてみました。
以前に Redmine 2.5 をインストールしたことはありましたが、デプロイスクリプトの実行に失敗したり不安定な面がありました。原因は DevKit 周りだったので、JRuby を使うことで解消できるという目論見です。
インストールの流れは Redmine 2.5 の時と変わりませんが、以下の記事を参考にしながら行いました。
DB として前回は ClearDB を使いましたが、今回は記事の通り SQLite を使うことにします。
ファイルをダウンロード
Redmine 公式サイトから 3.0.3 をダウンロードして、適当に展開しておきます。
今回もカスタムデプロイスクリプトを使って JRuby のインストールと、bundle install の実行を行うので必要なファイルをリポジトリからコピーしておきます。
見たところ Gemfile.lock が Redmine のファイルに含まれていなかったので、deploy.cmd の該当部分を修正して Gemfile.lock を使わないようにします。
:: 2. Exec Bundler IF EXIST "%DEPLOYMENT_TARGET%\Gemfile" ( echo Executing bundle install PUSHD "%DEPLOYMENT_TARGET%" %JRUBY_EXE% -S "%JRUBY_BUNDLER_CMD%" install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 IF !ERRORLEVEL! NEQ 0 goto error POPD )
これで Azure Web Apps に必要な設定は終わったので、Redmine 自体の設定を行います。
Redmine の設定を変更する
サーバーとして今回も puma を使うので、Gemfile に追記しておく必要があります。
gem "puma"
当然ながら忘れると、最後の最後で動かなくなるので注意です。
config\database.yml ファイルも必要なので、サンプルをリネームして SQLite を使うように書き換えます。
production: adapter: jdbcsqlite3 database: db/redmine.db encoding: utf8
これで準備が出来たので、Git リポジトリを作成して Azure Web Apps へデプロイする準備を行いますが、database.yml は .gitignore に書かれているので、そのままだとコミットされない点だけ注意したいです。
Web Apps へデプロイ
このままデプロイすることで JRuby と必要な gem がインストールされますが、更に少しコマンドを叩く必要があるので Kudu の Debug Console から作業を行います。
と言っても、ドキュメント通りに rake を実行するだけです。
set PATH=D:\home\site\wwwroot\bin\jruby-1.7.20\bin\;%PATH% set RAILS_ENV=production jruby -S bundle exec rake generate_secret_token jruby -S bundle exec rake db:migrate jruby -S bundle exec rake redmine:load_default_data
全て実行に成功すると、ブラウザからのアクセスで Redmine が立ち上がるようになります。
初回起動には時間がかかりますが、一度起動してしまえばサクサク動くようになります。以前に 2.5 を動かした時よりも快適かもしれません。
メモリを結構必要とするので、B1 以上のインスタンスで Always On を有効にして使うのが現実的かなと思いました。少し弄ったぐらいですが、実用出来るレベルだと感じました。
大きなはまりどころもなく、デプロイスクリプトを使って理想的な形でデプロイ可能なので、Azure Web Apps で Ruby を動かす場合は JRuby が一番良いかなと思いました。
標準でインストールされるとパフォーマンスが改善されると思うので、少しぐらい期待してみたいです。