ruby-on-rails - rails nginx passenger bundle 这几者是怎么协作的?
问题描述
想问一直这几者是怎么样的一种方式来工作的,他们又各自负责什么部分呢
问题解答
回答1:Ngnix是一个proxy server, 设置监听端口(80), 编码方法(gzip),错误网页在哪里(402, 403, 404),负责把request分给workersPassenger/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所需要的库了
回答2:引用于略晓网 张志回答: 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相关文章:
1. index.php错误,求指点2. android百度地图定位问题3. 网页爬虫 - python爬虫,需要爬取的数据没在网页源代码中,怎么处理?4. 关于mysql unique的问题,如图所示5. mysql - 要取出数据库中按某字段排序后的前10,20,30条数据要怎么做?6. c++ - pycharm 4.5 的 python -> preferences 找不到7. android - Windows系统下运行react-native App时,报下面的错误?8. 求大神帮我看看是哪里写错了 感谢细心解答9. showpassword里的this 是什么意思?代表哪个元素10. javascript - react-native在chrome调试工具中出现警告,并且不能使用react dev-tools