【问题标题】:Passenger Standalone, no need of HTTP Server?乘客独立,不需要 HTTP 服务器?
【发布时间】:2011-06-15 19:04:50
【问题描述】:

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

【问题讨论】:

    标签: apache passenger


    【解决方案1】:

    简短的回答是“是”,这确实是它的工作原理。基本上,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
    • 1234563 >

    抱歉,这篇文章太长了,也许信息有点太多了……但我发现这个组合非常有效,我编写了一些不错的 init.d 样式脚本来启动我的个人乘客独立应用。 Nginx 内存使用量非常低,运行 3 个实例并不需要任何成本(每个站点 1 个,端口 80 上 1 个)。

    希望这会有所帮助!

    【讨论】:

    • 感谢斯科特的详细解释。因此,基本上在各自的沙箱 rvm gemset 环境中运行的多个乘客独立将需要另一个 http 服务器来代理对它们的请求。如果它只有 1 个乘客实例,那么它可以直接连接到端口 80 并处理所有 http+cgi 流量。
    • 介意分享您的 init.d 脚本吗?
    【解决方案2】:

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

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

    【讨论】:

    • 是的,我在读完那句话后觉得它是自给自足的,但很难想象这在所有情况下都能奏效。
    猜你喜欢
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    相关资源
    最近更新 更多