Node,ExpressJS,vhost - 运行多个应用程序

时间:2016-01-04 11:12:36

标签: javascript node.js express

我想使用Node / ExpressJS来提供多个应用程序,而且我来自IIS背景。我遇到的问题是基于重启个别应用,而无需重新启动所有应用。

在IIS中,我只需点击该应用(在' sites'列表中),然后点击重启,这将只重启该应用,让所有其他应用保持正常运行。

这就是我的......

服务器:

// index.js

require('console.table');

var _ = require('underscore-contrib');
var express = require('express');
var vhost = require('vhost')

var app = express();

var config = require("./config.json");

var websitesStart = function(website){
    if (website.live) {
        var host = vhost(website.domain, require(website.folder))
        app.use(host);
    }
}

_.each(config.websites, websitesStart);

app.listen(config.port, function(){
    console.log('Web Server Running, Port:' + config.port);
    console.table(config.websites);
});

配置:

// config.json
{
    "port": "8080",
    "websites": [
        {
            "name": "App 1",
            "live": "true",
            "domain": "app1.uk",
            "folder": "../apps/app1"
        },{
            "name": "App 2",
            "live": "true",
            "domain": "app2.uk",
            "folder": "../apps/app2"
        },{
            "name": "App 3",
            "live": "true",
            "domain": "app3.uk",
            "folder": "../apps/app3"
        }
    ]
}

正常运行node index.js即可启动我的所有应用。

例如,如果我对App 2中的某些代码进行了更改,我将如何重新启动该应用程序..?让应用程序1和3运行..?

更新:我在Windows操作系统上运行,因此PM2并非真正的选项,因为它只是在测试阶段。

更新2 我真的想在端口80上运行所有应用程序,就像在IIS中一样。如果我将每个应用程序作为不同的ExpressJS应用程序运行(将它们作为单独的进程/服务运行),我是否需要使用不同的端口..?

1 个答案:

答案 0 :(得分:0)

您可以使用PM2 module进行流程管理。 只需在package.json中描述您的应用,然后启动它们:

./node_modules/.bin/pm2 start package.json

您可以使用它来重新启动一个应用程序:

./node_modules/.bin/pm2 restart  <app_name|id|'all'|json_conf>

所以你不需要&#34;网站开始&#34;功能完全。