2009-07-03 56 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的插件,可让您(非常)轻松地运行一个红宝石应用程序作为虚拟主机