【问题标题】:Multiple VirtualHosts for Rails sitesRails 站点的多个虚拟主机
【发布时间】:2023-03-28 23:28:01
【问题描述】:

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

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

我不确定几个方面:

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

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

<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 3 config.action_controller.relative_url_root = "/webapp" 似乎已被弃用,是否有新的推荐使用约定?

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

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

【问题讨论】:

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


    【解决方案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 + 应用程序都是机架?如果不是这种情况请评论)

    【讨论】:

      猜你喜欢
      • 2020-11-18
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 2018-08-23
      • 2012-05-26
      • 1970-01-01
      相关资源
      最近更新 更多