https://www.phusionpassenger.com/docs/tutorials/what_is_passenger/


What is Passenger?

一个开源的web程序服务。它除了HTTP请求,管理进程和资源,能够administration, monitoring,并进行问题诊断。

容易使用,让产品的部署变得容易和scalable(

if a piece of computer hardwareor software is scalable, it continues to work well even if it is made bigger or connected to a larger number of other pieces of equipment

)即使程序逐步变大仍然运行良好。

它支持多种编程语言,Ruby, Python, Node。

它也能同时服务多个程序。

https://www.phusionpassenger.com/advantages   (图文简介,很有趣,把自己比做航天器,功能强大,让passengers轻松使用)

Fundamental concepts

关于Ruby的。

Passenger and "rails server"

ROR框架提供一个内建的服务器工具, 让可以使用rails server命令。但"rails server"本身不是一个app server,而是一个小的wrapper,在一个app server内,发射你的app。

这就是人们不使用"rails server"在production的原因。他们直接地使用一个应用程序服务an application server,比如Passenger。

"rails server" uses Puma by default as of Rails 5.

如果你增加Passenger到你的Gemfile(点击看step by step), “rails server”会发射Passenger替代Puma。当然也可以直接选择launch Passenger 。

How Passenger fits in the stack

当部署web app到production, 有各种类型的组件be involved(参与)。

你可能听说过Unicorn, Puma, Nginx, Apache and Capistrano.

Passenger当和其他组件合作时,会取代一些组件。Passenger replaces some components, while collaborating with other components.

In a typical production stack, one would use Nginx or Apache as the web server, Passenger as application server, and Capistrano as release automation tool. Passenger integrates with Nginx or Apache and manages the application and its resources.

在一个典型的产品堆,一个将使用Nginx/Apache作为web服务器, Passenger作为app服务器,Capistrano作为版本释放的自动化工具。Passenger集成了Nginx/Apache并管理app和它的resources.

需要联合使用Nginx or Apache的原因:(2个)

web servers. 提供HTTP transaction 处理和服务静态的文件。

1.但是,它们不是Ruby app 服务器,不能直接的跑Ruby app.

所以需要联合一个app 服务器,例如Passenger.

Application servers make it possible for Ruby apps to speak HTTP.

app服务器可以让Ruby apps理解并使用HTTP语法。Ruby apps(如Rails)它们自身做不到这点。

2.另一方面,app server明显不能像Nginx/Apache那样高效的处理HTTP请求。

魔鬼在细节里:

Nginx/Apache更善于处理I/O安全, HTTP并发concurrency管理, timeout超时连接等等!!!

因此,在产品环境内,程序服务器app server和Nginx/Apache联合起来被使用。

Capistrano

一个应用程序 release automation tool! (释放版本时,自动化处理一系列actions的工具)。

当释放一个你的web application的新版本时,会有actions需要被执行performed, 如uploading你的程序代码到服务器, 运行一条命令来安装你的gem bundle,重启进程等等。Capistrano会自动化这些actions.

Capistrano不能取代一个server来提供HTTP transaction handling, 所以它联合app servers和web servers。

Unicorn and Puma

可选的app servers。被Passenger代替了。

因为,Passenger让使用更方便,和其他组件集成,自动管理和问题诊断diagnosis.

Multiple integration mode 多重集成模型

之前讲了Passenger和其他组件合作。因此它支持多重集成模型。

下面只会涉及Standalone mode。 Nginx/Apache集成模型在deployment tutorial会讲解。

在Standalone mode, Passenger使用内建web server。在Nignx/Apache集成模型,Passenger和Nignx/Apache集成。

Standalone mode

这个模型,不和其他组件合作。在development阶段,可以使用这个模型。

Nginx integration mode

这个模型,Passenger作为一个Nginx模块来操作。

绝大多数情况下是通过Nginx和通过Nginx配置文件,来操作Passenger。

因此可以把它们当成一个整体。

这个模型用于production,不是development。

What Passenger does not do

  1. 不能建立一个带操作系统的服务器。Passenger假设你已经有一个服务器和工作的操作系统。Passenger不是一个hosting service主机服务。
  2. 不能安装Ruby。想要在Passenger上运行Ruby,你必须先安装Ruby。你需要告诉Passenger你在哪安装了Ruby。
  3. 不能传输app code和file到server。 你需要使用如Capistrano之类的工具。Passenger假定app code和文件已经在server上了。
  4. 不能安装应用依赖。 这些工作属于Bundler和Capistrano。
  5. 不能管理数据库。如果你的系统需要一个数据库,你必须自己安装。

部署:

Passenger简介的更多相关文章

  1. Spring Web Flow 简介

    Spring Web Flow 简介 博客分类: 转载 SSH 最近在TSS上看到了一片介绍Spring Web Flow的文章,顺便就翻译了下来,SWF的正式版估计要到6月份才能看到了,目前的例子都 ...

  2. rails 部署 nginx + passenger

    转自 http://segmentfault.com/a/1190000002911605 https://ruby-china.org/topics/16245 运行 RAILS_ENV=produ ...

  3. Java 依赖注入标准(JSR-330)简介

    作者:88250 ,Vanessa 时间:2009 年 11 月 19 日      Java 依赖注入标准(JSR-330,Dependency Injection for Java)1.0 规范已 ...

  4. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  5. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  6. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  7. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  8. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  9. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

随机推荐

  1. topcoder srm 707 div1

    1 构造一个棋盘,长宽n,m不超过50,每个格子为障碍或者非障碍两种,使得从(0,0)到(n-1,m-1)的最短路为给定的值k. 思路:如果k小于等于98,那么一定存在没有障碍的棋盘满足要求.否则,最 ...

  2. OCX ClassId查看

    1.源码中查看 2.注册完成后在注册表中查看 a.windows键+R  打开“运行” b.输入“regedit”  ,回车 c. d.再输入框中输入ocx名称,点击查找下一个 e.展开,点击CLSI ...

  3. 4698: Sdoi2008 Sandy的卡片

    前言 总之这个东西说起来很麻烦就是了, 思路 差分合并+后缀数组+二分(dddl) 类似于那个bzoj1031的复制子串和那个poj1743的差分 来看个例子 3 5 1 2 3 4 5 4 1 1 ...

  4. 全排列+字符串查找|扑克排序|2014年蓝桥杯A组题解析第六题-fishers

    标题:扑克序列 A A 2 2 3 3 4 4, 一共4对扑克牌.请你把它们排成一行. 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌. 请填写出所有符合要求的排 ...

  5. 【配置详解】Quartz配置文件详解

    我们通常是通过quartz.properties属性配置文件(默认情况下均使用该文件)结合StdSchedulerFactory 来使用Quartz的.StdSchedulerFactory 会加载属 ...

  6. ssm项目部署到服务器过程

    ssm项目部署到服务器过程 特别篇 由于准备春招,所以希望各位看客方便的话,能去github上面帮我Star一下项目 https://github.com/Draymonders/Campus-Sho ...

  7. 题解——Codeforces Round #508 (Div. 2) T3 (贪心)

    贪心的选取最优解 然后相减好 记得要开long long #include <cstdio> #include <algorithm> #include <cstring ...

  8. Tutorial on GoogleNet based image classification --- focus on Inception module and save/load models

    Tutorial on GoogleNet based image classification  2018-06-26 15:50:29 本文旨在通过案例来学习 GoogleNet 及其 Incep ...

  9. 【ASP.NET】The CodeDom provider type “Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider” could not be located

    一般是asp.net的项目在启动的时候会报这个错误. 页面显示成: 我推测的原因是由于project的build的输出属性改了, 非bin目录下, 导致这个问题. 解决这个问题的方案有两个: 1. 改 ...

  10. Druid介绍

    Druid (大数据实时统计分析数据存储) Druid 是一个为在大数据集之上做实时统计分析而设计的开源数据存储.这个系统集合了一个面向列存储的层,一个分布式.shared-nothing的架构,和一 ...