2009-07-03 44 views
3

部署compojure/sinatra應用程序的首選方式是什麼?我有多個站點在主機上運行,​​所以我不能在端口80上運行jetty/mongrel。我應該如何處理在同一主機上運行的多個站點/應用程序?部署Compojure/Sinatra應用程序

回答

7

使用在端口80上運行的Web服務器(如Apache),並使用virtual hosts將流量定向到正確的應用服務器。所以基本上你會在不同的端口上運行每個應用服務器(jetty/mongrel等),然後在每個虛擬主機中使用不同的配置來使用諸如mod proxy之類的東西將流量轉發到應用服務器。您可以使用不同的網絡服務器,如lighttpdnginx。對於sinatra應用程序,您還可以查看Phusion Passenger, a.k.a mod rails, a.k.a mod rack,這在理論上適用於任何機架應用程序,儘管我只使用Rails。

如果你仔細研究一下,你會發現有很多方案將流量從Web服務器轉發到應用服務器,但是做這種事情的基本機制總是歸結爲一個Web服務器監聽使用基於名稱的虛擬主機的端口80,然後將流量轉發到相應的應用程序。

3

多年來,我一直在用各種獨立服務器(例如AllegroServe)來做這種事情。我發現,最好的辦法是:

  • 運行一個不同的,非特權端口(如8080)
  • 運行pound(或Nginx的等)80上的每個服務器,被配置爲請求映射到每個應用程序。

磅很棒,配置最終很簡單(不像Nginx)。它還將爲您執行SSL前端和HTTP清理,從而減輕應用程序的負擔。

0

使用乘客! http://modrails.com - 它是apache和nginx的插件,可讓您(非常)輕鬆地運行一個紅寶石應用程序作爲虛擬主機