我想在同一台机器上运行 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(即独立的乘客日志)根本没有显示任何活动!
因此,最初犯了一个巨大的错误并浪费了每个人的时间,我仍然在同一条船上,因为看起来代理没有发生!
有人有什么想法吗?