3

部署 compojure/sinatra 应用程序的首选方式是什么?我在主机上运行了多个站点,因此无法在端口 80 上运行 jetty/mongrel。我应该如何处理在同一主机上运行的多个站点/应用程序?

4

3 回答 3

7

使用在端口 80 上运行的 Web 服务器(例如Apache )并使用虚拟主机将流量定向到正确的应用服务器。所以基本上你会在不同的端口上运行每个应用程序服务器(jetty/mongrel 等),然后在每个虚拟主机中使用不同的配置来使用mod proxy之类的东西将流量转发到应用程序服务器。您可以使用不同的 Web 服务器,例如lighttpdnginx。对于 sinatra 应用程序,您还可以查看Phusion Passenger,又名 mod rails,又名 mod rack,理论上它适用于任何机架应用程序,尽管我只将它与 Rails 一起使用。

如果您进一步研究它,您会发现有多种方案可以将流量从 Web 服务器转发到应用程序服务器,但是做这种事情的基本机制总是归结为拥有一个监听端口的 Web 服务器80 使用基于名称的虚拟主机,然后将流量转发到适当的应用程序。

于 2009-07-03T13:31:51.360 回答
3

多年来,我一直在用各种独立服务器(例如,AllegroServe)做这种事情。我发现最好的方法是:

  • 在不同的非特权端口(例如 8080)上运行每个服务器
  • 在 80 上运行pound(或 Nginx 等),配置为将请求映射到每个应用程序。

Pound 很棒,而且配置非常简单(不像 Nginx)。它还将为您执行 SSL 前端和 HTTP 清理,从而减轻您的应用程序的负担。

于 2009-07-21T02:11:58.463 回答
0

使用乘客!http://modrails.com - 它是 apache 和 nginx 的插件,可让您(非常)轻松地将 ruby​​ 应用程序作为虚拟主机运行

于 2009-07-28T18:51:35.773 回答