2007年11月18日日曜日

mod_ruby on CentOS 5 インストールメモ

インストール手順

  1. apxs(APache eXtenSion)が必要なのでhttpd-develをインストール
    yum -y install httpd-devel
    ・けっこう時間がかかる
    ・apxsは /usr/sbin/apxs にできた
  2. modruby.netから最新版のmod_rubyをダウンロード&解凍
    wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz
    tar zxvf mod_ruby-1.2.6.tar.gz
  3. makeの準備
    cd mod_ruby-1.2.6
    ./configure.rb --with-apxs=/usr/sbin/apxs --with-apr-includes=/usr/include/apr-1
    make
    make install
    ・--with-apr-includesを付けないとmakeできなかった
    ・参考:mod_rubyのインストール :: colorchips blog
  4. Apacheの設定ファイルを新規作成
    cd /etc/httpd/conf.d
    vi ruby.conf
    ・ruby.conf
     (2007/11/20 追記:ExecCGIの前に"+"を追加。そうしないとmod_rewriteとかが使えなくなる)
    LoadModule ruby_module modules/mod_ruby.so

    <IfModule mod_ruby.c>
    RubyRequire apache/ruby-run

    # /ruby以下のファイルをRubyスクリプトとして実行する
    #<Location /ruby>
    # SetHandler ruby-object
    # RubyHandler Apache::RubyRun.instance
    #</Location>

    # *.rbをRubyスクリプトとして実行する
    <Files *.rb>
    SetHandler ruby-object
    RubyHandler Apache::RubyRun.instance
    </Files>

    #Rubyを実行するディレクトリでCGIを実行可能にする
    <Location /r>
    Options +ExecCGI
    </Location>
    </IfModule>


補足
  • mod_rubyはページ内容出力前にHTTPヘッダ情報を出力する必要がある
    • cgi.rbを使うとスマート
      require "cgi"
      cgi = CGI.new
      print cgi.header("type" => "text/html")
    • 参考:mod_ruby Wiki (ja) - FAQ
  • rbファイルのディレクトリの権限を777にすると、mod_rubyは loading from unsafe file で SecurityError になる
  • requireするファイルを変更した場合、Apacheを再起動するまで反映されない
    • 参考:mod_ruby Wiki (ja) - FAQ
      mod_rubyでは複数のスクリプトで一つのRubyインタプリタを共有します。 require 'foo'を実行した場合、ライブラリがロードされるのは 最初の一回だけなので、その後require 'foo'を実行しても ライブラリが再びロードされることはありません。
      (略)
      Apacheを再起動するか、デバッグ中はrequireの代りに loadを使ってください。


参考:
mod_ruby インストールガイド

0 件のコメント:

ブログ アーカイブ

tags