我即将开始一个项目节点,Express和Mongo,但有一个重要问题需要我先解决。如何在不中断服务的情况下部署更改?
说我有一个运行的应用程序。迟早,我会再次编码,并希望部署更改。到目前为止,我只在开发模式下工作,所以执行^ C并重新启动服务器并不是问题。
在生产中如何?很明显,我不能一次性破坏服务器和所有用户。有没有以任何方式部署更改而不中断服务?
我看着像暴发户和类似的系统,但它不解决问题(或我错过了什么?)。我目前正在考虑建立一种故障转移的,但必须有人已经做到了我面前......
我即将开始一个项目节点,Express和Mongo,但有一个重要问题需要我先解决。如何在不中断服务的情况下部署更改?
说我有一个运行的应用程序。迟早,我会再次编码,并希望部署更改。到目前为止,我只在开发模式下工作,所以执行^ C并重新启动服务器并不是问题。
在生产中如何?很明显,我不能一次性破坏服务器和所有用户。有没有以任何方式部署更改而不中断服务?
我看着像暴发户和类似的系统,但它不解决问题(或我错过了什么?)。我目前正在考虑建立一种故障转移的,但必须有人已经做到了我面前......
如果你关心的可用性,那么你必须在多个服务器上运行的服务,最好是在不同的物理位置。除部署外,大量事件都可以使单台服务器脱机。因此,没有任何问题,您可以将每台服务器脱机,部署到该服务器并重新联机。
如果您不在乎可用性,仍然没有问题。
当然,但如果我至少可以避免每次部署时都要确保将服务关闭,那么它已经一个不错的步骤:) – aspyct
好吧,我可能会去一个反向代理nginx的一样:低内存占用,能够处理大量的并发连接,并支持故障转移时,我终于有一个以上的服务器。
有了这个nginx的反向代理,我可以用更新的源开始一个新的节点过程中,有nginx的切换到新的节点和垃圾的旧版本。
这也将让我保留在服务器上的应用程序的早期版本,以防万一新版本太早崩溃......
结帐Forever通过NodeJitsu。它将进程守护进程并在出现故障时自动重新启动服务器。它还有一个选项可以观察你的CWD,所以如果你在你的repo中做了“git pull”,你的服务器会重新启动并使用新的代码。
我已经在生产中使用这个作为一种基于拉的服务器型号为一年多了,并有很少或几乎没有问题。
云部署平台,如Heroku的和nodejitsu您处理该问题:) –
是的,他们接触到的计算了。但是,因为这是一个非营利组织,我想找到最便宜的解决方案:) – aspyct