【问题标题】:How to restart / update node express vhost site如何重新启动/更新 node express vhost 站点
【发布时间】:2016-06-11 14:22:09
【问题描述】:

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

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

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

【问题讨论】:

  • 最后你是怎么解决的?
  • @user310291 我没有

标签: node.js express virtualhost express-vhost


【解决方案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]

Check out documentation

【讨论】:

  • "这不应该发生。当第二个程序尝试侦听已占用的端口时,您的服务器应该抛出错误。"使用相同的服务器/端口是我 atm 的要求。这就是为什么我永远使用 vhost。 Vhost 实际上并没有创建新的 httpServer,它创建了一个全局服务器,将传入事件映射到各个站点。 PM2 允许吗?
  • 嗯。这听起来像是一种 DNS 类型的东西。您所说的forever 将允许您启动两个侦听同一端口的应用程序?如果您告诉端口 53 将事物正确映射到其他端口会怎样?
  • express vhost 允许使用相同端口的多个站点通过创建单个全局应用程序共存,进而在其内部创建许多子应用程序。这些子应用程序使用与 vhost 相同的服务器实例。所以只有一个应用程序监听端口 80。然后这个应用程序将传入请求发送到适当的站点(如代理,但更简单)
  • 啊,明白了。所以你想重新启动应用程序并在这个虚拟主机应用程序下“编译”它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
  • 2013-11-16
  • 2013-09-22
相关资源
最近更新 更多