2009-11-13 29 views
14

我很快就计划将我的第一个Ruby on Rails应用程序部署到生产环境,我甚至选择了一个带有所有托管服务器和Capistrano善良的Web主机, d期望来自RoR提供商。不同的Ruby on Rails生产Web服务器之间的建议(和差异)

该提供商允许Mongrel,Thin,Passenger & FastCGI网络服务器,这似乎非常灵活,但我真的不知道它们之间的差异。我已经研究了一些,但是当他们开始谈论功能和最大同时请求时,这一切都变得非常有趣 - 而且这些数据似乎因谁发布而有所不同。

我看过乘客(表面上) - 这看起来对我很有吸引力 - 但我的印象是乘客不是真正的网络服务器,而是更像是一个位于Apache或nginx和托管的应用程序实例(如Mongrel集群)。

谁能请直接把我与通俗地说的差异,以便我能做出明智的选择(因为谁见过圣战奇兵知道,如果你选择不好会发生什么的人)。

+1

此链接可能会有帮助:http://tenmiles.com/blog/2010/08/apache-passenger-and-other-server-alternatives-rails/ – 2011-05-23 13:27:57

回答

33

简短的回答

围棋与Apache/Nginx的+乘客。乘客is fast,可靠,易于配置和部署。 Passenger已被大量Rails应用程序所采用,其中包括Shopify

alt text http://www.modrails.com/images/passenger_mongrel_thin_benchmark.png

长的答案

忘掉CGI和FastCGI。一开始没有其他的选择,所以运行Rails的唯一方法是使用CGI或更快的浏览器FastCGI。现在几乎没有人在CGI下运行Rails。最新的Rails版本不再提供.cgi和.fcgi跑步者。

Mongrel已被广泛采用,是CGI和FCGI的最佳替代品。许多网站仍然使用Mongrel和Mongrel群集,但是Mongrel项目几乎已经死亡,许多项目已经转移到其他解决方案(大多数是Passenger)。 此外,基于Mongrel的体系结构很难配置,因为它需要前端代理(thin,ngnix)和由多个Mongrel实例组成的后端体系结构。

乘客自发布以来一直受到广泛关注。由于许多原因,许多项目从Mongrel转换到Passenger,包括(但不限于)易于部署,可维护性和性能。此外,Passenger现在可用于Apache和Ngnix。

使用Passenger的最简单方法是Apache + Passenger配置。一个Apache安装和多个Passenger进程。

如果您需要更好的性能和可扩展性,您可以使用Ngnix作为前端代理,并将所有Rails请求转发给多个后端服务器,每个后端服务器由Apache + Passenger组成。 我不打算在这里详细讨论技术细节,这个解决方案旨在用于Rails高流量的项目。

更复杂的解决方案包括不同级别的组合,包括http代理和服务器。您可以了解我在说什么,从GitHubHeroku读取一些内部细节。

现在,乘客是大多数Rails项目的最佳答案。

+1

优秀的答案。 – 2009-11-13 14:29:00

9

Mongrel和Thin是单个ruby进程服务器,您可以在某种类型的代理(如Apache或Nginx)后面运行多个作为群集的服务器。该代理将管理哪个Mongrel或Thin实例为请求提供服务。

客运创建创建应用程序产卵过程,然后fork了出来流程服务器最多传入的请求,因为他们进来Apache或Nginx的之间的接口。因此对于这些过程活多久,多少有很多的配置选项可以是,他们在死之前会提供多少请求。这是扩展和处理高流量应用程序的最常见方式,但这不是没有缺点。这只能在* nix操作系统(linux,mac os x等)上完成。此外,这些流程按需启动,如果没有人访问您的网站一段时间,它们会处理死亡,并且下一个请求会延迟重新启动。对于Mongrel和Thin,这个过程总是在运行。有时候,你的流程是新鲜的,可以是内存使用的好东西等。

如果它将是一个相对较低的流量站点,Mongrel或Thin提供了一种简单易用的管理方式来部署应用程序。对于需要Passenger等智能排队和流程管理的高流量站点,这是一个非常好的解决方案。

至于fastcgi,你可能想用它作为最后的选项。

1

我使用Passenger + nginx。它的工作真的很好。

1

为了获得一些即时性能夸耀的乘客,我推荐使用ruby企业版。

相关问题