理想的Rails服务器

时间:2010-08-14 20:54:50

标签: ruby-on-rails linux ruby-on-rails-3

什么是理想的rails服务器?让我们假设它在VPS上,例如Linode。让我们假设任何网站都不会成为下一个Twitter,但它们应该很好地扩展。它还必须支持多个站点,并且所有站点都是rails 3.并且数据库必须位于同一服务器上(暂时)。

它应该使用apache还是nginx?

Ruby Enterprise Edition还是普通的Ruby?

理想的Linux发行版?

MySQL,PostgreSQL还是别的什么?

如何布置目录(在哪里放置rails网站或其他任何东西)?

部署选项?

还有别的吗?

2 个答案:

答案 0 :(得分:14)

它应该使用apache还是nginx? 除非您需要特定的Apache功能,否则Nginx似乎是首选路由。如果您正在使用Passenger,则支持Apache和Nginx。有关乘客的更多信息here

Ruby Enterprise Edition还是普通的Ruby? 我很确定REE仅适用于Ruby 1.8,它不再是Rails 3的首选版本。 Rails 3在1.8中遇到了一些问题,但他们现在可能已经修复了它们。但是,一般情况下,Ruby 1.9.2可以很好地运行Rails 3。

理想的Linux发行版? 这真的没关系。如果你不确定,Ubuntu是一个很好的选择,因为那里有很多知识,而且它很容易使用。 Slicehost有很多关于开始使用VPS的精彩文章,其中很多都专注于Ubuntu:http://articles.slicehost.com/

MySQL,PostgreSQL还是别的什么? 这绝对是主观的。 MySQL肯定是最常见的,如果你真的不确定,它是一个很好的起点。然而,人们经常争辩说PostgreSQL更清晰,更容易使用MySQL。如果你刚刚开始,我会推荐MySQL,因为已有大量的信息。

如何布置目录(在哪里放置rails网站或其他任何东西)? 你可以把你的rails项目放在任何你喜欢的地方,所以我想把它放在我的主目录中。只需确保您的Web服务器可以访问您的静态资产。

部署选项? 卡皮斯特拉诺很受欢迎。您只需提交更改cap deploy,即可启动并运行。

还有别的吗? 如果这一切看起来势不可挡,请研究一个更简单的解决方案,如Heroku。他们为你设置了一切,而且,当你失去一些灵活性时,你不必担心这一切。他们的定价并不算太差,他们提供免费选择。

答案 1 :(得分:3)

我认为kyl总结得很好。但是我想我会让你知道我从轨道beta4(现在还有RC)以来我一直在使用的东西。这个设置对我很有用:

Rackspace Cloud服务器 - 让您完全控制服务器。您可以动态调整服务器的大小。如果要复制其他站点的设置,也可以拍摄快照图像。它的价格便宜,而且在我看来比亚马逊云更好。

CentOS 5.4 - 稳固,但正如kyl所提到的,可能任何发行版都能正常工作。

Ruby 1.9.2RC 2 - 对我来说,Rails 3上没有任何问题。当它们将它移植到1.9.2时肯定会使用Ruby Enterprise(不确定它是否在工作中,但是??)

Nginx - 快速轻巧。我比apache更喜欢它。在乘客,杂种和薄的前面工作得很好。

MySQL - 只是个人偏好。我已经使用它多年了。如果需要缩放,可以轻松设置主/从或主/主配置。有些人只使用sqlite取得了成功,但我更喜欢更健壮的东西。

Github - 对我来说是源代码控制的必备条件。 Bundler与github非常合作

应用程序服务器 - 我仍然在争论如何处理这个问题。我对Passenger 2.2.15感到满意,直到我看到生成新的ruby进程以处理并发需要多长时间。为我生成一个新进程需要30秒才能锁定应用程序,因此在生成时没有任何请求可以通过。我正在调查,如果它是我的应用程序或Rails 3需要这么长时间加载。但是,乘客3解决了这个问题。希望很快就能发布。因此,在乘客3出来之前,我可能会使用Thin或Mongrel。

Capistrano - 适用于Rails 3.我建议您使用git标签查找应用程序版本的一些上限配方......或者只编写自己的。

还有其他什么?与服务器并不真正相关,但我建议您为可重复使用的应用的任何部分使用新的插件API。阅读铁路和发动机。它很容易用珠宝商创建一个宝石,并使用github使用珠宝商rake任务进行版本化。然后,您可以从github标记或master中进行部署,方法是在Gemfile中添加gem和github源并捆绑安装或更新它。我最近将所有常见的应用程序代码(博客,身份验证等)移植到Rails 3引擎,它运行良好。每当我需要重用该代码时,我只需将其放入新应用程序的Gemfile中。