シェリス様つくるのになんとなーくタスク管理とかしたかったので再度Redmineを投入してみました*1。
前回はTomcat+JRuby+Redmineな環境でしたが、今回はApache2でやりたかった。
そしてすごく嵌ったのである。ぶっちゃけWindows+Apache環境でRedmineなんて考えないほうがいいと思います。
以下2日間の戦いの記録
最初
最初はApache2+mod_rails(Passenger)+Redmineにしておこうと思っていました。でとりあえず準備としてRuby 1.8.7を投下したわけです。
ついでにRailsとRackとかもいれたんですが、ここが最初の障害。なんでかって、Railsのバージョンが問題でした。
RedmineはRails2.3.5でしか動かなかった。Rails3系だと動きません(´・ω・`)
というよりもRubyにgemでrails入れるとおかしくなるんで入れんなや、ということらしい。
でもRackとRakeは必要
バージョン問題はもっと出ましたけどね
とりあえず最新ってことでgemとかも1.6いれてたら、こんどはrakeでsession_store.rbの生成ができない。ググルとそこにはバージョン依存の影がいっぱい(∩゚д゚)アーアー
gemが1.6だとなんかコケる。ググった先の先人の知恵を借りてgemのバージョンを1.4.2に下げる
一応起動したんですがね
その後WEBrickでの起動は成功しました。で、Apache2に組み込む段階でとりあえずPassengerを使おうとしたらコンパイルできねぇでやんの。
ということでとりあえずmod_rubyを使いました。
mod_rubyは無理 (設定的に)
で、先人の通りにrails-dispatcherとかを設定したらaction_web_serviceとかなんやらかんやらモジュールロードができない系の問題が出たので諦めた。*2
そんならFastCGI
まだ対応してそうなFastCGIを使おうとして、やっぱ無理ってなりました。
FastCGI自体は投入できたんですが、Rubyのfcgiモジュールが…。
なにしろtrapっていうシステムコールを使ってんですけどこちとらWindowsなんでそれっぽい関数とか一切無いわけですよ。
あとノンブロッキングIO系の関数もなかった。
まぁそのあたりは回避できるんですが、Unknown listenType 0とかいうエラーが出たときはもうヽ(`Д´#)ノ ムキー!!状態でしたね。
だって、FastCGIのWindowsのOS系関数 (os_win32.c) を読む限り、listenTypeはOS_CreateLocalIpcFdでport番号を基準に設定されてたんですが、どうも呼ばれるルートがなさそうなんですよね。
FCGX_OpenSocketから呼ばれるようなんですがね、InitとかInitRequestとかruby-fcgiモジュールが呼んでいる関数から呼ばれていないんで、結局listenTypeはFD_UNUSEDのまま。そりゃ動かんわ。