如何改进当前的部署工作流程(使用Capistrano)?

时间:2011-07-01 00:26:37

标签: ruby-on-rails deployment capistrano

我们的团队在高流量网站上工作,我们使用Capistrano部署在Ubuntu / Apache / Passenger上运行的Rails应用程序。我们有负载均衡设置,因此我们当前最小化停机时间并避免让客户看到Rails的500页面的程序如下(假设只有2个生产服务器,仅用于此示例):

  • 在production_1上关闭Apache(负载平衡现在将所有请求发送到production_2)
  • 部署到第一台服务器:cap production_1 deploy(在部署结束时打开Apache)
  • 做一些基本的测试以确保没有任何问题
  • 如果出现问题,请关闭Apache并回滚

然后,我遵循production_2服务器的该过程。

正如你所看到的,这很痛苦,所以我正在寻找一种更好的方法。更不用说我们有更多的服务器,并且很快就会增加。

有哪些替代方案?

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,您可以拥有名为“production_0”,“production_1”的不同环境,并使用capistrano-ext提供多级部署。运行它们如下:

  1. cap production_0 deploy
  2. cap production_1 deploy
  3. 请查看Github pages如何设置多阶段部署