Windows XPにApacheを入れて、Ruby CGIを動かしてみる

さくらインターネットでrubyなCGIを動かす - 歩くパンケーキたちな流れで自宅サーバーを入れてみる。
私の環境は、Windows XPでノートパソコン…。まぁ試してみるだけなので…。
やはりApacheかなー…と思ったので、Apacheを入れてみる。邪道かもしれないけど、面倒なのでなんとかwidowsに入れたい。
参考は

http://2php.jp/php/install_apache_windows.html

と言っても、バージョンは2.2.11、including OpenSSL 0.9.8i (MSI Installer)を落としてきて、実行するだけ。コマンドプロンプトが勝手に開いたりしつつ、インストールされる。
http://localhost/を開いてみると、参考ページとは違い(バージョンが違うから?)「It works!」と表示される。動いているようです。

次、rubyCGIを動かすための設定をする。httpd.confを書き換える。参考は、

のあたり。C:\Program Files\Apache Software Foundation\Apache2.2\confのhttpd.confを編集。
なんか色々あってよく分からないが、

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

の部分(340行目)を、

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
    AllowOverride All
    Options +ExecCGI
    Order allow,deny
    Allow from all
    SetHandler cgi-script
</Directory>

に書き換える。

#AddHandler cgi-script .cgi

の部分(392行目)を

AddHandler cgi-script .cgi .rb

に。
Apacheをリスタート。
cgi-binの中に、先ほどのさくらインターネットでrubyなCGIを動かす - 歩くパンケーキたちで最初に書いたhello, worldを表示するプログラム(helloworld.cgi)を移動。
http://localhost/cgi-bin/helloworld.cgiをブラウザで表示。
Internal Server Error…。うーん。エラーログ(logs/error.log)はhttp://d.hatena.ne.jp/shingotada/20070322/1174567452と違うけど、ためしにと思って、hellowworld.cgi

#!/usr/local/bin/ruby

#!ruby

に書き換えてみる。
やはりあっさり動いた。よく分からないけど…。コメント欄にアクセス権…って書いてあるけど、Windowsだからな…。
あ、って、パスが間違ってるんじゃないか(恥)上の部分をrubyの入っているディレクト

#!/Program Files/ruby/bin/ruby.exe

にしても動きました。rubyだけでも動いたのはたぶん予めrubyのパスを通してあったからですね。…基本的だ…。
参考[結] 2004年8月 - 結城浩の日記

同じく、先ほどのさくらインターネットでrubyなCGIを動かす - 歩くパンケーキたちで参考にして上手くいった、http://rubycgi.org/cgi_explanation/2-3.htmが上手くいかない。htmlを実行するとInternal Server Error。エラーログにはensure interpreted scripts have "#!" first line。何?HTMLファイルの頭に#!行を書くのはおかしいし…。
調べるとcgi-binフォルダの中にHTMLを入れているのがまずい感じ。よって、最初のサーバーテストで表示されるようになっているhtdocsフォルダの中に新しく、フォルダtestを作り、その中にindex.htmlとしてHTMLを記入。その中のCGIファイルへのパスは以下のように。CGIの名前をtest.cgiとして、cgi-binのフォルダの直下に置いた場合。

<form action="/cgi-bin/test.cgi" method="POST">

それでhttp://localhost/test/index.htmlとして実行。上手く行きました。
参考[PHP-users 12812] インストールで困ってます。