Passenger, Apache/Nginx, Rails之间的关系

一个典型的Ruby on Rails的生产环境架构如下图:

上图中:

  1. Web服务器提供专业的HTTP业务处理例如处理认证,并发管理,连接超时等和提供静态文件,不能直接启动Ruby等应用服务。
  2. Ruby等应用服务不能提供HTTP服务。
  3. Passenger Web应用服务器作为Web服务器和Ruby等应用的中间件, 使Web端和服务很好交互。

我们曾提到过如何通过Passenger直接启动Ruby程序,与上图这种模型对比,我们称:

  1. Passenger + Ruby程序 -> 单机模式(standalone mode)
  2. Http/Nginx + Passenger + Ruby程序 -> Apache/Ngix整合模式(Apache/Nginx integration mode).

在Integration mode里,Passenger作为Apache/Nginx的一个模块工作。通常我们通过配置Apache/Nginx的配置文件去控制Passenger。在这种模式下,我们通常将它们放在一起考虑。

两种模式可以提供给用户同样的功能,但在以下这些方面体现了两种模式的不同:

  1. 性能。 Standalone更快
  2. 易用性。开发环境中Standalone更容易,生产环境中Integration更容易
  3. 多租户。Ingegration可以同时为不同的应用服务
  4. 灵活性和控制。如果你的生产集群有比较先进的架构,或者你需要对系统的每个方面都作深度的监控,则standalone是最好的选择。

 

猜你喜欢

转载自blog.csdn.net/solinger/article/details/85217830