在Apache中设置Ruby CGI

我想通过CGI在Apache中使用Ruby。 我有我的configuration文件中的以下内容:

DocumentRoot /home/ceriak/ruby <Directory /home/ceriak/ruby> Options +ExecCGI AddHandler cgi-script .rb </Directory> 

test.rb是放在/home/ceriak/ruby/#!/usr/bin/ruby包含在第一行并给出了可执行的权限。 不过,当我访问localhost/test.rb我得到一个下载窗口,并可以获得源代码。

有趣的是,当我将相同的脚本放在/usr/lib/cgi-bin/并调用localhost/cgi-bin/test.rb它的工作方式与假设一致。

(Ubuntu 9.10上的Apache2)。

任何想法?

几件事情检查:

  • 你的文件是可执行的吗 您可以通过执行chmod +x /path/to/file来使其可执行
  • 你输出了正确的内容类型吗?
  • 你的头文件和输出之间是否有一个空白的换行符?
  • 设置完配置后,你重新启动了Apache吗?

如果你这样做,它应该工作正常。 我有这个作为我的test.rb文件:

 #!/usr/bin/env ruby puts <<EOS Content-type: text/html <html><body>hi</body></html> EOS 

我跑到了相同的情况,并能够通过在AddHandler后添加以下行来解决它:

 Require all granted 

仔细检查mod_cgi是否启用; 默认的优胜美地http.conf已禁用。