Rails站点的多个VirtualHosts

时间:2012-10-08 15:20:08

标签: linux ruby-on-rails-3 passenger

我想在我的Linux VPS的子目录下运行一个rails应用程序,并且已经搜索了乘客文档,我不确定如何为我的机器设置正确的虚拟主机配置和符号链接。

我有一个名为www.domain.eu的域名和位于/ apps / webapp的rails应用程序,我希望该网站可以在www.domain.eu/webapp上托管

我不确定几个方面:

1。)我应该在哪里输入webapp VirtualHost配置详细信息?它应该在apache2.conf文件中还是应该在名为sites-available的{​​{1}}中创建一个文件并将配置放在那里?似乎有许多相互矛盾的例子。

2.。)从上一个问题中学习,如何修改此webapp文件以在apache2.conf目录下提供rails应用程序(再次阅读大量文档,但似乎有许多方法这样做)

www.domain.eu/webapp

3.)我意识到需要创建符号链接以将目录root指向url。尝试<VirtualHost *:80> ServerName domain.eu # !!! Be sure to point DocumentRoot to 'public'! DocumentRoot /apps/webapp/public <Directory /apps/webapp/public> # This relaxes Apache security settings. AllowOverride all # MultiViews must be turned off. Options -MultiViews </Directory> RailsBaseURI /webapp <Directory /apps/webapp/public> Options -MultiViews </Directory> </VirtualHost> 后,它会返回ln -s /apps/webapp/public ./test。这里会推荐什么?

4.。)最后,rails 3 missing symlink error似乎已被弃用,是否有新的推荐惯例?

我的设置:Linux VPS服务器运行Ubuntu 10.04,mysql 5,apache2,phusion passenger(最新),ruby 1.9.3和rails 3.2.3。

如果有人需要更多代码,请提前致谢!

1 个答案:

答案 0 :(得分:1)

所以经过多次阅读后,我设法让这个工作。

出于我的目的,我将一个子URI站点的VirtualHost信息添加到我的apache2.conf文件的底部,它可能是httpd.conf,但您可以将这些输入到/ etc / apache2 / sites-available中。你希望保持一切分开。

在此文件的顶部,我指定默认&#34;主页&#34;对于服务器来说。我正在运行apache2所以我的主页位于/ var / www。在下面我们设置rails子URI选项,因此首先指定您想要作为子URI的URL,然后将目录标记指向rails应用程序的公共文件夹。必须关闭MultiViews( - ),以便我们的apache2.conf文件完成。

<VirtualHost *:80>
        ServerName domain.com
        DocumentRoot /var/www
        <Directory /var/www>
        Allow from all
        </Directory>


        RailsBaseURI /webapp
        <Directory /apps/webapp/public>
        Options -MultiViews
        </Directory>
</VirtualHost>

现在我们要做的就是在我们的启用站点的文件夹中创建一个符号链接,将/ var / www / webapp指向我们的/ apps / webapp / public文件夹,如下所示。

ln -s /apps/webapp/public /var/www/webapp

现在我们正在创建一个符号链接,我们不必在rails路由或环境文件中插入任何额外的代码。您可以使用RackENV生产指定您想要使用的环境(显然al rails 3 +应用程序是机架?如果不是这样,请发表评论)