Windows XPにApacheを入れて、Ruby CGIを動かしてみる
さくらインターネットでrubyなCGIを動かす - 歩くパンケーキたちな流れで自宅サーバーを入れてみる。
私の環境は、Windows XPでノートパソコン…。まぁ試してみるだけなので…。
やはりApacheかなー…と思ったので、Apacheを入れてみる。邪道かもしれないけど、面倒なのでなんとかwidowsに入れたい。
参考は
と言っても、バージョンは2.2.11、including OpenSSL 0.9.8i (MSI Installer)を落としてきて、実行するだけ。コマンドプロンプトが勝手に開いたりしつつ、インストールされる。
http://localhost/を開いてみると、参考ページとは違い(バージョンが違うから?)「It works!」と表示される。動いているようです。
次、rubyのCGIを動かすための設定をする。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] インストールで困ってます。