【发布时间】:2011-06-15 19:04:50
【问题描述】:
使用Passenger Standalone(由Nginx 核心提供支持)是否意味着我们根本不需要Apache 或Nginx 等面向Web 的HTTP 服务器?
【问题讨论】:
使用Passenger Standalone(由Nginx 核心提供支持)是否意味着我们根本不需要Apache 或Nginx 等面向Web 的HTTP 服务器?
【问题讨论】:
简短的回答是“是”,这确实是它的工作原理。基本上,passenger Standalone 允许您通过 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抱歉,这篇文章太长了,也许信息有点太多了……但我发现这个组合非常有效,我编写了一些不错的 init.d 样式脚本来启动我的个人乘客独立应用。 Nginx 内存使用量非常低,运行 3 个实例并不需要任何成本(每个站点 1 个,端口 80 上 1 个)。
希望这会有所帮助!
【讨论】:
据我所知 (http://www.modrails.com/documentation/Users%20guide%20Standalone.html),“Passenger Standalone”本身就是一个网络服务器。
与 Apache 的 Phusion Passenger 和 Nginx 的 Phusion Passenger 不同,Phusion Passenger Standalone 不需要外部 Web 服务器,它是自己的,因此非常容易上手。
【讨论】: