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

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

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

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

我们正在使用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工作?

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

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

    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 
  8. 确保通过执行heroku rake db:migrate所有数据库
  9. 完成所有这些步骤后,你应该很好。 查看您的域名url,一切都应该工作漂亮:)。
  10. 如果您在页面中看到任何错误,则可以通过heroku logs查看heroku logs
  11. 您可以作为heroku console访问heroku console

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

如果您需要更多帮助,请告诉我。

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

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

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

您应该能够访问Rails控制台( 请参阅heroku文档 )。 只需运行’heroku console’,瞧,你就在那里。

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

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

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

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

您可能还想看看这篇比较Slicehost和Heroku的博客文章

祝你好运

是的,去吧。

如果你已经凭借“编程经验”进行了管理,那么你会没事的。 有信心并发货! 引用保罗格雷厄姆的话 :

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

您概述的function很容易复制和记录,并且可以免费开始。 还有什么可以要求的?

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

但是,这将会带来一些非常严重的问题。

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

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

是的,去吧。

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

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