【问题标题】:Apache2 doesn't execute .rb files (mod_ruby)Apache2 不执行 .rb 文件 (mod_ruby)
【发布时间】:2011-10-24 19:25:00
【问题描述】:

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

如果我打开 /etc/apache2/mods-enabled/ruby.load 有一行包含执行此 mod 的路径。

我还在我的 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​​。另外请保持简单,我是 apache 的新手。

【问题讨论】:

  • 你提到 mod_ruby 应该被加载,但我想检查/etc/apache2/mods-enabled/ruby.load中是否有指向@中适当脚本的链接并没有什么坏处987654324@
  • 两个 ruby​​.load 文件(在 mods-enabled 和 mods-available 中)都有指向 mod_ruby.so 的同一行。 - 我检查了它是否存在于他们指向的目录中。

标签: ruby apache2


【解决方案1】:

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

另外,考虑尝试Sinatra - 它是一个微型 Web 框架,就像普通的 ruby​​ 文件一样简单。它与 Passenger 一起运行,这是 有据可查的 Apache Ruby 模块。

【讨论】:

  • 我使用的是 debian,所以根据你提到的文章,只需通过 apt-get 安装 mod_ruby 就足够了。我还尝试将该文章中提到的行添加到 apache2.conf
【解决方案2】:

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

AddType text/html .rb .rbx

这里还有几个我觉得很有帮助的网站:

【讨论】:

    【解决方案3】:

    Debian Stretch 9.

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

        AddHandler cgi-script .rb
    

    【讨论】:

    • 好的,现在我意识到,OP 已经走到这一步了,这并不能真正回答 OP 的问题。但是我是通过谷歌来到这里的,其他人也会。此外,听说libapache2-mod-ruby 显然已经变成了一个不存在的东西可能会很有趣。
    猜你喜欢
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    相关资源
    最近更新 更多