【发布时间】:2010-11-07 22:05:42
【问题描述】:
部署 compojure/sinatra 应用程序的首选方式是什么?我在主机上运行了多个站点,因此无法在端口 80 上运行 jetty/mongrel。我应该如何处理在同一主机上运行的多个站点/应用程序?
【问题讨论】:
标签: ruby clojure sinatra compojure
部署 compojure/sinatra 应用程序的首选方式是什么?我在主机上运行了多个站点,因此无法在端口 80 上运行 jetty/mongrel。我应该如何处理在同一主机上运行的多个站点/应用程序?
【问题讨论】:
标签: ruby clojure sinatra compojure
使用在端口 80 上运行的网络服务器(例如 Apache),并使用 virtual hosts 将流量定向到正确的应用服务器。所以基本上你会在不同的端口上运行每个应用程序服务器(jetty/mongrel 等),然后在每个虚拟主机中使用不同的配置来使用 mod proxy 之类的东西将流量转发到应用程序服务器。您可以使用不同的 Web 服务器,例如 lighttpd 或 nginx。对于 sinatra 应用程序,您还可以查看 Phusion Passenger, a.k.a mod rails, a.k.a mod rack,理论上它适用于任何机架应用程序,尽管我只在 Rails 中使用过它。
如果您进一步研究它,您会发现有多种方案可以将流量从 Web 服务器转发到应用程序服务器,但做这种事情的基本机制总是归结为拥有一个 Web 服务器侦听端口 80,该端口使用基于名称的虚拟主机,然后将流量转发到相应的应用程序。
【讨论】:
多年来,我一直在使用各种独立服务器(例如 AllegroServe)做这种事情。我发现最好的方法是:
pound(或 Nginx 等),配置为将请求映射到每个应用程序。Pound 很棒,而且配置非常简单(不像 Nginx)。它还将为您执行 SSL 前端和 HTTP 清理,从而减轻您的应用程序的负担。
【讨论】:
使用乘客! http://modrails.com - 它是 apache 和 nginx 的插件,可让您(非常)轻松地将 ruby 应用程序作为虚拟主机运行
【讨论】: