我正在几个网站上工作,都有 2 个版本,实时版本和开发版本。 http://timeprize.com和 http://test.timeprize.com 它们都使用 Express vhost 在相同的端口和服务器上运行。
我的虚拟主机应用程序看起来非常简单,基本上是这样的:
var evh = require('express-vhost'),
express = require('express');
/*... some more variable declarations ...*/
if ( site_enabled('test.timeprize.com') ) {
/**/
evh.register('test.timeprize.com', function() {
var app = express();
app = require("../test_app/app.js").run_app(http);
return app;
}() );
};
if ( site_enabled('timeprize.com') ) {
evh.register('timeprize.com', function() {
var app = express();
app = require("../live_app/app.js").run_app(http);
return app;
}() );
};
/*... more sites below ...*/
我使用“永远”进程运行上面的代码。
现在问题来了。 由于测试站点和实时站点都使用相同的进程在同一服务器/端口上运行,我如何更新/重新启动测试站点,而不中断实时站点?
最佳答案
要解决:
Since the test site, and live site are both running on the same server/port using same process
这不应该发生。当第二个程序尝试监听已占用的端口时,您的服务器应该抛出错误。
回答真实问题:
How do I update/restart the test site, without interrupting the live site?
答案是不要永远使用。是的,这很简单,但是对于同步运行多个应用程序的服务器来说,必须使用程序是 PM2
- 全局安装:
[sudo] npm i -g pm2
- 启动您的应用,如果它监听低于 1024 的端口,请使用 sudo:
[sudo] pm2启动app.js
- 通过以下方式重新启动您的应用:
[sudo] pm2 restart [all|name]
或者
[sudo] pm2 GracefulReload [全部|名称]
关于node.js - 如何重新启动/更新 Node Express 虚拟主机站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35684416/