簡體   English   中英

為什么我們在部署rails應用程序時需要一個apache服務器?

[英]why do we need an apache server when we deploy a rails app?

我雖然可以用webrick或mongrel部署它

大多數Ruby應用程序服務器只運行一個Ruby進程(並且Ruby有一個全局解釋器鎖,使多線程毫無意義),這意味着它一次只能處理一個請求。 至少可以說,這不會給你很好的表現。

有兩種方法可以解決這個問題:要么運行多個Ruby應用程序服務器,要么在它們前面放置負載均衡器或反向代理,例如在一堆Mongrels或Thin服務器前面的Nginx或Apache(運行的進程數反映了您將能夠並行處理的請求數)。 或者運行Passenger,它是一個Apache或Nginx模塊,用於管理可隨負載變化而動態增長和縮小的應用程序池。 第一個選項為您提供了更多配置選項,但第二個選項更易於管理。 你想要哪一個取決於你的用例。

當然還有其他解決方案,但它們適用於更具體的用例。 例如,您可以編寫一個性能非常高的應用程序並使用Thin部署它 - 但它要求您編寫一個事件驅動的應用程序。 您無法部署Rails應用程序並期望獲得相同的性能。

在Phusion Passenger允許Rails托管Apache和nginx之前,部署rails應用程序是可怕和困難的。 Apache是​​一個非常成熟的Web服務器,可以輕松擴展並可配置以滿足許多需求。 (nginx不是那么成熟,但非常高效,也是非常可配置的,也是Apache托管主機的絕佳替代品。)Webrick和Mongrel非常適合開發,但除非你是專家,否則很難將它們設置為生產使用。

你可以在技術上,但通常不想這樣做,因為在提供像CSS或圖像這樣的靜態文件時會產生相當大的開銷。

有許多方法可以在不涉及Apache的情況下部署Rails應用程序,但Apache是​​最受歡迎的服務器,最成熟的服務器和最穩定和可擴展的服務器。 WEBrick和Mongrel都有自己的優點,但Apache只是Web服務器的默認假設,在大多數情況下是阻力最小的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM