Apache2不执行.rb文件(mod_ruby)

时间:2011-10-24 19:25:01

标签: ruby apache2

我想让apache2运行ruby脚本。我设法通过使用CGI来做到这一点,但现在我想更进一步,用mod_ruby做。我通过apt-get安装了mod_ruby,因此应该启用它,但是当我访问http://localhost/test.rb时,我的浏览器会下载文件而不是显示它的输出。

如果我打开/etc/apache2/mods-enabled/ruby.load,则会有一行包含路径执行此修改。

我还在apache2.conf中添加了以下内容:

<IfModule mod_ruby.c>
  <Directory /var/www/>
    Options +ExecCGI
  </Directory>
  RubyRequire apache/ruby-run
  #RubySafeLevel 0
  <Files *.rb>
    SetHandler ruby-object
    RubyHandler Apache::RubyRun.instance
  </Files>
  <Files *.rbx>
    SetHandler ruby-object
    RubyHandler Apache::RubyRun.instance
  </Files>
</IfModule>

你能帮帮我吗?

PS。请不要建议使用ROR。我很熟悉。现在我只想出于教育原因使用ruby。还请保持简单,我是阿帕奇的新手。

3 个答案:

答案 0 :(得分:2)

请参阅this article - 它有一些说明。基本上你需要告诉Apache通过处理程序传递你的Ruby文件。

另外,考虑尝试Sinatra - 它是一个微型Web框架,就像普通的ruby文件一样简单。它与Passenger一起运行,这是用于Apache的记录良好的 Ruby模块。

答案 1 :(得分:1)

关于HowtoForge的文章几乎涵盖了整个故事,但我需要在<Directory /var/www>指令中添加一行以防止浏览器下载文件:

AddType text/html .rb .rbx

以下是我发现有帮助的其他几个网站:

答案 2 :(得分:0)

Debian Stretch 9。

我尝试使用mod_ruby安装apt-get install libapache2-mod-ruby,但没有该名称的软件包。最后,我要做的就是将这一行添加到apache-config中,以使服务器运行我的脚本。

    AddHandler cgi-script .rb