如何在不中断服务的情况下部署更改?

时间:2012-06-23 10:56:39

标签: node.js deployment express

我即将以 Node ,Express和Mongo开始一个项目,但我必须首先解决一个重要问题。

说我有一个正在运行的应用程序。迟早,我会再次编码并希望部署更改。到目前为止,我只在开发模式下工作,因此执行^ C并重启服务器不是问题。

在制作中怎么样?显然,我不能一次性丢弃服务器和所有用户。是否有在不中断服务的情况下部署更改的任何方法?

我已经研究过像暴发户和类似的系统,但它没有解决问题(或者我错过了什么?)。我正在考虑建立一种故障转移,但有人必须在我之前做到这一点......

3 个答案:

答案 0 :(得分:1)

好吧,我可能会使用像nginx这样的反向代理:低内存占用,能够处理大量的并发连接,并且当我最终拥有多个服务器时支持故障转移。

使用这个nginx反向代理,我可以使用更新的源启动一个新的Node进程,让nginx切换到新的Node并删除旧版本。

这也允许我在服务器上保留以前版本的应用程序,以防万一新版本崩溃得太早......

链接: http://nginx.org/en/docs/control.html

答案 1 :(得分:1)

NodeJitsu结帐Forever。它会对进程进行守护,并在出现故障时自动重新启动服务器。它还有一个选项来观察你的CWD,所以如果你在你的仓库中进行“git pull”,你的服务器将重新启动新代码。

我已经将它作为基于拉取的服务器模型在生产中使用了一年多,并且几乎没有问题。

答案 2 :(得分:0)

如果您关心可用性,则必须在多个服务器上运行您的服务,最好是在不同的物理位置。部署之外的许多事件可以使单个服务器脱机。所以没有问题,你让每个服务器脱机,部署到它,然后重新上线。

如果您不关心可用性,那么仍然没有问题。