想問一直這幾者是怎麼樣的一種方式來工作的,他們又各自負責什麼部分呢
巴扎黑2017-05-16 17:32:23
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所需要的庫了
大家讲道理2017-05-16 17:32:23
引自略曉網 張志回答: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 int ondl. sees any requests.