是否可以在简单干净的乘客设置上部署Ruby应用程序?

时间:2010-05-18 17:32:40

标签: ruby apache .htaccess passenger

我正在考虑使用mod_php做一些非常相似的事情:在Apache内部以某种方式删除应用程序并使其与Passenger一起运行,而不在httpd.conf中添加任何(否) vhost,除了基本的Passenger配置之外什么都没有)。 它与Wordpress或许多其他框架非常相似:只需在文件夹中解压缩/ svn结帐并运行它。

我知道有可能使用CGI和FCGI,但我想知道是否也可以利用乘客的速度。

我试图在官方网站上试图找到一个特定的.htaccess和config.ru配置的机架指令,但到目前为止还没有。

我知道这不常见,但......它甚至可能吗?

4 个答案:

答案 0 :(得分:1)

如果没有配置虚拟主机,则无法实现。

Rails应用程序与PHP文件不同;文件系统上的文件与URL不对应。 PHP文件位于 DocumentRoot内,而Rails / Rack应用位于 DocumentRoot之外。

因此Passenger无法检测您的应用程序的位置。您需要首先告诉它where it is located您需要将虚拟主机的DocumentRoot指向应用程序的/public目录。在这种情况下,乘客将detect that it is a Rails/Rack app并且您不需要额外的乘客配置,但执行需要为每个应用程序提供虚拟主机。

更新:Passenger官员提及RailsBaseURI is allowed within a .htaccess file。在您的文档根目录中添加此内容并从子目录(例如/docroot/yourapp)创建符号链接到您的应用程序的/public目录可能就是您所需要的。

答案 1 :(得分:0)

这完全取决于httpd.conf中已有的内容

如果没有在许多默认的apache安装上修改apache配置文件,你甚至无法运行PHP应用程序。

答案 2 :(得分:0)

将config.ru放到某个目录可能会这样做吗?

答案 3 :(得分:0)

这几乎是可能的。如果配置正确,并且apache + mod_rails知道您的应用程序在哪里,则需要更改/path/to/your/app/tmp/restart.txt的上次修改日期。使用ssh访问,您可以这样做

touch /path/to/your/app/tmp/restart.txt

可在此处找到更多信息:http://www.modrails.com/documentation/Users%20guide.html#_redeploying_restarting_the_ruby_on_rails_application

<强>更新

或者您可以创建/path/to/your/app/tmp/always_restart.txt

有关此内容的更多信息,请访问: http://www.modrails.com/documentation/Users%20guide.html#_making_the_application_restart_after_each_request