如何重启/更新node express vhost站点

时间:2016-02-28 15:30:52

标签: node.js express virtualhost express-vhost

我在几个网站上工作,都有两个版本,一个是live,另一个是dev。 http://timeprize.comhttp://test.timeprize.com 它们都使用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 ...*/

我使用"永远"运行上面的代码过程

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

1 个答案:

答案 0 :(得分:1)

解决:

  

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

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

回答真实的问题:

  

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

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

  1. 全球安装:
  2. [sudo] npm i -g pm2

    1. 启动你的应用,如果它听到1024以下的端口,则为sudo:
    2. [sudo] pm2 start app.js

      1. 使用以下网址重新启动您的应用:
      2. [sudo] pm2 restart [all|name]

        OR

        [sudo] pm2 gracefulReload [all|name]

        Check out documentation