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

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

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


引用于略晓网 张志回答: http://luexiao.com/questions/33136760...

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。
关于处理流程和协作:

引用自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

Ngnix是一个proxy server, 设置监听端口(80), 编码方法(gzip),错误网页在哪里(402, 403, 404),负责把request分给workers
Passenger/Unicorn是application server, 坐在proxy server上面。每个proxy一般有好几个application servers作为workers,负责接受把request高速给web application(比如rails),一般appication server能处理几千个requests每秒
Rails application runs inside passenger/unicorn.
从nginx到passenger到rails, 完成了一个request的cycle

bundle是ruby的package manager。就像python的easy_install, pypi。每个application,可以有个Gemfile, 里面可以写明你要的library的版本,然后别的人只要bundle install就能安装这个application所需要的库了

【热门文章】
【热门文章】