为什么我们在部署rails应用程序时需要一个apache服务器?

时间:2010-12-06 20:31:11

标签: ruby-on-rails ruby

我虽然可以用webrick或mongrel部署它

4 个答案:

答案 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服务器的默认假设,在大多数情况下是阻力最小的路径。