4

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

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

在生产中怎么样?显然,我不能一次丢弃服务器和所有用户。有没有办法在不中断服务的情况下部署更改?

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

4

3 回答 3

1

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

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

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

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

于 2012-06-23T21:29:18.167 回答
1

NodeJits 的Checkout Forever。它守护进程并在出现故障时自动重新启动服务器。它还有一个选项来监视你的 CWD,所以如果你在你的 repo 中执行“git pull”,你的服务器将使用新代码重新启动。

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

于 2012-06-25T12:54:31.183 回答
0

如果您关心可用性,那么您必须在多台服务器上运行您的服务,最好是在不同的物理位置。除了部署之外的许多事件都可能使单个服务器脱机。所以没有问题,您将每台服务器脱机,部署到它,然后将其重新联机。

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

于 2012-06-23T11:23:57.290 回答