第5回 Apache2でmod_ruby
2002/6/16
Apacheの次期バージョンが出てApache2が出ました。
待望のマルチプロセッサに対応したようです。エンタープライズ用途ではWebLogicやWebSphereがWebサーバとして多いのですが、Javaが要らない人にはまだまだApacheの需要が高いです。
WebLogicやWebSphereもApacheと連携して動くこともできるので既にマルチプロセッサで使っているエンタープライズサーバはApache2でさらにパフォーマンスがあがることが予想されます。
mod_rubyは基本的にApache2を前提に作っていないそうなのですが、Apache2でも少しの変更で利用できるようになります。
さすがに全部の機能は使えないようですが、普通に使う分には特に問題なく使えます。
ところで、Apache1.3.24/2.0.36以前のバージョンでバグが見つかっています。
なるべく古いの使っている人は早めにバージョンアップしましょう。
1.Apache2のインストール
Apacheのホームページからソースを入手します。
%tar zxvf httpd-2.0.39.tar.gz
% cd httpd-2.0.39
% ./configure --enable-so
% make
% su
Password:
# make install
# make clean
# /usr/local/apache2/bin/httpd -v
Server version: Apache/2.0.39
Server built: Jun 20 2002 00:52:55
2.mod_rubyのインストール
1.x.x版のApacheでmod_rubyを既にインストールしていてもApache2をインストールしたらmod_rubyを入れ直さなければいけません。
mod_rubyはmod_rubyのホームページから入手可能です。
mod_ruby0.9.xはApache2には完全対応していないようです。
制限として以下のようなものがあります。
(1) 静的モジュールとして組み込むことができない(DSOのみ)
(2) APIが異なるため一部のメソッドが利用できない
ほとんどの場合、楽なのでmod_rubyは動的モジュールで組み込んでいると思うのでそれほど影響がないと思います。
また使えない一部のメソッドというのも、普通に使っている分にはそれほど困らないと思います。ちなみにconfigureするときに--with-apacheオプションを付けるとconfigureが止まってしまいます。
% tar zxvf mod_ruby-0.9.9.tar.gz
% cd mod_ruby-0.9.9
% ./configure.rb --enable-eruby --with-apxs=/usr/local/apache2/bin/apxs
% make
% su
Password:
# make install
# make clean
もともと静的モジュールは使えないのでこのオプションはつけないようにしましょう。
あと、httpd.confの中身も変えます。
mod_ruby.soの場所がだいぶ変わっているみたいです。インストール時にprefix変更している人はさらに変更をかけなければいけないかもしれません。
<変更前>LoadModule ruby_module /usr/local/apache/libexec/mod_ruby.so
<変更後>LoadModule ruby_module /usr/local/apache2/modules/mod_ruby.so
3.おまけ
Apache2は初代Apacheと互換性が高いのですんなり入っていくことができますが、いくつか変わったことがありました。
モジュールとhttpd.confの関係が厳しくなっています。
これまで、httpd.confに使っていないモジュールの設定が入っていても無視してくれたのですが、apache2ではSyntax errorになってしまいます。
セキュリティに配慮されていい傾向だとおもいますが、なかなか動いてくれないというのが難点です。
configtestをかけるとおかしいところを教えてくれるのでその都度削除していけばすぐにできると思います。
また、Internal Server error(500)が発生するとENV["SERVER_SOFTWARE"]が表示されるようになりました。
rubyと表示されるのでちょっとうれしいのですが、悪用されないかがちょっと心配です。