使用Passenger Standalone(由Nginx核心提供支持)是否意味着我们根本不需要像Apache或Nginx这样的面向Web的HTTP服务器?
最佳答案
简短的回答是"is",这确实是它的工作原理。基本上乘客独立允许你通过 passenger start
运行你的应用程序,它在幕后使用 nginx 来实际服务 rails 请求。
然而,将乘客独立运行作为唯一的网络服务器存在一个大问题。如果您想运行多个基于 ruby 的网站,您必须在不同的端口上运行它们,因为无法通过单独的乘客将请求代理到单个应用程序。
在我的环境中,我需要使用多个不同版本的 ruby(不仅仅是不同版本的 rails)运行多个站点。例如,我有一个站点运行带有 Ruby 企业版的 Rails 2.3.x,另一个站点运行运行 Ruby 1.9.2 的 Rails 3.0.x。我使用带有单独 Nginx 代理的独立乘客来解决这个问题:
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 规则分别向每个站点发送请求。 抱歉这篇长文章,可能信息有点多……但我发现这个组合非常有效,而且我编写了一些不错的
init.d
样式脚本来启动我的个人乘客独立应用程序。 Nginx 内存使用量非常低,以至于运行 3 个实例(每个站点 1 个,端口 80 1 个)实际上并没有任何成本。希望这可以帮助!
关于apache - 乘客独立,不需要 HTTP 服务器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6362906/