在片上运行Rails / Passenger app时出现问题,该片也提供静态html站点

时间:2010-07-16 07:02:43

标签: ruby-on-rails apache passenger

我在乘客的ubuntu hardy盒子上运行Rails应用程序。我也有几个基本的html网站在同一个盒子上运行。我的问题是为html网站设置的apache vhost似乎阻止我的Rails应用程序解析为正确的URL。

我有许多Rails应用程序使用乘客在不同的切片上运行,所以我知道如何使这项工作一般。

我在终端或apache日志中没有收到任何错误。一切看起来都很完美,但网站根本无法通过正确的网址解析。相反,当我转到我的Rails应用程序所在的URL时,我会在我的切片上看到该网站是apache默认vhost。

为了确认我的假设,我禁用了与静态html页面关联的切片上的所有vhost。在这之后,我的Rails应用程序出现在正确的URL并且工作正常。当我为html网站重新启用vhost时,我又回到了同样的问题。

我敢打赌,这是一个简单的配置修复,但我无法弄明白。有人知道吗?

感谢。

更新以回答评论中的问题

是的,静态网站可以自行运行。在任何情况下,静态网站都可以。

我的vhost文件正在使用超级基本设置。静态站点vhost文件如下所示:

<VirtualHost *:80>

  ServerName foo.com
  ServerAlias www.foo.com

  DirectoryIndex index.html
  DocumentRoot /home/blah/public_html/foo/public

</VirtualHost>

Passenger vhost文件如下所示:

<VirtualHost *:80>

  ServerName  bar.com
  ServerAlias www.bar.com

  DocumentRoot /home/blah/public_html/bar/current/public

</VirtualHost>

2 个答案:

答案 0 :(得分:1)

如果要验证apache虚拟主机配置,请尝试执行以下操作:

apache2 -S

apache2 -t -D DUMP_VHOSTS

两者都应该转储你的vhosts列表。也许你的rails虚拟主机被分配给其他一些IP?

答案 1 :(得分:0)

你有-MultiViews选项打开/关闭吗?

<VirtualHost *:80>
    ServerName www.phusion.nl
    DocumentRoot /websites/phusion
    <Directory /websites/phusion>
        Allow from all
    </Directory>

    RailsBaseURI /rails                   # <-- These lines have
    <Directory /websites/phusion/rails>   # <-- been added.
        Options -MultiViews               
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>                          
</VirtualHost>

MultiViews的效果如下:如果服务器收到/ some / dir / foo的请求,如果/ some / dir启用了MultiViews,并且/ some / dir / foo不存在,那么服务器会读取目录查找名为foo。*的文件,并有效地伪造一个命名所有这些文件的类型映射,为它们分配相同的媒体类型和内容编码,如果客户端通过名称请求其中一个文件。然后,它会根据客户的要求选择最佳匹配