本文记录了ET服务端从Windows开发环境部署到CentOS7测试环境的全过程。
CentOS环境部署
CentOS部署主要涉及到.Net Core安装、MongoDB安装配置,因为使用到的.Net Core版本为2.1,故使用CentOS7作为测试环境。
1 .Net Core安装
首先查看本地Windows开发环境中.Net Core版本,打开CMD,执行命令 dotnet --info,如下所示:
图中红框内即为版本号: 2.1.301,依据此版本号去 https://dotnet.microsoft.com/... 下载相应安装包。
如红框内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版本:
可以看见与本地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),表明正在运行:
此时,可以在本地Windows环境中,使用MongoDBCompass或者其他数据库连接工具连接,创建远程mongoDB数据库与集合,此处不详述。创建完数据库后,继续在CentOS中创建用户用于安全验证,在终端输入 mongo 命令进入mongoDB控制台:
切换数据库,如et:
use et
创建用户,假设目标数据库名称为et:
db.createUser({
user:"root",
pwd:"123456",
roles:[{role:"readWrite",db:"et"}]
})
user: 用户名,pwd:密码,role:readWrite表示读写权限,db:指定数据库,添加成功如下图所示:
授予用户该数据库的权限:
db.auth('root','123456')
返回1表示授予成功:
重新修改上述 /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为外网地址:
修改DBConfig的ConnectionString,即mongoDB连接验证字符串,DBName改为相应数据库名称:
root为账号,123456为密码,127.0.0.1表示数据库与服务端程序在同一地址,如不同,可自行填写数据库ip。注意ConnectionString最后的"/et"为指定的登陆数据库,如为空"/",则默认登陆"admin"数据库,因当前账号无"admin"数据库权限,则会导致登陆失败。
修改完毕后,将本地Config/文件夹全部上传至服务器即可,至此,所有文件已准备完成,此时服务器目录结构为:
其中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疯狂增长,且内容全为异常日志,如下:
该异常触发频率极快,导致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:
同理,再开放资源服务器端口8080即可。
至此,所有部署工作完毕,将ET客户端全局配置中的资源路径与服务器地址修改为CentOS地址,即可连接测试环境。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。