しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Azure Web サイトで Redmine 2.5 を動かしてみた

Windows Azure Web サイトが Java に対応したので Ruby on Rails を動かしてみた - しばやん雑記 で試してみた Ruby 1.9.3 / Thin 1.6.2 という環境がどのくらいパフォーマンスが出るのかと気になったので、割と有名どころな Redmine をインストールして確認してみました。

とりあえずインストールの手順を書いていきますが、Ruby 1.9.3 や Thin のインストールは前回と同じなので省略します。

というか、Redmine のインストール手順に関しては、日本語版のドキュメントが非常にわかりやすく、今回もこの手順通りに Kudu を使って行っただけだったりします。

Redmineのインストール — Redmine Guide 日本語訳

なのでインストール時の注意点だけを書いていきます。ダウンロードしたバージョンは最新の 2.5 です。

Download - Redmine

まずは当然ながらサーバとして Thin を使うので Redmine のルートに Gemfile.local を作成して以下のように追記しておきます。

# Gemfile.local
gem "thin"

thin はネイティブなコードを含んでるっぽいので、devkit を正しく設定していないと失敗します。

あと Bundler を使ったインストール時に失敗するかもしれないので、その場合は gem を使ってインストールします。

gem install thin

そして Redmine のドキュメントを見ると mysql2 をインストールしなさいと書いてあるんですが、普通に gem install してもエラーになってしまいます。

正直よくわからなかったので先人の知恵に頼ったところ、以下の記事が参考になりました。

gem install mysql2 がうまくいかない - Railsプロになろう!

どうやらビルドするために MySQL のインストールディレクトリに含まれている include と lib ディレクトリが必要みたいです。しかし、Web サイトにインストールされている MySQL には include ディレクトリが存在しなかったので、ローカルからディレクトリを Web サイトへ持っていきました。

gem install mysql2 -- '--with-mysql-lib="D:\home\mysql\lib" --with-mysql-include="D:\home\mysql\include"'

注意点としては MySQL は 32bit 版を使わないとビルドに失敗することと、実行前に ruby.exe と同じ場所に libmysql.dll を置いておかないとエラーになることぐらいでしょうか。

これで mysql2 のビルドも通るので、ClearDB の設定を行えば、Redmine 側の準備は完了です。

これからは Web サイト側の設定になるのですが、前回は Java を有効にして httpPlatform 構成を追加しましたが、Java を有効にすることなく汎用的に使える Web.config を作成したので、今回はこっちを使ってみます。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="httpPlatformHandlerMain" modules="httpPlatformHandler" path="*" verb="*" resourceType="Unspecified" />
    </handlers>
    <httpPlatform processPath="%RUBY_HOME%\bin\ruby.exe" arguments="%RUBY_HOME%\bin\thin -e production -p %HTTP_PLATFORM_PORT%  -c '%RAILS_ROOT%' start" startupTimeLimit="60" startupRetryCount="5" />
  </system.webServer>
</configuration>

あとはこの Web.config を wwwroot 直下において、管理ポータルのアプリケーション設定から RUBY_HOME と RAILS_ROOT を追加するだけです。

f:id:shiba-yan:20140316165319p:plain

今回は Redmine のコードを wwwroot に置いてあるので、このような設定にしてあります。

そして普通に Web サイトにアクセスすると Redmine が起動してくれるはずです。

f:id:shiba-yan:20140316170021p:plain

以前に FastCGI を使って Radiant CMS を動作させた時よりもサクサク動いている気がします。改造した fcgi を使わずに済むという点でもいい感じです。