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

是否可以在一个简单的干净乘客设置上部署Ruby应用程序?,ruby,apache,.htaccess,passenger,Ruby,Apache,.htaccess,Passenger,我在考虑使用mod_php可以做的事情:在Apache中以某种方式删除一个应用程序,让它与Passenger一起运行,而不在httpd.conf中添加任何内容(没有vhost,除了基本的Passenger配置之外什么都没有)。 它与Wordpress或许多其他框架非常相似:只需在文件夹中解压/svn签出并运行它 我知道使用CGI和FCGI是可能的,但我想知道是否也可以利用乘客的速度 我尝试过在官方网站上修改机架说明,试图找到一个特定的.htaccess和config.ru配置,但到目前为止什么都

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

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

我尝试过在官方网站上修改机架说明,试图找到一个特定的.htaccess和config.ru配置,但到目前为止什么都没有


我知道这不常见,但是。。。甚至可能吗?

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


在许多默认apache安装中,如果不修改apache配置文件,您甚至无法运行PHP应用程序

也许将config.ru放到某个目录中就可以了?

如果不配置虚拟主机,这是不可能的

Rails应用程序不像PHP文件;文件系统上的文件与URL不对应。PHP文件被放置在
DocumentRoot
,而Rails/Rack应用程序则在
DocumentRoot
之外运行

因此,乘客无法检测到您的应用程序的位置。您需要首先告诉它,或者您需要将虚拟主机的
DocumentRoot
指向应用程序的
/public
目录。在这种情况下,乘客将需要,您不需要额外的乘客配置,但您确实需要为每个应用程序提供一个虚拟主机


更新:乘客文档提到
RailsBaseURI
。将其添加到文档根目录中并创建一个从子目录(例如,
/docroot/yourapp
)到应用程序的
/public
目录的符号链接可能正是您所需要的。

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

touch /path/to/your/app/tmp/restart.txt
更多信息可在此处找到:

更新:

或者您可以创建
/path/to/your/app/tmp/always\u restart.txt

有关这方面的更多信息,请参见:

当然可以。我会尽量说得更清楚。:)我的意思是只配置了基本乘客配置详细信息,配置文件中没有特定于应用程序的内容。因此,我的意思是,只需在passenger-install-apache2-module安装脚本中指定三行即可加载库和明显的AllowOverrides.:)重新启动现有应用程序与部署新应用程序有何关系?您可以将其与文件一起部署,并自动加载新文件UPD:ruby应用程序必须在每次文件更改后重新启动,如果您对ruby应用程序使用(F)CGI,它会在每次请求时启动新的应用程序服务器,因此它会针对每个请求重新启动。Passenger为您的应用程序生成1个或多个实例,但不会针对每个请求重新启动,它会重用您的应用程序已启动的进程。要完全清楚:所以我认为在.htaccess中不可能进行所需的配置,对吗?我确信不可能,但从
.htaccess
文件中指定基本URI实际上是可能的;请参阅更新。PassengerAppRoot/path/to/app/root-RailsEnv-staging-RailsBaseURI/path/to/app/root/public-Works.:)事实上,“public”子文件夹中.htaccess中的“PassengerAppRoot/path/to/app/root”就足够了。我会做更多的测试来运行Sinatra你需要Passengeraproot和RackBaseURI。