部署rails:选择什么?

时间:2011-10-06 19:39:19

标签: ruby-on-rails deployment

我刚刚完成了一个Rails-application,我现在想要上传到网上。这是对现有应用程序的重写,我预计每天会有大约4 000名访问者,有时会达到每天10 000的峰值。

  • 我非常了解Windows(虽然没有使用Windows服务器)。
  • 我对Ubuntu或Linux几乎一无所知
  • 我希望事情变得简单易行,并且不想花太多时间“乱砍服务器”。我想花时间开发,而不是维护。
  • 这个项目我的预算最多每月约50美元。
  • 项目的数据库非常静态(几乎没有任何用户生成的数据)
  • 我目前正在使用WAMP&在我的本地安装上使用Rails 3.0.3的Mysql,它在大多数情况下工作正常,但也经常崩溃。

我正在考虑三种方法:

  1. 使用Heroku

    • 似乎很容易(即使我还没有工作)
    • 如果我需要更多节点,也似乎很贵。我应该需要多少个节点?
  2. 使用VPS Windows服务器

    • 我知道Windows,安装和设置它会相当容易
    • 我的朋友(更多是Rails专家)说Windows和Rails并不是一个很好的匹配。
    • 我当地环境的崩溃让我对这个选项感到紧张
  3. 使用VPS Ubuntu服务器

    • 似乎是最便宜的选择(就预付款而言)
    • 似乎是最稳定的选择
    • 我不知道Ubuntu,我也不太愿意学习一个全新的操作系统来实现这个目标。
  4. 你可以帮我指点一下吗? Windows服务器对Rails真的不好吗?

5 个答案:

答案 0 :(得分:5)

老实说,我觉得Windows对你来说是最糟糕的选择。 Windows和Rails的问题在于,大多数宝石从未设计为与Windows一起使用,或者与Windows一起使用的版本已经过时了。

使用Ubuntu VPS是一个非常可行的选择,将是您最便宜和最稳定的选择。我们使用Amazon S3服务在云中运行大多数Web服务器。就像你说的那样,它确实需要你了解和理解要维护的* nix操作系统。

也许对你来说,Heroku可能是最好的选择。 Heroku非常简单,可以设置项目然后进行部署。还有一些文档页面可以帮助您。在终端的一些基本命令中,您的应用程序正在运行。我经常使用Heroku作为'staging'服务器来测试beta用户之间的应用程序更新,然后再推送到S3上的生产。您也不需要学习新的操作系统来使用它。

如果您遇到部署到Heroku的问题,请发布问题,我们很乐意为您提供帮助。

答案 1 :(得分:4)

我会建议不要使用Windows服务器。根据我的经验,主要的ruby实现并没有针对Windows进行优化 - 而且运行缓慢。为了您的最终用户,Linux上的rails堆栈可以显着提高性能(或同样降低服务器预算)。

使用bundler和rails 3,服务器上的维护工作量应该是最小的。登录,部署,注销。 (查看像capistrano这样的工具,使其更加直接)。

答案 2 :(得分:3)

到目前为止,我发现的最简单的产品是Ubuntu服务器。

在Windows上,Rails往往速度较慢,而且在* nix上设置乘客之类的东西要简单得多。如果需要帮助,可以使用更多教程。

我最快的设置是Ubuntu Server和nginx。

PS。 Rails 3.0已超越3.0.3所以考虑测试最新版本8)

答案 3 :(得分:3)

Heroku很容易部署到。如果您的数据库负载很轻,您可以使用他们共享的20GB PostgreSQL数据库(15美元/月)。 2个dynos将花费你(35美元/月)所以那里你的50美元。 2应该可以处理该流量,并且您可以随时在高流量时间进行缩放。绝对会建议添加memcached附加组件并使用它。安装New Relic插件,您可以分析您的流量/负载并相应地扩展。

答案 4 :(得分:0)

我非常建议不要使用Windows进行rails应用程序部署。有些宝石在Windows上编译较慢,有些根本不工作。

我曾与Heroku合作,但由于Heroku不允许本地文件写入,因此将文件写入Heroku实例会有一些复杂性。在使用Heroku时,人们通常会将文件上传等写操作卸载到Amazon S3实例或Fog。一般来说,Heroku很容易部署,但是当配置出现时...它可能比VPS复杂一点。

对我来说最好的解决方案是使用Ubuntu通过VPS。已经完成了很多文档,您可以在配置方面有更多选择。实际上,它与在本地Ubuntu开发机器上设置Ruby on Rails没有多大区别。如果您需要有关如何在Ubuntu上部署的提示,我最近刚刚编写了一个如何操作的指南。

http://www.francisbautista.com/deploying-ruby-on-rails-apps-on-a-vps-nginx-passenger-capistrano/