2013/01/27
ruby‐mod_ruby
Ubuntu Linux 10.04.3 の Apache に mod_ruby をインストールしたメモです。
これで拡張子が .rb と .rbx は CGI として ruby が、拡張子が .rhtm は eruby が起動するはずです。
ruby は 1.9.3 のバージョンをコンパイルして入れたのに、mod_ruby は 1.8.7 なのだ!
参考サイトは以下のサイトです。
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_VERSIONruby.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.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 は 1.9.3 のバージョンをコンパイルして入れたのに、mod_ruby は 1.8.7 なのだ!