Rails 3与Apache在不同域(相同的IP)上的两个应用程序?

时间:2012-12-15 00:55:32

标签: ruby-on-rails ruby-on-rails-3 apache subdomain passenger

我在apache2上使用phusion passenger部署,只需将我的单个Rails应用程序部署到域中,比如bar.com。现在,我希望将我最近创建的其他应用推送到条形码域的子域名,例如foo.bar.com。我对如何在httpd.conf文件中设置虚拟主机以允许此设置感到有点困惑。我通过godaddy设置我的DNS,以便新的子域将指向与初始域相同的IP地址(它们都驻留在同一服务器上)。

这是我的httpd.conf文件中的VirtualHosts(注意两个文档根指向不同的应用程序):

NameVirtualHost *:80
<VirtualHost *:80>
  ServerName bar.com
  ServerAlias www.bar.com
  DocumentRoot /home/me/app1/public
  <Directory /home/me/app1/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>  

<VirtualHost *:80>
  ServerName foo.bar.com
  ServerAlias foo.bar.com www.foo.bar.com
  DocumentRoot /home/me/app2/public
  <Directory /home/me/app2/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>

通过此设置,我可以导航到www.bar.combar.com,但似乎子域无效,导航到foo.bar.com会引导我访问此页面:

  

未找到

     

在此服务器上找不到请求的URL /。

     

Apache / 2.2.20(Ubuntu)服务器在foo.bar.com端口80

2 个答案:

答案 0 :(得分:1)

这涉及几个步骤。首先,我将我的虚拟主机移到了我的httpd.conf文件之外,并在每个以相应域名bar.comfoo.bar.com命名的sites-available文件夹下创建新文件。接下来,我必须通过运行apache命令sudo a2ensite将每个站点添加到已启用的站点。最后我不得不调用命令sudo service apache2 reload。使用管理员访问权限运行每个命令都很重要,否则它不起作用。

另外值得一提的是,像Firefox这样的浏览器喜欢缓存旧的网站域名数据,所以如果网址foo.bar.com以前不能正常工作并且您解决了问题,那么在清除缓存之前它仍然无法正常工作。

答案 1 :(得分:0)

您是否记得在添加第二个虚拟主机后重启apache?

相关问题