我虽然可以用webrick或mongrel部署它
答案 0 :(得分:7)
大多数Ruby应用程序服务器只运行一个Ruby进程(并且Ruby有一个全局解释器锁,使多线程毫无意义),这意味着它一次只能处理一个请求。至少可以说,这不会给你很好的表现。
有两种解决方法:要么运行多个Ruby应用程序服务器,要么在它们前面加载负载均衡器或反向代理,例如:在一组Mongrels或Thin服务器前面的Nginx或Apache(您运行的进程数反映了您将能够并行处理的请求数)。或者运行Passenger,它是一个Apache或Nginx模块,用于管理可随负载变化而动态增长和缩小的应用程序池。第一个选项为您提供了更多配置选项,但第二个选项更易于管理。你想要哪一个取决于你的用例。
当然也有其他解决方案,但它们适用于更具体的用例。例如,您可以编写一个性能非常高的应用程序并使用Thin部署它 - 但它要求您编写一个事件驱动的应用程序。您无法部署Rails应用程序并期望获得相同的性能。
答案 1 :(得分:3)
在Phusion Passenger允许Rails托管Apache和nginx之前,部署rails应用程序是可怕和困难的。 Apache是一个非常成熟的Web服务器,可以轻松扩展并可配置以满足许多需求。 (nginx不是那么成熟,但非常高效,也是非常可配置的,也是Apache托管主机的绝佳替代品。)Webrick和Mongrel非常适合开发,但除非你是专家,否则很难将它们设置为生产使用
答案 2 :(得分:2)
技术上你可以,但通常不想这样做,因为在提供像CSS或图像这样的静态文件时会产生相当大的开销。
答案 3 :(得分:1)
有许多方法可以在不涉及Apache的情况下部署Rails应用程序,但Apache是最受欢迎的服务器,最成熟的服务器,最稳定和可扩展的服务器。 WEBrick和Mongrel都有自己的优点,但Apache只是Web服务器的默认假设,在大多数情况下是阻力最小的路径。