搜尋

首頁  >  問答  >  主體

ruby-on-rails - rails nginx passenger bundle 這幾者是怎麼協作的?

想問一直這幾者是怎麼樣的一種方式來工作的,他們又各自負責什麼部分呢

PHP中文网PHP中文网2752 天前813

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑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所需要的庫了

    回覆
    0
  • 大家讲道理

    大家讲道理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.

    兩者的效能分析請參考Mongrel vs. Passenger vs. Unicorn

    回覆
    0
  • 取消回覆