设置持续部署环境以实现高效扩展

时间:2012-07-26 23:04:52

标签: ruby-on-rails ruby-on-rails-3 continuous-integration continuous-deployment

我已经准备好启动我的rails应用程序了,我一直在测试使用一个linode盒子。我的git repo目前也托管在同一个盒子里,其中还包括应用程序和数据库。我想将它们拆分为3个实体 - 数据库服务器和应用程序服务器(可以选择轻松添加更多),以及在bitbucket上托管的repo。

理想情况下,我希望能够将我的代码提交到bitbucket,然后设置一个post-commit钩子推送POSTS到app服务器以从repo中提取新的更改并自动开始提供它们。我花了很多时间阅读有关Puppet,Chef,Passenger等的内容,而且我很不知所措。我的设置工作正常,但我知道它会在时机成熟时不能很好地扩展,所以我需要进行切换。我想要帮助的是确定我应该使用哪些工具以及我已经设置的工具,以使流程尽可能顺利。

由于

2 个答案:

答案 0 :(得分:1)

我要做的第一件事是将git存储库移动到GitHub(或BitBucket,虽然我发现它不如此)。

除非您的应用程序将成为热门话题,否则生产的Linode将为您提供服务。请记住,您可以升级到更大的实例,而不会破坏设置中的任何内容。

在您拥有任何用户之前,我建议您不要花时间将应用分成多个服务器,特别是如果您还不熟悉您提到的基本工具。

您还可以将应用移至Heroku。将一个实例作为临时服务器,将另一个实例作为生产。它将无限扩展,您不必担心自动配置和安全性。您的应用程序将启动并运行得非常快,这是最重要的。

如果您使用非自动化的手动程序在Linode上设置生产服务器,那就不会那么糟糕。在此过程中,您将学到很多东西。它取决于你,虽然我建议默认情况下从Heroku开始。如果随着时间的推移你在Heroku上发现限制你的应用程序的东西,它可能会在你的应用程序成熟并且(希望)有利可图时及时,所以现在是卷起袖子管理你的好时机的好时机。自己的硬件。

我也不建议在每次推送到存储库时进行部署。您肯定需要至少确保所有测试都通过(您正在编写测试吗?)。无论何时推送到仓库,持续集成服务器都可以自动为您运行它们。我可以为此目的推荐Semaphore

请注意,如果您使用Heroku,部署只需从您的终端进行一次git推送。

答案 1 :(得分:0)

厨师路线是最好的,但学习曲线陡峭。你会考虑使用EC2吗?如果是这样,有这个宝石可以帮助你提供(类似于Chef,Puppet)并部署到EC2。您可以设置不同的角色,它也使用Capistrano。 https://github.com/wr0ngway/rubber

就我个人而言,我的开发和舞台环境都有流浪盒。 Chef帮助我使用一个命令(包括我的生产服务器)在其上配置/安装软件。在我的开发环境中,我可以使用Capistrano从bitbucket上的git repo将我的代码部署到我的登台和制作环境。