环境:增加监控服务器配置

部署:修改 pm2 启动相关文件
This commit is contained in:
liangtongchuan
2021-04-20 12:09:41 +08:00
parent fb52dfbfda
commit 011335ff1f
14 changed files with 337 additions and 5 deletions

View File

@@ -1,3 +1,4 @@
require('xprofiler').start();
import { COM_TEAM_STATUS } from './app/consts';
import {
createTcpAcceptor,
@@ -38,7 +39,7 @@ filePath.CONFIG_DIR = '/config';
const adminfilePath = _pinus.DEFAULT_ADMIN_PATH;
adminfilePath.ADMIN_FILENAME = 'adminUser';
adminfilePath.ADMIN_USER = 'config/adminUser';
const ALL_ENVS = 'production|development|alpha|dev|isbn';
const ALL_ENVS = 'production|development|alpha|dev|isbn|monitor';
/**
* 替换全局Promise
* 自动解析sourcemap

View File

@@ -1 +1 @@
{"env":"alpha"}
{"env":"development"}

View File

@@ -24,5 +24,10 @@ module.exports = {
'mongo': 'mongodb://root:Bantus123@dds-8vb74337eab84d641.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb74337eab84d642.mongodb.zhangbei.rds.aliyuncs.com:3717/admin?replicaSet=mgset-504694158',
'redis': 'r-8vbekkbb3z8ru2ckuj.redis.zhangbei.rds.aliyuncs.com',
'redispw': 'zyz_isbn_2021'
},
'monitor': {
'mongo': 'mongodb://dbop:zyzMon2021@dds-8vb7474e31ba7ed41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7474e31ba7ed42.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-505529944',
'redis': 'r-8vb130185rp2ir3lqn.redis.zhangbei.rds.aliyuncs.com',
'redispw': 'zyz_monitor_2021'
}
};

View File

@@ -23,5 +23,10 @@ module.exports = {
'id': 'master-server-1',
'host': '127.0.0.1',
'port': 3005
},
'monitor': {
'id': 'master-server-1',
'host': '127.0.0.1',
'port': 3005
}
};

View File

@@ -197,5 +197,35 @@ module.exports = {
{'id': 'guild-server-1', 'host': '127.0.0.1', 'port': 6057, "args": " --inspect=9239"},
{'id': 'guild-server-2', 'host': '127.0.0.1', 'port': 6058, "args": " --inspect=9240"}
]
},
'monitor': {
'connector': [
{'id': 'connector-server-1', 'port': 4050, 'clientHost': 'zyz_monitor.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3050, 'frontend': true},
{'id': 'connector-server-2', 'port': 4051, 'clientHost': 'zyz_monitor.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3051, 'frontend': true},
{'id': 'connector-server-3', 'port': 4052, 'clientHost': 'zyz_monitor.trgame.cn', 'host': '127.0.0.1', 'clientPort': 3052, 'frontend': true}
],
'chat': [
{'id': 'chat-server-1', 'host': '127.0.0.1', 'port': 6050},
],
'role': [
{'id': 'role-server-1', 'host': '127.0.0.1', 'port': 6053}
],
'battle': [
{'id': 'battle-server-1', 'host': '127.0.0.1', 'port': 6054}
],
'gate': [
{'id': 'gate-server-1', 'host': '127.0.0.1', 'clientHost': 'zyz_monitor.trgame.cn', 'clientPort': 3014, 'frontend': true},
{'id': 'gate-server-2', 'host': '127.0.0.1', 'clientHost': 'zyz_monitor.trgame.cn', 'clientPort': 3015, 'frontend': true}
],
'gm': [
{'id': 'gm-server-1', 'host': '127.0.0.1', 'port': 6055}
],
'systimer': [
{'id': 'systimer-server-1', 'host': '127.0.0.1', 'port': 6056}
],
'guild': [
{'id': 'guild-server-1', 'host': '127.0.0.1', 'port': 6057, "args": " --inspect=9239"},
{'id': 'guild-server-2', 'host': '127.0.0.1', 'port': 6058, "args": " --inspect=9240"}
]
}
};

View File

@@ -1799,6 +1799,11 @@
"thenify-all": "^1.0.0"
}
},
"nan": {
"version": "2.14.2",
"resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591700047&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz",
"integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk="
},
"nanoid": {
"version": "3.1.12",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz",
@@ -2979,6 +2984,42 @@
"resolved": "https://registry.npm.taobao.org/xmlhttprequest-ssl/download/xmlhttprequest-ssl-1.5.5.tgz?cache=0&sync_timestamp=1564594177335&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxmlhttprequest-ssl%2Fdownload%2Fxmlhttprequest-ssl-1.5.5.tgz",
"integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4="
},
"xprofiler": {
"version": "1.2.5",
"resolved": "https://registry.npm.taobao.org/xprofiler/download/xprofiler-1.2.5.tgz",
"integrity": "sha1-ugaj1UMv9zIoQR6mhsNTnMWWTsQ=",
"requires": {
"moment": "^2.29.1",
"nan": "^2.14.2",
"node-pre-gyp": "^0.16.0",
"uuid": "^8.3.1",
"yargs": "^15.4.1"
},
"dependencies": {
"node-pre-gyp": {
"version": "0.16.0",
"resolved": "https://registry.npm.taobao.org/node-pre-gyp/download/node-pre-gyp-0.16.0.tgz?cache=0&sync_timestamp=1612890864161&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-pre-gyp%2Fdownload%2Fnode-pre-gyp-0.16.0.tgz",
"integrity": "sha1-I4+lQDZHhOUBXfzbp42jk34Y29w=",
"requires": {
"detect-libc": "^1.0.2",
"mkdirp": "^0.5.3",
"needle": "^2.5.0",
"nopt": "^4.0.1",
"npm-packlist": "^1.1.6",
"npmlog": "^4.0.2",
"rc": "^1.2.7",
"rimraf": "^2.6.1",
"semver": "^5.3.0",
"tar": "^4.4.2"
}
},
"uuid": {
"version": "8.3.2",
"resolved": "https://registry.npm.taobao.org/uuid/download/uuid-8.3.2.tgz?cache=0&sync_timestamp=1607460209394&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-8.3.2.tgz",
"integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I="
}
}
},
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz",

View File

@@ -50,7 +50,8 @@
"request": "^2.88.2",
"request-promise": "^4.2.6",
"source-map-support": "^0.5.0",
"ts-node": "^8.2.0"
"ts-node": "^8.2.0",
"xprofiler": "^1.2.5"
},
"devDependencies": {
"@types/node-schedule": "^1.3.1",

121
game-server/pm2Config.js Normal file
View File

@@ -0,0 +1,121 @@
/**
* Created by superzhan on 2018/3/19.
*
* 根据pomelo 的 servers.json 生成 pm2 启动文件
*/
//服务器端 工程代码的目录
var cwd='./';
//项目的运行环境
var config = require('./config.json');
var envType= config.env;
//配置文件的输出目录
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[envType];
var serversConfig = serversJosnFile[envType];
//生成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='+envType);
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');
}
});

5
game-server/pm2Starter.sh Executable file
View File

@@ -0,0 +1,5 @@
#/bin/bash
npm install #安装依赖库
npm run build
node pm2Config.js #使用pm2来做进程管理生成进程配置文件
pm2 start pomeloPm2Start.json #pm2 启动游戏服务器

View File

@@ -0,0 +1,55 @@
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
export default (appInfo: EggAppInfo) => {
const config = {} as PowerPartial<EggAppConfig>;
// override config from framework / plugin
// use for cookie sign key, should change to your own and keep security
config.keys = appInfo.name + '_1600244957952_7142';
// add your egg config in here
config.middleware = [];
config.cluster = {
listen: {
port: 7500
}
};
// add your special config in here
const bizConfig = {
sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`,
};
config.mongoose = {
url: 'mongodb://dbop:zyzMon2021@dds-8vb7474e31ba7ed41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7474e31ba7ed42.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-505529944', // 内网
options: { useNewUrlParser: true, useUnifiedTopology: true },
};
config.security = {
csrf: {
enable: false,
ignoreJSON: true
},
domainWhiteList: ['http://localhost:9000']
};
// 配置上传
config.multipart = {
fileSize: '50mb',
mode: 'stream',
fileExtensions: ['.zip', '.tar.gz'], // 扩展几种上传的文件格式
};
config.alinode = {
appid: '86043',
secret: '54ef0364995b0c4f2ab42150e29ad30df8327a3a',
error_log: [ '/root/logs/zyz/zyz-web.log', '/root/logs/zyz/common-error.log', '/root/logs/zyz/egg-agent.log' ],
packages: [ '/root/zyz/web-server/package.json' ],
};
// the return config will combines to EggAppConfig
return {
...config,
...bizConfig,
};
};

View File

@@ -4,6 +4,7 @@ if [ $# != 1 ] ; then
echo "stable: 同步代码到 stable 服务器上,作为正式服使用"
echo "alpha: 同步代码到 alpha 服务器上,作为测试服供服务开发使用"
echo "dev: 同步代码到 dev 服务器上,作为测试服供服务开发使用"
echo "monitor: 同步代码到 monitor 服务器上,用做监控和压力测试"
exit 1;
fi
@@ -15,6 +16,8 @@ elif [ ${1} == 'dev' ] ; then
destUrl="root@zyzdev:/root/zyz/"
elif [ ${1} == 'isbn' ] ; then
destUrl="root@zyzisbn:/root/zyz/"
elif [ ${1} == 'monitor' ] ; then
destUrl="root@zyzmon:/root/zyz/"
else
echo "需要一个参数指明服务器"
exit 1;
@@ -23,4 +26,4 @@ fi
node ./game-server/config.js ${1}
rsync -av --include '.babelrc' --include '.eslintrc.js' --exclude '.*' --exclude './game-server/node_modules' --exclude './game-server/node_modules' --exclude './game-server/dist' --exclude 'node_modules' --exclude 'bower_components' --exclude 'dist' --progress --inplace --no-owner --no-group --rsh='ssh -p22' . ${destUrl}
git checkout ./game-server/config.json
git checkout ./game-server/config.json

1
web-server/app/resource Symbolic link
View File

@@ -0,0 +1 @@
../../shared/resource

View File

@@ -0,0 +1,61 @@
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
const path = require('path');
export default (appInfo: EggAppInfo) => {
const config = {} as PowerPartial<EggAppConfig>;
// override config from framework / plugin
// use for cookie sign key, should change to your own and keep security
config.keys = appInfo.name + '_1597499383757_3508';
config.security = {
csrf: {
enable: false,
},
domainWhiteList: [ '*' ],
};
config.cors = {
origin: '*', // 匹配规则 域名+端口 *则为全匹配
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',
};
// add your egg config in here
config.middleware = [ 'parmsDecode' ];
config.mongoose = {
url: 'mongodb://dbop:zyzMon2021@dds-8vb7474e31ba7ed41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7474e31ba7ed42.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-505529944', // 内网
options: { useNewUrlParser: true, useUnifiedTopology: true },
};
config.alinode = {
appid: '86043',
secret: '54ef0364995b0c4f2ab42150e29ad30df8327a3a',
error_log: [ '/root/logs/zyz/zyz-web.log', '/root/logs/zyz/common-error.log', '/root/logs/zyz/egg-agent.log' ],
packages: [ '/root/zyz/web-server/package.json' ],
};
config.view = {
root: path.join(appInfo.baseDir, '/app/public'),
defaultViewEngine: 'nunjucks',
mapping: {
'.html': 'nunjucks' //左边写成.html后缀会自动渲染.html文件
},
};
config.decodeParm = true;
config.static = {
prefix: '/',
dir: path.join(appInfo.baseDir, '/app/public'),
};
// add your special config in here
const bizConfig = {
sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`,
};
// the return config will combines to EggAppConfig
return {
...config,
...bizConfig,
};
};

View File

@@ -21,7 +21,8 @@
"lint": "eslint . --ext .ts",
"clean": "ets clean",
"local": "cross-env EGG_SERVER_ENV=local npm run dev",
"isbn": "cross-env EGG_SERVER_ENV=isbn npm run dev"
"isbn": "cross-env EGG_SERVER_ENV=isbn npm run dev",
"monitor": "cross-env EGG_SERVER_ENV=monitor npm run dev"
},
"dependencies": {
"cross-env": "^7.0.3",
@@ -33,6 +34,8 @@
"egg-view-nunjucks": "^2.2.0",
"mongoose-transactions": "^1.1.4",
"reflect-metadata": "^0.1.13",
"request": "^2.88.2",
"request-promise": "^4.2.6",
"underscore": "^1.12.0"
},
"devDependencies": {