我的设置:Windows上的Rails 2.3.10,Ruby 1.8.7
上一次我从Windows到Slicehost上的Linux上部署Rails应用程序时,我使用了Capistrano,Nginx,Mongrel和SVN。那是3年前,直到现在,我仍在Windows上进行开发,现在正在寻求将其部署到EC2。快速搜索就会发现诸如Rubber和Chef之类的工具,这些工具通过快速阅读并不容易掌握。似乎Rubber和Chef是为多EC2实例部署而设计的,当我需要扩展时,这将很有用。
我对Passenger还是陌生的,但它似乎是当今部署Rails应用程序的默认方式,我不清楚的一件事是,Passenger是否可以代替Mongrel?在我的旧设置中,我将Nginx配置为将Rails请求转发到Mongrel进程集群,但是对于Passenger来说,我看不到任何类似的东西。
非常感谢任何见解。
最佳答案
我们使用您在生产服务器中描述的内容:EC2 + Apache + Passenger。我们没有必要使用您描述的高级部署工具-普通的老式Capistrano(加上capistrano-ext这样我们就可以在多个环境中使用它)可以很好地完成工作。我看过Rubber(不是Chef),但是认为它不必要地太神奇了,文档也太少了,我真的不确定它提供了什么,而Capistrano中的角色还做不到。
乘客很棒。它是manages a collection of Mongrel-like workers的“监督者”(我曾以为这些工人是Mongrels,但进一步阅读后,我认为他们不是。Passenger comparisons page甚至将其RPS与Mongrel集群进行比较,所以...) ,根据需要启动它们,在低负载下剔除它们,在它们崩溃时重新启动它们,等等。它实际上与您所描述的Server + Mongrel集群非常相似,但可能会更好一些,因为乘客了解底层的工作人员Nginx / Apache不需要。而且您必须设为a few minor tweaks才能使Capistrano与Passenger保持良好的配合。
如果可能的话,将乘客与Ruby Enterprise Edition(来自制造乘客的同一个人)配对。它是Ruby的更快版本,主要是由于重写了可配置的垃圾收集器。您必须tune your GC settings才能充分利用它。
希望这可以帮助!