乘客独立,不需要HTTP服务器?

时间:2011-06-15 19:04:50

标签: apache passenger

使用Passenger Standalone(由Nginx核心提供支持)是否意味着我们根本不需要面向Apache或Nginx的HTTP服务器?

2 个答案:

答案 0 :(得分:14)

简短的回答是“是”,确实是如何运作的。基本上,乘客独立允许您通过passenger start运行您的应用程序,它在幕后使用nginx来实际提供rails请求。

然而,运行乘客独立作为唯一的网络服务器存在一个大问题。如果您想运行多个基于ruby的网站,则必须在不同的端口上运行它们,因为没有办法将请求单独代理到单独的乘客。

在我的环境中,我需要使用多个不同版本的ruby运行多个站点(不仅仅是不同版本的rails)。例如,我有一个站点运行Rails 2.3.x与Ruby Enterprise Edition,另一个站点运行Rails 3.0.x运行Ruby 1.9.2。我使用单独的乘客和单独的Nginx代理来解决这个问题:

  • 每个网站都运行独立的乘客,我已配置为在本地UNIX套接字上侦听。我使用RVM负责为我加载我的ruby版本,所以我的passenger start命令有点冗长,但它看起来像这样:

    • cd /path/to/my/app; rvm use ree-1.8.7-2011.03@gemset; export GEM_HOME=/usr/local/rvm/gems/ree-1.8.7-2011.03@gemset; /usr/local/rvm/gems/ree-1.8.7-2011.03@gemset/bin/passenger start -d -S /tmp/mysite.com.sock -e production --pid-file /path/to/my/app/shared/pids/passenger.pid
  • 既然我的应用程序正在运行并在/tmp/mysite.com.sock监听,我还有另一个在端口80上运行的Nginx实例,该实例只使用简单的proxy_pass规则来单独向每个站点发送请求。

    < / LI>

很抱歉很长的帖子,也许这有点太多信息...但我发现这个组合工作得很好,我写了一些很好的init.d样式脚本来启动我的个人乘客独立应用程序。 Nginx的内存使用率非常低,以至于运行它的3个实例并不需要花费任何费用(每个站点1个,端口80个1个)。

希望这有帮助!

答案 1 :(得分:0)

据我所知(http://www.modrails.com/documentation/Users%20guide%20Standalone.html)“Passenger Standalone”本身就是一个网络服务器。

  

与Apache的Phusion Passenger和Nginx的Phusion Passenger不同,Phusion Passenger Standalone不需要外部Web服务器,它是自己的,因此非常容易上手。

相关问题