如何通过Apache(不一定使用Rails)执行Ruby脚本?


8

我正在尝试让Apache解释我的Ruby文件,但我不知道该怎么做。我现在不关心Rails,只关心Ruby。我通过Google搜索发现的内容只会使我感到困惑。有什么建议吗?

Answers:


3

在Web服务器环境中运行ruby代码的最常见方法是使代码实现机架接口。这是一个非常简单的API,可让网络服务器与您的ruby应用程序对话。对于Apache,最常见的机架处理程序是乘客(也称为mod_rails和mod_rack)。几乎所有当前的ruby Web框架(如rails,sinatra,camping等)都使用机架处理程序连接到Web服务器。您可以使用这些框架之一,但也可以直接使用这些框架而无需编写框架应用程序。所有红宝石应用服务器(杂种,薄,独角兽,彩虹等)都实现了机架接口。

另一种选择是使用(f)cgi,但我建议您远离该路由,因为接口和协议很尴尬,并且实际上并没有提供现代化的管理功能。


2

一段时间以来,我一直在尝试找到该问题的简单答案,并且您所要做的就是将ruby脚本放入Web服务器的cgi-bin目录中并加载相应的URL。因此,例如,在默认的CentOS 6.2 / httpd安装中,我在/ var / www / cgi-bin /中放置了一个名为hello.rb的脚本,然后在我的计算机中加载了http://localhost/cgi-bin/hello.rb浏览器,它执行了脚本,并向我展示了去STDOUT的内容(即来自puts等)。

每次加载URL时,脚本将完全运行,这是在这里发生的情况。这对于大容量的Web服务器或对速度至关重要的服务器不是理想的选择-因此,诸如fastCGI之类的东西可使脚本始终运行,但是您必须编写脚本来处理它。

希望能有所帮助。



0

尝试modruby


我尝试过这个。它什么也没做,如果有任何文档,他们在隐藏它方面做得很好。
詹森·斯威特


那也不起作用。Invalid command 'RubyAddPath'这是没有人做过的神秘事物吗?与PHP相比,让Ruby与Apache协同工作的艰辛让我感到惊讶。
詹森·斯威特

添加“ LoadModule ruby​​_module” path_to_mod / mod_ruby.so”
alvosu 2011年

添加AddHandler ruby-object .rbxLoadModule ruby_module /path/to/mod_rubyRubyRequire apache/ruby-run,和RubyHandler Apache::RubyRun.instancehttpd.conf应该够简单的配置。
克里斯S
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.