2013/01/27

ruby‐mod_ruby

Ubuntu Linux 10.04.3 の Apache に mod_ruby をインストールしたメモです。

参考サイトは以下のサイトです。

mod_ruby のインストール

sudo apt-get install libapache2-mod-ruby
で /usr/lib/apache2/modules/mod_ruby.so と /etc/apache2/mods-available/ruby.load がインストールされ、/etc/apache2/mods-enabled に ruby.load のリンクが張られます。

ruby.conf の作成
/etc/apache2/mods-available に ruby.conf を作成します。
内容は以下の通りです。

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

  RubySafeLevel 1

  AddType text/html .rb
  AddType text/html .rbx
  AddType text/html .rhtml

  <Files *.rb>
    SetHandler ruby-object
    RubyHandler Apache::RubyRun.instance
  </Files>
  <Files *.rbx>
    SetHandler ruby-object
    RubyHandler Apache::RubyRun.instance
  </Files>
  <Files *.rhtml>
    SetHandler ruby-object
    RubyHandler Apache::ERubyRun.instance
  </Files>
</IfModule>
ruby.conf のリンクを張るために下記を実行します。
a2enmod ruby

apache の再起動

sudo /etc/init.d/apache2 restart
で apache を再起動します。
これで拡張子が .rb と .rbx は CGI として ruby が、拡張子が .rhtm は eruby が起動するはずです。

ruby ファイル、eruby ファイルの準備
ruby.rb ファイルの内容を以下のようにしました。

puts ".rbファイルテスト"
puts '<br />'
puts RUBY_VERSION
ruby.rbx ファイルの内容を以下のようにしました。
puts ".rbxファイルテスト"
puts '<br />'
puts RUBY_VERSION
上記2つのファイルには実行権限を付与します。
chmod 755 ruby.rb
chmod 755 ruby.rbx
また、上記2つのファイルを格納したディレクトリには Apache の Options に ExecCGI を指定する必要があります。
<Directory /www>
  Options ExecCGI
</Directory>
ruby.rhtml ファイルの内容を以下のようにしました。
<!DOCTYPE HTML>
<html>
  <head>
    <meta charset="utf-8">
    <title>md_ruby テスト</title>
  </head>
  <body>
    <%= ".rhtmlファイルテスト" %>
    <br />
    <%= RUBY_VERSION %>
  </body>
</html>

ブラウザで確認
ruby.rb の場合
ruby.rb
ruby.rbx の場合
ruby.rbx
ruby.rhtml の場合
エラーとなりました。Apache のエラーログに下記のようなログが吐き出されていました。

mod_ruby: /usr/lib/ruby/1.8/apache/eruby-run.rb:45:in `require': no such file to load
 -- eruby (LoadError)
eruby がインストールされていないようです。
sudo apt-get install eruby
で無事にインストールされました。
ruby.rhtml
ruby は 1.9.3 のバージョンをコンパイルして入れたのに、mod_ruby は 1.8.7 なのだ!