mod_ruby+erubyのRPMインストール

環境

# cat /etc/issue
CentOS release 5.5 (Final)

# uname -a
Linux 2.6.18-194.26.1.el5 #1 SMP Tue Nov 9 12:54:20 EST 2010 x86_64 x86_64 x86_64 GNU/Linux

# ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]

# httpd -v
Server version: Apache/2.2.3

# rpm -qa |grep -i apr
apr-util-1.2.7-11.el5_5.2
apr-devel-1.2.7-11.el5_5.3
apr-util-devel-1.2.7-11.el5_5.2
apr-1.2.7-11.el5_5.3

手順

eruby のインストール
 # yum install eruby
mod_ruby のインストール
 ### SRPM の取得
 $ wget ftp://nic.funet.fi/.m/mirrors2/archive.redhat.com/contrib/libc6/SRPMS/mod_ruby-1.1.2-1.src.rpm
 ### SRPM のインストール
 $ rpm -ivh mod_ruby-1.1.2-1.src.rpm
 ### mod_ruby のtar ボールの取得
 $ cd /usr/src/redhat/SOURCES
 $ wget http://www.modruby.net/archive/mod_ruby-1.3.0.tar.gz
 ### SPECファイルの修正
-Version: 1.1.2
+Version: 1.3.0
…
-./configure.rb --with-libapreq-includes=%{_includedir}/apr-0
+./configure.rb --with-libapreq-includes=%{_includedir}/apr-1 --with-apr-includes=%{_includedir}/apr-1
 ### RPM ビルド
 $ rpmbuild -ba mod_ruby.spec
 ### RPM インストール
 # rpm -ivh /usr/src/redhat/RPMS/x86_64/mod_ruby-1.3.0-1.x86_64.rpm

利用

Apache の設定
 LoadModule ruby_module modules/mod_ruby.so
  • VirtualHost 設定
<Directory /var/www/html/public>
    Options ExecCGI FollowSymLinks

    <Files *.rb>
      RubyRequire apache/ruby-run
      SetHandler ruby-object
      RubyHandler Apache::RubyRun.instance
    </Files>

    <Files *.rhtml>
      RubyRequire  apache/eruby-run
      SetHandler ruby-object
      RubyHandler Apache::ERubyRun.instance
    </Files>
</Directory>

# /etc/init.d/httpd reload

確認

/var/www/html/public/test.rb

 p Time.now

/var/www/html/public/test.rhtml

 <%= Time.now %>

アクセス


いじょ。

おまけ

mod_rubyRPM作成は途中であきらめかけたけど、tar を展開してみたら下記を見つけて、SPEC ファイルを書き換えてみたらうまくいったというかんじ。

configure.rb

548 AC_WITH("apr-includes") { |withval|
549   $APACHE_INCLUDES += " -I#{withval}"
550 }.if_not_given {
551   for dir in [ "/usr/include/apr-0" ]
552     if File.exist?(File.expand_path("apr.h", dir))
553       $APACHE_INCLUDES += " -I#{dir}"
554       break
555     end
556   end
557 }

やったことは、実際には/usr/include/apr-1 だったので、それを指定しただけ。

あきらめなくてよかった!