node.js - 如何重新启动/更新 Node Express 虚拟主机站点

标签 node.js express virtualhost express-vhost

我正在几个网站上工作,都有 2 个版本,实时版本和开发版本。 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 ...*/

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

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

最佳答案

要解决:

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

  1. 全局安装:

[sudo] npm i -g pm2

  • 启动您的应用,如果它监听低于 1024 的端口,请使用 sudo:
  • [sudo] pm2启动app.js

  • 通过以下方式重新启动您的应用:
  • [sudo] pm2 restart [all|name]

    或者

    [sudo] pm2 GracefulReload [全部|名称]

    Check out documentation

    关于node.js - 如何重新启动/更新 Node Express 虚拟主机站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35684416/

    相关文章:

    javascript - 如何在 Express.js 中添加 Angular 2 应用程序作为 View

    javascript - 如何从路由函数外部获取Nodejs响应对象?

    php - 从外部设备本地访问 Laravel 5 应用程序

    mysql - 无法将数组的每个值存储为数据库表中的单独行

    javascript - 是(或者可以)用 Nodejs http 服务器替代 Apache 或 IIS 等大型服务器

    node.js - NodeJS ExpressJS Multer 文件扩展名小写

    apache - 使用 Htaccess 的单域多框架?

    Apache Virtualhost 更喜欢新站点的 "default"服务器

    javascript - 请求错误 : Connection lost - read ECONNRESET for mssql in nodejs

    node.js google oauth2 示例停止工作 invalid_grant