rails nginx passenger bundle 这几者是怎么协作的?

想问一直这几者是怎么样的一种方式来工作的,他们又各自负责什么部分呢

2 个回答

这几个东西的协作和其他架构基本上是一样的

首先用nginx做反向代理,动态请求转交给更轻量的rails容器(你可以用passenger或者unicorn)去处理,充分利用passenger或者unicorn在unix domain socket方式下的高性能,rails当然就是后端的功能实现。关于bundle这个是用来管理项目的gem依赖。官方的解释如下:
* Library management system for rails app
* ability to pack and lock your gem files for your rails app.

看了一下在这个问题在知乎的回答和之前xxd的回答,很详尽,我再补充一下吧
Bundler主要是用来处理rails application的以来关系,同时使得每一个rails applicaton之间的环境相互独立,
Bundler的出现之前,大多使用gemset来管理gem包,Bundler出现之后,由于其易用,方便,为很多rails开发者使用,现在比较常用的方法是用Bundler来管理Gem包,用rvm来管理ruby版本.

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,其处理静态链接性能优越,补充一下grid-fs模块,其对Mongodb提供了良好的支持,而且容易配置:

location /gridfs/ {
gridfs my_app field=filename type=string;
mongo 127.0.0.1:27017;
}

passenger主要用来管理Rails进程,不过对于passenger接触的不是很多,平时用的都是Unicorn
关于处理流程和协作:
request
引用自Github

nginx sends requests directly to the Unicorn worker pool over a Unix Domain Socket (or TCP, if you prefer). The Unicorn master manages the workers while the OS handles balancing, which we’ll talk about in a second. The master itself never sees any requests.

对于两者的性能分析请参见Mongrel vs. Passenger vs. Unicorn
性能分析

你的回答