分布式:分布式部署脚本
This commit is contained in:
121
game-server/pm2DistributeConfig.js
Normal file
121
game-server/pm2DistributeConfig.js
Normal file
@@ -0,0 +1,121 @@
|
||||
/**
|
||||
* Created by superzhan on 2018/3/19.
|
||||
*
|
||||
* 根据pomelo 的 servers.json 生成 pm2 启动文件
|
||||
*/
|
||||
|
||||
//服务器端 工程代码的目录
|
||||
var cwd = './';
|
||||
|
||||
//项目的运行环境
|
||||
// var config = require('./config.json');
|
||||
var masterEnvType = process.argv[2];//主机环境
|
||||
var distributeEnvType = process.argv[3];//分布式环境
|
||||
console.log('masterEnvType is:', masterEnvType);
|
||||
console.log('distributeEnvType is:', distributeEnvType);
|
||||
|
||||
//配置文件的输出目录
|
||||
var outputFilePath = './pomeloPm2Start.json';
|
||||
|
||||
var masterJsonFile = require('./config/master.ts');
|
||||
var serversJosnFile = require('./config/servers.ts');
|
||||
|
||||
//模板数据
|
||||
var processConfigType = {
|
||||
"name": "",
|
||||
"script": "./dist/app.js",
|
||||
"args": [],
|
||||
"watch": false,
|
||||
"out_file": "./logs/app.log",
|
||||
"error_file": "./logs/err.log",
|
||||
"cwd": "",
|
||||
"merge_logs": true,
|
||||
"exec_mode": "fork_mode",
|
||||
};
|
||||
|
||||
|
||||
//最后的结果数据
|
||||
var resultJson = {};
|
||||
resultJson.apps = new Array();
|
||||
|
||||
|
||||
var clone = function (origin) {
|
||||
if (!origin) {
|
||||
return;
|
||||
}
|
||||
var obj = {};
|
||||
for (var f in origin) {
|
||||
obj[f] = origin[f];
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
|
||||
//
|
||||
var masterConfig = masterJsonFile[masterEnvType];
|
||||
var serversConfig = serversJosnFile[distributeEnvType];
|
||||
|
||||
//生成master 的配置
|
||||
// var pm2Master = clone(processConfigType);
|
||||
// pm2Master.name = "master";
|
||||
// pm2Master.args = new Array();
|
||||
// pm2Master.args.push('serverType=master');
|
||||
// pm2Master.args.push('id=' + masterConfig.id);
|
||||
// pm2Master.args.push('host=' + masterConfig.host);
|
||||
// pm2Master.args.push('port=' + masterConfig.port);
|
||||
// pm2Master.args.push('env=' + envType);
|
||||
// pm2Master.args.push('mode=stand-alone');
|
||||
// pm2Master.cwd = cwd;
|
||||
// pm2Master.out_file = './logs/' + masterConfig.id + "_app.log";
|
||||
// pm2Master.error_file = './logs/' + masterConfig.id + '_error.log';
|
||||
// resultJson.apps.push(pm2Master);
|
||||
|
||||
//生成当个服务器的配置
|
||||
for (serverType in serversConfig) {
|
||||
var servers = serversConfig[serverType];
|
||||
for (var i = 0; i < servers.length; ++i) {
|
||||
var singleServer = servers[i];
|
||||
|
||||
var appPm2Config = clone(processConfigType);
|
||||
appPm2Config.name = singleServer.id;
|
||||
appPm2Config.args = new Array();
|
||||
appPm2Config.args.push('env=' + masterEnvType);
|
||||
appPm2Config.args.push('id=' + singleServer.id);
|
||||
appPm2Config.args.push('port=' + singleServer.port);
|
||||
appPm2Config.args.push('host=' + singleServer.host);
|
||||
appPm2Config.args.push('serverType=' + serverType);
|
||||
|
||||
if (singleServer.frontend != null) {
|
||||
appPm2Config.args.push('frontend=' + singleServer.frontend);
|
||||
appPm2Config.args.push('clientPort=' + singleServer.clientPort);
|
||||
appPm2Config.args.push('clientHost=' + singleServer.clientHost);
|
||||
}
|
||||
|
||||
appPm2Config.cwd = cwd;
|
||||
appPm2Config.out_file = './logs/' + singleServer.id + '_app.log';
|
||||
appPm2Config.error_file = './logs/' + singleServer.id + '_error.log';
|
||||
|
||||
resultJson.apps.push(appPm2Config);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//生成结果数据
|
||||
var resultFileStr = JSON.stringify(resultJson);
|
||||
//console.log(resultFileStr);
|
||||
|
||||
|
||||
var fs = require('fs');
|
||||
|
||||
fs.writeFile(outputFilePath, resultFileStr, function (err) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
} else {
|
||||
console.log('finish genereate Server pm2 config');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user