我想使用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应用程序运行(将它们作为单独的进程/服务运行),我是否需要使用不同的端口..?
答案 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;功能完全。