redmineインストール・Windows Server + IIS編

要件

rubyのインストール

http://rubyforge.org/projects/rubyinstaller/からバイナリをダウンロードしてインストール。
インストール時にgemを有効にしておく。

>ruby -v
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
>gem -v
1.3.1

http://www.garbagecollect.jp/ruby/mswin32/ja/だとx64版(1.9.1)もあり。未確認。こっちは別途gemのインストールが必要?

2009-05-29追記:確認しました。詳しくはこちら

railsのインストール

0.8.4でもit's still running with Rails 2.1.2.とのことなので、2.1.2をインストールする

  1. 管理者権限でコマンドプロンプトを起動
  2. gem install rails --version "2.1.2"

MySQLのインストール

MySQL :: Download MySQL Community ServerからWindows用バイナリをダウンロード
何故かx64版を入れたら "Cannot create Windows Service for MySQL.Error:0" が出て失敗する*1ので、中途半端に出来たサービスを削除して再インストール。

MySQLのCommand Line Clientを起動して、redmine用のユーザーを作成する。

create database redmine default character set utf8;
grant all privileges on redmine.* to redmine identified by 'パスワード';

redmineのインストール

  1. tortoisesvn.tigris.orgからTortoiseSVNをインストール
  2. 適当なフォルダ(e.g. c:\redmine)に http://redmine.rubyforge.org/svn/tags/0.8.4/ をチェックアウト
  3. database.ymlの編集
  4. rake db:migrate RAILS_ENV="production"
  5. rake load_default_data RAILS_ENV="production"
  6. email.ymlの編集

ruby script/server -e production でサーバー起動 → http://localhost:3000/ で動作確認完了。

Mongrelのインストール

Windowsサービスにするので、mongrel_serviceをインストールする

>gem install mongrel_service

example.com/redmine/ でアクセスするため、Redmineをサービスに登録する - bnoteおよび、http://blog.fulltext-search.biz/articles/2007/07/21/rails-on-subdirectory-operationの記述を参考に下記のように設定

>mongrel_rails service::install -N "Redmine" -c c:\redmine -p 3000 -e production --prefix /redmine
** Copying native mongrel_service executable...
Mongrel service 'Redmine' installed as 'Redmine'.

>sc config Redmine start= auto depend= MySql
[SC] ChangeServiceConfig SUCCESS

>net start Redmine
Redmine サービスを開始します.
Redmine サービスは正常に開始されました。

services.mscを起動して、Redmineサービスを開始 → http://localhost:3000/redmine/ で動作確認完了。

mongrel_serviceが最新(2008/12/15現在)のwin32-service(0.6.1)では動作しないという記述もありましたが、今のところ、win32-service 0.6.1 & mongrel_service 0.3.4で問題無さそうです。


2009-05-21追記:
gem install mongrel_service だけでインストールした場合は、win32-service 0.5.2がインストールされるようです。

Application Request Routing Module(ARR)のインストール

tomcatapache経由で参照する場合と同様に、IIS経由でmongrelを使用する場合、mod_proxy_ajpに相当するものとして、Application Request Routing Moduleというものがあるようです。

ARRと言う名称ですが、以下のモジュール全てがインストールされるようです。

とりあえず、Install Application Request Routing | Microsoft Docsのとおりにインストールしてみたんですが、何故かARRだけがインストールに失敗orz
ログ見たら、"Error in function InstallWindowsHotfixQuietly"というのが出ていたので、それを元にこの辺を見ていたのですが、どうやら、リモートデスクトップで自分のユーザー(Administratorsグループ)から実行していたのがまずかった模様。

以下、インストール手順

  1. administratorユーザーでログイン
  2. コマンドプロンプトを管理者権限で実行
  3. net stop was /y
  4. net stop wmsvc /y
    • IIS7の役割サービスで、 管理ツール - 管理サービス をインストールした場合
  5. EXEファイルをダウンロード
  6. EXEファイルを管理者権限で実行
  7. %TEMP%\arr_setup.log を開いて、全てのモジュールがSuccessになっていることを確認
    • %TEMP%に無い時は、1個上にあったりします。
  8. net start was
  9. net start wmsvc
  10. IISマネージャを起動
  11. IISの機能に"Application Request Routing"と"URL Rewrite"が追加されていることを確認。
  12. アプリケーション プールで、DefaultAppPoolの詳細設定を開く
  13. プロセス モデル - アイドル状態のタイムアウト(分)を0(無効)に変更→OK
    • 必要?

IIS Application Request Routingの設定

  1. [Enable proxy]をON
  2. [Proxy Type] - [Use URL Rewrite to inspect incoming requests]をON
  3. [Proxy Type] - [Reverse proxy:]に localhost:3000 を記入
  4. 適用

URL Rewriteで確認すると、ARR_server_proxyルールが出来てます。

Pattern
*
Rewrite URL
http://localhost:3000/{R:0}


このままだと全てのアクセスがリライトされてしまうため、下記のようなコンディションを追加

Input Type Pattern
{REQUEST_URI} Matches the pattern /redmine*


http://example.com/redmine/ で、redmineにアクセスできるのを確認。


補足:Match URLを下記のように変更する対応もあります。この場合はCondition不要。

項目名 before after
Using Wildcards Regular Expressions
Pattern * (redmine.*)

どっちの方がパフォーマンスが良いかは不明。
ConditionはMatch All / Match Anyなので、場合によってはこっちを使った方が良いのかも。


例えば、ディレクトリを切らずに http://redmine.example.com/ でサービスを提供する場合は、下記の様に設定(正規表現使用時、サーバーのIPを192.168.0.1とした場合)。

セクション 項目名 設定値
Match URL Pattern (.*)
Condition {HTTP_HOST} redmine.example.com
Action Action Type Rewrite
Action Rewrite URL http://192.168.0.1:3000/{R:0}


*1:再度手順通り試した所再現せず。Administratorユーザーで作業していなかったため?