[Ruby] CGI
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は,文字コードと改行コードに気をつけよう.