【问题标题】:How to deploy web automatically, but not interrupting the production server如何自动部署 web,但不中断生产服务器
【发布时间】:2012-04-24 06:00:31
【问题描述】:
我想部署一个当前正在运行的网站(php、python、ROR 等等)。
我的代码托管在 git 中。
我读到了'deploy your website changes using git
和stackoverflow answer
而且很有用。但它有一个问题。它会中断生产服务器。
虽然时间很短。但是如果我们的服务器负载很重。它也会打断用户。
所以我的问题是如何在不中断的情况下将代码部署到生产服务器。
假设几种情况。
只有一台生产服务器。
是否唯一可行的方法是停止生产服务器并等待部署完成?
两个以上的生产服务器。
我知道我们可以停止一台生产服务器并部署到它,然后部署到下一台服务器直到完成。
但是有什么方法可以更好地做到这一点吗?
所有的方法都应该是自动的。谢谢!
【问题讨论】:
标签:
deployment
web
production-environment
【解决方案1】:
您无法直接部署到实时生产服务器,而不会在重新加载时中断某些连接。这实际上取决于网站的类型。如果它的服务器正在服务 php 页面,则替换页面将允许下一个客户端获取它们。但是,如果部署意味着重新启动进程,那么它将中断。最终,除非它的静态页面,否则您肯定会与某些东西发生冲突。
也许您可以做的是在代理后面有两台生产服务器。活一个。部署到另一个并在部署完成后切换 ip/host,然后开始向新更新的服务器发送新流量。原始服务器现在没有接收流量。您可以下次部署到该服务器并将主机切换回代理。然后你总是有一个实时服务器。
【解决方案2】:
我找到了一个几乎可以解决我的问题的工具。
它由 PHP 作者 Rasmus Lerdorf 开发,名为 WePloy。
但它只能部署PHP网站。