RubyをCGIで動かしてみようと思った.
MacOSX環境下でPHPは,デフォルトでサクっと動くから,Rubyも・・と思っていたら・・・・動かない.
apache用のモジュールのインストールから始める.

Rubyのアップデート

mod_rubyは,[[modruby.net>http://modruby.net/ja/]]で配布されている.
しかし!DeveloperToolsでは,Rubyのソースコードがインストールされないのだ.
というわけで,Rubyの最新版のインストールから行っていくことになる.
MacOSX Tiger 10.4.5では,Rubyは,1.8.2がインストールされる.
2006/03/09現在,Rubyの最新バージョンは,1.8.4である.
そこで,ソースコードを[[Ruby本家>http://www.ruby-lang.org/ja/]]からダウンロードして,インストールする.インストールは,ファイルを解凍して,以下の手順.超簡単.

>cd ruby-1.8.4
>./configure --with-default-kcode=euc --prefix=/usr --enable-shared
>make
>sudo make install

configureのスイッチは,他のWebから抜粋.どこに書いてあったかは・・・忘れました.
これで,rubyのインストールが完成するが,このインストールの場合,rubyが二重に存在してしまう.
上記の方法でインストールすると,rubyは,/usr/local/binにインストールされる.デフォルトのrubyは,/usr/binにある.そこで,デフォルトのrubyをリネームし,/usr/local/bin/rubyのシンボリックリンクを/usr/bin/に張ることにする.

>sudo mv /usr/bin/ruby /usr/bin/ruby.1.8.2
>sudo ln -s /usr/local/bin/ruby /usr/bin/ruby

とする.ここで,versionを確認する.

>ruby --version
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.5.0]

以下のようになっていれば,Rubyのバージョンアップ完成だ.

eruby,mod_rubyのインストール

erubyとは,HTMLにかかれたRubyを実行するためのモジュール.
こいつも,mod_rubyのインストールの前にインストールしておく.
[[modruby.net>http://modruby.net/ja/]]からerubyとmod_rubyをダウンロードし,インストールする.
先にerubyをインストール.

>cd eruby-1.0.5
>./configure.rb --enable-shared --with-charset=EUC_JP --prefix=/usr
>make
>sudo make install

次にmod_rubyをインストール

>cd mod_ruby-1.2.5
>./configure.rb --with-apxs=/usr/sbin/apxs --enable-eruby ?
--with-eruby-includes=/usr/include ?
--with-eruby-libraries=/usr/lib
>make
>sudo make install

これでApacheで動かせる環境が整う.

Apacheを設定

httpd.confを編集し,Rubyのモジュールを読み込むように設定する.

LoadModule ruby_module libexec/httpd/mod_ruby.so
AddModule mod_ruby.c

以上,2行をloadModuleが並んでいるあたりに書き足す.
次にCGIを実行できるように自分のフォルダパスを設定する.


AddHandler cgi-script cgi
Options Indexes MultiViews ExecCGI
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.1

以下の記述を追加し,モジュール設定をする.


RubyRequire apache/ruby-run

SetHandler ruby-object
RubyHandler Apache::RubyRun.instance

RubyRequire auto-reload

以下の記述がコメントアウトされているが,コメントアウトを解除する.

AddHandler cgi-script .cgi

ここまで編集したら,以下のコマンドでApacheを再起動する.

>sudo apachectl restart

確認

/Users/yourname/Sites/cgi/にbasic.cgiをファイルを作成し,

#!/usr/local/bin/ruby
print "Content-type: text/html?n?n"
print "","Ruby CGI動作",""

以上のように記述し,ブラウザで,http://127.0.0.1/~yourname/cgi/basic.cgiにアクセすると,
Ruby CGI動作と表示されるはず.インストール完了である.
basic.cgiは,文字コードと改行コードに気をつけよう.