【问题标题】:Robust way to deploy a Rack application (Sinatra)部署 Rack 应用程序的可靠方法 (Sinatra)
【发布时间】:2026-02-02 21:45:01
【问题描述】:

我正在寻找一种部署 Rack 应用程序的可靠方法(在本例中为 Sinatra 应用程序)。请求需要一点时间(代理 HTTP 请求等待 0.25-0.5 秒)并且可能会有相当大的流量。

我应该使用传统的 mongrel 集群设置吗?使用 HAProxy 作为负载均衡器? nginx?架子?

您使用了哪些解决方案,有哪些优势?

【问题讨论】:

  • 您是否获得了系统管理员的报酬,或者您是否正在寻找“一劳永逸”的设置?
  • 对不起@stef,但你在评论中的问题让我徘徊。如果我以 sysdamin 的身份获得报酬,或者我需要生火却忘记了设置,会有什么变化?在这两种情况下,我们将是最佳选择吗?谢谢
  • 使用 Heroku 可能是最简单的(git push heroku),但如果你最终需要在你的堆栈中拥有其他应用程序、库等,那不是一个选择,所以你需要查看自托管设置增加了系统管理员的责任。
  • 我还没有找到任何 Heroku 不能支持的库;他们的 Cedar 堆栈非常灵活。

标签: ruby deployment nginx sinatra rack


【解决方案1】:

Nginx / 独角兽 FTW!

Nginx 在前面提供静态文件和 unicorn 来处理 Sinatra 应用程序。

优点:性能、使用 unix socks 实现良好的负载平衡以及无需停机即可部署/升级(您可以升级 Ruby/Nginx/Sinatra/app 而无需停机)。

操作方法:http://sirupsen.com/setting-up-unicorn-with-nginx/

【讨论】:

    【解决方案2】:

    Nginx / 乘客。

    Nginx 非常轻巧、高性能并且具有可读的配置文件。乘客很可靠,易于设置并且与机架配合得很好 - 只需将您的 config.ru 放在应用程序的主目录中。乘客还可以为您处理生成过程和负载平衡。

    【讨论】: