2

我在几个网站上工作,都有 2 个版本,一个是 live 一个,一个是 dev 一个。 http://timeprize.comhttp://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 ...*/

我使用“永远”过程运行上面的代码。

而现在的问题。由于测试站点和实时站点都使用相同的进程在同一服务器/端口上运行,我如何更新/重新启动测试站点,而不中断实时站点?

4

1 回答 1

1

为了解决:

由于测试站点和实时站点都使用相同的进程在同一服务器/端口上运行

这不应该发生。当第二个程序尝试侦听已占用的端口时,您的服务器应该抛出错误。

要回答真正的问题:

如何在不中断实时站点的情况下更新/重新启动测试站点?

答案是永远不要使用。是的,这很简单,但对于同时运行多个应用程序的服务器来说,必须使用的程序PM2

  1. 全局安装:

[sudo] npm i -g pm2

  1. 启动您的应用程序,如果它侦听低于 1024 的端口,请使用 sudo:

[sudo] pm2 start app.js

  1. 使用以下命令重新启动您的应用程序:

[sudo] pm2 restart [all|name]

或者

[sudo] pm2 gracefulReload [all|name]

查看文档

于 2016-02-28T15:39:19.647 回答