Apache 2.x用のmod_fcgi.dllは全滅

2006/11/28にWindows環境でApache 2.2をインストールしてRuby on Railsをfcgiで動かそうとしていたときに、結局はApache 2.2は2.0からもヘッダ定義等が変更されて、2.0用のモジュールはバイナリ互換ではなくなってしまったのが原因で四苦八苦していたときの話し。

せっかく書き留めていたので、一応参考記録として残しておこうと思います。

そもそも、モジュールは下記の場所からダウンロードしたのだが、今日(2/23)確認してみると2.2用のDLLがあるので、今はそれを使えば問題ないんでしょう(試してません)。

http://www.apachelounge.com/download/

やはりオープンソースはソースからコンパイルが基本なのかなと再確認。Windows環境でバイナリが流通の基本というのに慣らされてしまっていることを改めて痛感。開発者のはしくれとしては、やはりLinux環境でソースからコンパイルするという基本に戻るのが正解かなとも思いますが... やっぱ、個人でWindowsの開発環境を整備するのはコストが結構かかりすぎですよね。

============

fcgidはApache 2.2用と書いてあったがなぜか動作せず。Loadmoduleではこけなくなったが、Apacheでcrashしてしまう模様。
gem install fcgi
をやると

Building native extensions. This could take a while...
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.


Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby1.8
--with-fcgi-dir
--without-fcgi-dir
--with-fcgi-include=${fcgi-dir}/include
--with-fcgi-lib=${fcgi-dir}/lib
ERROR: While executing gem ... (RuntimeError)
ERROR: Failed to build gem native extension.
Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/fcgi-0.8.7 for inspection.
ruby extconf.rb install fcgi -- --with-fcgi-include=/usr/include --with-fcgi-lib=/usr/lib\nchecking for fcgiapp.h... no
checking for fastcgi/fcgiapp.h... no


Results logged to /usr/lib/ruby/gems/1.8/gems/fcgi-0.8.7/ext/fcgi/gem_make.out

みたいなエラーでインストールできず。

http://rubyforge.org/frs/?group_id=926からruby-fcgi-0.8.7.tar.gzファイルをもってきて、指示通りのインストール手順をやったが、
ruby install.rb config --without-ext
は、通ったが、結局
ruby install.rb setup
で失敗。
ruby install.rb install
まで、いかずどうもダメっぽい。
RubyforApacheとかいうのもインストールしてみたがどうも関係なさそう。

結局、Product Rail for WindowsがApache2.2を含んでfastcgiで統合と書いてあったので、さすがにこの環境からやればいいだろうと思い、VMWare環境にインストールして、バイナリのDiffをとってPRW側にあるものだけ(mod_fcgi.so等)をコピーしてきたら動作した。最初からPRWを使えば良かったのかも知れんが、モジュールの関係等がよく分かって勉強になったので良しとする。
ここで何で動いたかを考えると、Apacheのbinディレクトリに置くランタイムライブラリが不足していただけなのかなと。fcgidを再度試す価値はありそうなので、明日やってみることにする。

ということで、 fcgidを再度試したが、どうもページへの権限がない等となってしまうので、Apacheの設定変更であとはいけるのかも知れないが、よくわからない。とりあえず少し現象がマシになったのでやはりランタイムは必要のよう。fcgidを使うときは、多分、ruby gemのfcgiがインストールされないとだめということなのだろうが、よくわからん。

This entry was posted in インターネット, コンピュータ, 技術 and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *