我应该在Heroku上部署我的Ruby on Rails应用程序

时间:2011-08-17 17:43:22

标签: ruby-on-rails ruby git deployment heroku

关于我自己。我今年24岁,去年毕业于北卡罗来纳州立大学,获得硕士学位。统计,数学,那种事。我没有强大的编程背景,这对我的问题非常重要。如果我说任何没有任何意义的话,那就是原因。从毕业以来,我一直在与其他几个人一起在Rails应用程序上工作。我的编程经验主要是Ruby on Rails(1。2年。)我知道R,SAS(统计语言,对这个问题没有帮助。)

显然,这意味着它已经开发了一年多,我们还没有完成。主要的开发人员是一个优秀的程序员,只是他已经有一份全职工作,并在业余时间做这个应用程序。由于他最近没有足够的时间,我已经完全负责该应用程序。

我们现在已经部署在Slicehost上了。该应用程序是我们不需要编程任何其他东西(除非我们想到更多的功能。)我问我们是否应该迁移到Heroku的原因是我认为Heroku是一个简单的平台部署。 Slicehost对我来说似乎太复杂了。另一个开发人员处理它,而不是我。我看了如何在Heroku上部署应用程序,看起来我能够做到。如果需要,我们需要我们的应用程序扩展,Heroku提供。至于钱,我会在最低限度(免费)开始,看看它是怎么回事。如果需要,我可以支付额外的功能。

我们正在使用Redmine进行项目管理和存储库(不是git,我认为我们需要在Heroku上使用它。)git是否类似于Redmine?它易于使用吗?

现在,在Slicehost上,我们有4个守护进程(不断运行的进程。)我们有8个delayed_job工作者。我知道启动守护进程和delayed_job工作程序的命令行。这些会在Heroku上运行吗?

我想知道我是否仍然可以在Heroku中使用RAILS_ENV =生产脚本/控制台。

用户界面是一个javascript文件。在开发模式下,如果我在终端中执行脚本/服务器,并在浏览器中转到http://localhost:3000,我就可以看到它。 Heroku会按照我想要的方式加载这个页面吗?

我们为该应用提供了一个有效的网站,并拥有自己的域名。我真的不知道DNS是什么,所以我可能无法将Heroku应用程序链接到它,除非有一个简单的方法。我认为Heroku将其链接到appname.heroku.com作为默认值。

根据我的编程经验,Heroku是否足够容易让我使用,如果我找到另一份工作,或者我应该提交seppuku吗?

5 个答案:

答案 0 :(得分:6)

是的,您绝对应该在heroku中部署您的应用程序。要做到这一点,您需要这样做:

  1. 确保您的计算机中已安装 git
  2. 创建一个heroku帐户here
  3. 安装heroku gem并按照in this page
  4. 所述完成其余工作
  5. 使用git跟踪您的应用程序,并按照here
  6. 所示创建您的heroku应用程序
  7. 执行此操作后,heroku将为您提供应用的网址,例如 http://blah-bleep-123.heroku.com 。现在,下一步是将您的域与此heroku URL相关联。
  8. 如图所示in this page配置域DNS服务器。请注意,更改DNS后,最多可能需要48小时才能运行。您可以登录您购买域名的网站来更改您的域名DNS,例如godaddy.com,hostingdude.com等。
  9. 将此代码添加到ApplicationController。您也可以从this page以及

    开始关注此操作
    class ApplicationController
      before_filter :ensure_domain
    
      APP_DOMAIN = 'www.mydomain.com'
    
      def ensure_domain
        if request.env['HTTP_HOST'] != APP_DOMAIN
          # HTTP 301 is a "permanent" redirect
          redirect_to "http://#{APP_DOMAIN}", :status => 301
        end
      end
    end
    
  10. 确保通过heroku rake db:migrate
  11. 迁移heroku中的所有数据库
  12. 完成所有这些步骤后,你应该做得很好。查看您的域名网址,一切都应该运行得非常好:)。
  13. 如果您在页面中看到任何错误,可以按heroku logs
  14. 查看日志
  15. 您可以heroku console
  16. 访问控制台

    有了这些功能,heroku非常方便使用。

    如果您需要更多帮助,请与我们联系。

答案 1 :(得分:3)

在我看来,你应该认真考虑Heroku。我已将它用于周末项目,我们也在工作中使用它,非常成功。部署是轻而易举的,您不必担心设置(大部分)和系统管理。添加模块非常容易,“随着成长而付费”。

至于你的需求,你可以(我相信)在Heroku上运行你的redmine,作为rails应用程序。唯一的事情就是你提到你使用Redmine作为“存储库”,我不确定我理解你的意思,因为Redmine不是版本控制系统。 Redmine具有各种VCS(SVN,git,Mercurial,CVS等)的集成点。是的,Heroku使用git,这是你需要使用它来将代码推送到服务器。如果你熟悉Mercurial,它就非常相似。

对于延迟工作,Heroku提供免费的cron工作,每天运行一次,每小时一次,收费(见cron add-on)。还有一个延迟的工作插件(see this),但我没有任何经验。

您应该能够访问Rails控制台(see heroku docs)。只需运行'heroku console',瞧,你就在那里。

如果您的应用程序通过运行脚本/服务器工作,它也应该在heroku中开箱即用。

对于DNS,让它与您的自定义域一起使用并不难。开箱即用,您可以使用appname.heroku.com访问您的应用,以设置自定义域检查heroku docs here,但基本上您必须添加自定义域加载项(除非您想要子域名,否则免费),配置heroku以响应您的域的请求(几个简单命令)并将您的DNS提供程序设置为指向Heroku(在文档中甚至还有关于如何使用GoDaddy执行此操作的简短视频)。

我在Heroku中看到的唯一缺点是,如果你的应用程序在很长一段时间内没有收到任何流量,那么这些实例有点“进入睡眠状态”,使得下一个请求到达有点慢(有时甚至超时),但一旦实例醒来,一切都很好。

总而言之,我认为Heroku是一个很好的方式,可以减轻你作为开发人员的负担,让很多事情很容易实现,而不必深入了解设置服务器的细节。 。缺点:一旦你开始成长,它可能会变得有点昂贵,但是嘿,如果你正在增长它可能意味着你现在有现金雇用一个可以照顾细节的人。

您可能还想查看比较Slicehost和Heroku

this blog post

祝你好运

答案 2 :(得分:3)

是的,去吧。

如果你已经凭借“编程经验”进行了管理,那么你会没事的。有信心并发货!引用Paul Graham

  

快速推出的原因并不是让您的产品尽早上市至关重要,而是在您推出产品之前还没有真正开始使用它。启动会告诉您应该构建的内容。直到你知道你在浪费你的时间。因此,您发布的任何内容的主要价值都是吸引用户的借口。

您概述的功能很容易复制,well documented可以自由开始。还有什么可以要求的?

答案 3 :(得分:1)

如果你有空闲时间,你可以注册一个免费帐户并试一试。

然而,这会带来一些非常严重的麻烦。

版本控制将是一个,因为heroku使用git,但另一个没有人提到的是你的12个进程(heroku中的“dynos”)将花费你每月$ 35 * 11 = $ 385!您可以设置每小时3美元的小时cron来刷新您的delayed_job队列(而不是让工作人员一直在运行),但这是否足够? (如果你正在运行8名工人,我猜不是)。这可能需要也可能不需要更改代码。

设置完成后,部署和管理非常简单(不存在),但如果您开始需要新功能,则会花费您的成本。

答案 4 :(得分:1)

是的,去吧。

其良好的部署环境,任何快速简便的扩展和扩展功能。 即使您可以使用它进行测试或演示,它为您提供每个应用程序1个dynos的免费帐户使用。

可根据您的要求添加的附加工具列表。