2

本文记录了ET服务端从Windows开发环境部署到CentOS7测试环境的全过程。

CentOS环境部署

CentOS部署主要涉及到.Net Core安装、MongoDB安装配置,因为使用到的.Net Core版本为2.1,故使用CentOS7作为测试环境。

1 .Net Core安装

首先查看本地Windows开发环境中.Net Core版本,打开CMD,执行命令 dotnet --info,如下所示:

clipboard.png

图中红框内即为版本号: 2.1.301,依据此版本号去 https://dotnet.microsoft.com/... 下载相应安装包。

clipboard.png
如红框内SDK 2.1.301 Linux x64

下载完毕后,使用WinSCP工具将安装包上传至CentOS,解压至/usr/local/dotnet,为方便使用,可将该目录添加至环境变量,编辑配置文件:

vim /etc/profile    

在最底下添加如下代码:

PATH=$PATH:/usr/local/dotnet
export PATH

保存后,执行 source /etc/profile 命令使修改生效,此时可以在任意目录通过dotnet --info命令查看当前已安装的dotnet版本:

clipboard.png
可以看见与本地Windows中.Net Core版本一致,至此,.Net Core安装完成。

2 MongoDB安装

添加yum源:

vim /etc/yum.repos.d/mongodb-org-3.4.repo

配置如下,复制粘贴后保存退出:

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

使用yum安装:

sudo yum update
sudo yum install -y mongodb-org

等候安装完毕,修改mongoDB配置文件:

vim /etc/mongod.conf

修改net与security域如下:

net:
  port: 27017
  bindIp: 0.0.0.0

#security:
  #authorization: enabled
  

bingIp为允许登陆的ip地址,修改为0.0.0.0表示允许所有ip登陆,添加authorization字段并设置为enabled,表示开启安全验证,暂时屏蔽该字段,后续创建数据库与账户后再开启。

启动mongoDB:

systemctl start mongod.service

查看mongoDB运行状态

systemctl status mongod.service

结果如下,为active(running),表明正在运行:

clipboard.png

此时,可以在本地Windows环境中,使用MongoDBCompass或者其他数据库连接工具连接,创建远程mongoDB数据库与集合,此处不详述。创建完数据库后,继续在CentOS中创建用户用于安全验证,在终端输入 mongo 命令进入mongoDB控制台:

clipboard.png
切换数据库,如et:

use et

创建用户,假设目标数据库名称为et:

db.createUser({
 user:"root",
 pwd:"123456",
 roles:[{role:"readWrite",db:"et"}]
 })

user: 用户名,pwd:密码,role:readWrite表示读写权限,db:指定数据库,添加成功如下图所示:

clipboard.png

授予用户该数据库的权限:

db.auth('root','123456')

返回1表示授予成功:

clipboard.png

重新修改上述 /etc/mongod.conf 文件,将security域的注释取消,开启安全验证:

security:
  authorization: enabled

重启mongoDB服务:

systemctl restart mongod.service

至此,mongoDB安装配置完成。

程序发布

1 服务端程序发布

在本地Windows环境中,打开Server工程目录(即Server.sln所在目录),按住SHIFT键,在文件夹空白处单击右键,选择“在此处打开命令窗口”,执行发布命令:

dotnet publish -c Release

生成发布文件夹,即服务端运行程序文件夹,相对于此时所在目录路径为../Bin/publish,将发布文件夹上传至CentOS。

2 FileServer资源服务器发布

资源服务器工程目录为 Tools/FileServer,发布过程与服务端相似,发布目录为 FileServer/publish,可更名为FileServer上传至CentOS即可,此处不再一一赘述。

3 服务端配置

修改本地服务端配置文件,以 Config/StartConfig/LocalAllServer.txt 为例,修改OuterConfig的Address为服务器内网地址,Address2为外网地址:

clipboard.png

修改DBConfig的ConnectionString,即mongoDB连接验证字符串,DBName改为相应数据库名称:

clipboard.png

root为账号,123456为密码,127.0.0.1表示数据库与服务端程序在同一地址,如不同,可自行填写数据库ip。注意ConnectionString最后的"/et"为指定的登陆数据库,如为空"/",则默认登陆"admin"数据库,因当前账号无"admin"数据库权限,则会导致登陆失败。

修改完毕后,将本地Config/文件夹全部上传至服务器即可,至此,所有文件已准备完成,此时服务器目录结构为:

clipboard.png
其中Config为服务器配置,FileServer为资源服务器运行目录,Logs为ET服务端运行后自动生成的日志,publish为ET服务端运行目录。

程序运行

1 运行服务端程序

切换目录至publish文件夹,启动ET服务端:

nohup dotnet App.dll --appId=1 --appType=AllServer --config=../Config/StartConfig/LocalAllServer.txt > runtime.log 2>&1 &

因为运行环境为阿里云,所以直接采用后台运行,避免终端关闭后服务端也关闭。此处踩过一个坑,若运行后,runtime.log疯狂增长,且内容全为异常日志,如下:

clipboard.png

该异常触发频率极快,导致runtime.log增长飞快,进程占用cpu极高,可注释服务端源文件Program.cs中如下代码:

// Game.Scene.AddComponent<ConsoleComponent>();

不添加ConsoleComponent组件即可,此异常触发的底层原因暂时不明,后续再跟进。

2 运行资源服务器

切换目录至FileServer文件夹,启动资源服务器:

nohup dotnet FileServer.dll > runtime.log 2>&1 &

资源服务器存放的资源文件路径为ET服务端运行目录,如 Server/publish/PC,或者Server/publish/Android等。

3 开放阿里云端口

在阿里云控制台管理中,依次选择“本实例安全组-配置规则-添加安全组规则”,开放ET服务端端口10002:

clipboard.png

同理,再开放资源服务器端口8080即可。

至此,所有部署工作完毕,将ET客户端全局配置中的资源路径与服务器地址修改为CentOS地址,即可连接测试环境。


CodeXl
4 声望2 粉丝

自计算机蹭课而来