0

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

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

我不确定几个方面:

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

2.)从上一个问题中学习,我如何修改此apache2.conf文件以提供目录下的 rails 应用程序www.domain.eu/webapp(再次阅读大量文档,但似乎有很多方法可以做到这一点)

<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>

3.) 我意识到需要创建一个符号链接来将目录根指向 url。尝试过ln -s /apps/webapp/public ./test它会返回一个missing symlink error. 这里推荐什么?

4.) 最后,rails 3config.action_controller.relative_url_root = "/webapp"似乎已被弃用,是否有新的推荐使用约定?

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

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

4

1 回答 1

1

因此,经过大量阅读,我设法使这项工作正常进行。

出于我的目的,我将子 URI 站点的 VirtualHost 信息添加到我的 apache2.conf 文件的底部,它可能是 httpd.conf,但如果你愿意,你可以将它们输入 /etc/apache2/sites-available把它分开。

在这个文件的顶部,我指定了服务器的默认“主页”在哪里。我正在运行 apache2,所以我的主页位于 /var/www。下面我们设置我们的 rails 子 URI 选项,所以首先指定你想要的 URL 作为你的子 URI,然后将目录标签指向你的 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 生产指定您想使用的环境(显然所有 rails 3 + 应用程序都是机架?如果不是这种情况请评论)

于 2012-10-09T09:33:32.100 回答