【发布时间】:2011-12-11 20:40:10
【问题描述】:
我想在同一台机器上运行 rails 3 和 rails 2.3.8 应用程序。我目前为我的 rails 3 应用程序使用 Ruby 1.9.2 设置了乘客,并且在 Apache 上运行良好。我在 Phusion 网站上找到了以下内容并正在尝试反向代理:
http://blog.phusion.nl/2010/09/21/phusion-passenger-running-multiple-ruby-versions/
此应用的 Apache vhost 文件如下所示:
<VirtualHost *:80>
ServerName gtt
DocumentRoot /home/purvez/www/gtt/public
RailsEnv development
PassengerEnabled off
ProxyPass / http://127.0.0.1:3000
ProxyPassReverse / http://127.0.0.1:3000
</VirtualHost>
我可以通过以下方式正确使用乘客独立访问应用程序:
127.0.0.1:3000/start
但是当我尝试访问它时:
http://gtt/start
我收到一条消息:
没有路线匹配 [GET] "/start"
Apache 'other_vhosts_access.log' 然而显示了这个条目:
testapp:80 127.0.0.1 - - [20/Oct/2011:15:27:58 +0100] "GET /start HTTP/1.1" 404 737 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
如您所见,它正在尝试调用 testapp:80 而不是 gtt:80。我的 /etc/hosts 文件中有这两个文件,实际上 gtt 在 testapp 之前!
我在这里做错了什么以及如何改正?
编辑
我非常尴尬!我没有在 Ubuntu 上启用该站点,因此它正在查看唯一可用的站点,即 testapp。
但是,在纠正了问题后,我仍然收到 500 错误。 'other_vhosts_access.log' 条目显示:
gtt:80 127.0.0.1 - - [20/Oct/2011:18:07:30 +0100] "GET /start HTTP/1.1" 500 599 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
这几乎就像Passenger Standalone 的代理没有发生,而Apache 正在尝试自己启动。当然,passenger.3000.log(即独立的乘客日志)根本没有显示任何活动!
因此,最初犯了一个巨大的错误并浪费了每个人的时间,我仍然在同一条船上,看起来代理没有发生!
有人有什么想法吗?
【问题讨论】:
-
您的 Apache 配置中有“NameVirtualHost *:80”规则吗?这就是告诉 Apache 使用 ServerName 而不是第一个匹配的 VirtualHost。
-
ports.conf 中有一个 NameVirtualHost *:80 条目,如下所示: NameVirtualHost *:80 Listen 80 这会有所不同吗?
-
我相信这是正确的。您可能还想用 Apache 重新标记您的帖子,因为这似乎不是 Rails 特定的问题,而是 Apache 如何路由流量的问题。
-
@Tom 好点。我在 Phusion 乘客论坛上有同样的帖子,但我也会将它包含在 Apache 论坛上。谢谢
-
您好nexar,如果这个问题已经解决,请将其标记为已解决!
标签: ruby-on-rails-3 apache2 passenger ruby-on-rails-2