RubyでHTML

RubyでWebスクリプトCGI)を書きたい(not Rails
ってことで調べてみた。
考えたら、PHPみたいにHTML吐き出し前提じゃないしね。
こう考えるとPHP手軽だなって改めて思いました。

流れ

実行環境:Fedora17 64bit on VirtualBox

  1. Rubyインストール(省略)
  2. Apacheインストール(省略)
  3. http.confの設定変更
  4. ソース書いてドキュメントルート以下にソース設置
  5. ブラウザからアクセス

http.confの設定変更

前提としては、perlでやるようにCGIの設定を行う。

CGIのモジュールが有効になっていること

# コメントアウトされていないか確認
LoadModule cgi_module modules/mod_cgi.so

任意のDirectoryディレクティブの設定。下記2行追記(今回はYumでインストールしたときのデフォ)

<Directory "/var/www/html">
  :
<省略>
  AddHandler cgi-script .rb  # ←.rbの拡張子でCGIが動作するよう設定
  Options +ExecCGI           # ←CGI実行  
<省略>
  :
</Directory>

コーディング

ためしにこんな感じで。

#!/usr/bin/ruby
print "Content-type: text/html\n\n";

print <<EOF
<html>
<head>
</haed>
<body>
hello,world
</body>
</html>
EOF


トラブルシューティング

アクセスしたらInternalSefverError.ログみると以下がでてた

(13)Permission denied: exec of '/var/www/html/hoge.rb' failed

権限の問題かーとおもって実行権限やオーナー確認しても問題なし。。
Apacheの設定を見直しまくるも問題なし。。



実は、SELinuxが邪魔してた模様。。

# setenforce 0

ちゃんとアクセスできた。
罠すぎる。