0

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

理想情况下,我希望能够将我的代码提交到 bitbucket,然后设置一个提交后挂钩推送 POSTS 到应用服务器,以从存储库中提取新更改并自动开始为它们提供服务。我花了很多时间阅读有关 Puppet、Chef、Passenger 等的信息,但我已经不知所措了。我的设置按原样运行良好,但我知道时机成熟时它不会很好地扩展,所以我需要进行切换。我想要帮助的是确定除了我已经设置的工具之外我应该使用哪些工具,以使过程尽可能顺利。

谢谢

4

2 回答 2

1

我要做的第一件事是将 git 存储库移动到 GitHub(或 BitBucket,尽管我觉得它逊色)。

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

我不建议您在拥有任何用户之前花时间将应用程序拆分为多个服务器,特别是如果您仍然不精通您提到的基本工具。

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

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

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

请注意,如果您在 Heroku 上,部署只是从您的终端执行一次 git push。

于 2012-07-27T10:14:29.843 回答
0

The chef route would be the best but the learning curve for that is steep. Would you consider using EC2? If so, there's this gem which helps you provision (which is similar to Chef, Puppet) and deploy to EC2. You can setup different roles and it also uses Capistrano. https://github.com/wr0ngway/rubber

For me personally, I have vagrant boxes for my development and staging environments. Chef helps me provision/install software on them with one command, including my production servers. From my development environment, I can deploy my code to my staging and production environments using Capistrano from a git repo on bitbucket.

于 2012-07-27T00:23:08.983 回答