Node.js 如何重新启动/更新node express vhost站点

Node.js 如何重新启动/更新node express vhost站点,node.js,express,virtualhost,express-vhost,Node.js,Express,Virtualhost,Express Vhost,我在两个网站上工作,都有两个版本,live one和dev one。 及 它们都使用express vhost在同一端口和服务器上运行 我的vhost应用程序看起来非常简单,基本上是这样的: var evh = require('express-vhost'), express = require('express'); /*... some more variable declarations ...*/ if ( site_enabled('test.timeprize.com'

我在两个网站上工作,都有两个版本,live one和dev one。 及 它们都使用express vhost在同一端口和服务器上运行

我的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 ...*/
我使用“永远”进程运行上面的代码

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

解决以下问题:

因为测试站点和活动站点都使用相同的进程在同一服务器/端口上运行


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

要回答真正的问题:

如何更新/重新启动测试站点而不中断实时站点

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

  • 全局安装:
  • [sudo]npm i-g pm2

  • 启动应用程序,sudo如果侦听的端口低于1024:
  • [sudo]pm2启动app.js

  • 使用以下命令重新启动应用程序:
  • [sudo]pm2重启[all | name]

    [sudo]pm2优雅地重新加载[all | name]


    “这不应该发生。当第二个程序尝试侦听已占用的端口时,服务器应该抛出错误。”使用相同的服务器/端口是我atm的一项要求。这就是为什么我永远使用vhost。Vhost实际上并不创建新的httpServer,而是创建一个全局服务器,将传入事件映射到各个站点。PM2允许吗?嗯,这听起来像是DNS类型的东西。你所说的“永远”将允许你启动两个应用程序,监听同一端口?如果您让端口53正确地将内容映射到其他端口,该怎么办?express vhost通过创建单个全局应用程序,允许使用同一端口的多个站点共存,从而在其内部创建多个子应用程序。这些子应用使用vhost使用的服务器实例。因此,只有一个应用程序正在侦听端口80。然后,这个应用程序将传入的请求发送到适当的站点(比如代理,但要简单得多)啊哈,明白了。所以你想重新启动应用程序,并在这个vhost应用程序下“编译”它们最后你是如何解决的?@user310291我没有:)对于我的测试站点,如果需要,我会重新启动所有的应用程序,还有实时的应用程序……它们是独立的