单进程多线程部署
前提:
工程是github上8.1分支直接zip下载下来的
阿里云服务器是win64位,内网ip是172.25.217.xx 外网ip是120.76.159.xx
云服务器装了宝塔面板
参考资料:
https://et-framework.cn/d/1763-et8-demowindows
https://et-framework.cn/d/2283-cdnrouterjson/9
https://et-framework.cn/d/2346-window/7
先看效果:
步骤:
1.云服务器安全组设置
Tcp连接:
30002 [StartSceneConfig@s.xlsx](mailto:StartSceneConfig@s.xlsx)配置表里 Realm服务器端口
30003,30004 StartSceneConfig@s.xlsx配置表里 Gate服务器端口
30300 StartSceneConfig@s.xlsx配置表里 RouterManager服务器端口
8989 访问开启的网站用的端口,用来访问routers.json文件
Udp连接:
30301到30304 StartSceneConfig@s.xlsx配置表里 Router服务器端口
2.进入 Unity\Assets\Config\Excel\StartConfig\Release 目录,
StartMachineConfig@s.xlsx配置表的内网外网ip字段的值,都填写云服务器的内网ip
StartSceneConfig@s.xlsx配置表,所属进程Process的值都改为1
3.Unity编辑器窗口,ET=>BuildTool=>ExcelExporter 把所有配置表导出成.bytes文件
4.准备routers.json文件
文件内容为:{ “_t” : “HttpGetRouterResponse”, “Realms” : [“内网ip:30002”], “Routers” : [“外网ip:30301”, “外网ip:30302”, “外网ip:30303”, “外网ip:30304”] }
特别说明,这里Routers里的4个地址,实际部署的时候,应该放到不同的云服务器上,最好每个地址对应1台云服务器,因为路由就是摆出来接受攻击的,其他服务器通过 进程内,进程之间,云服务器内网(分别对应 单台云服务器单进程多线程,单台云服务器多进程多线程,多台云服务器分布式多进程多线程) 来通讯 ,只暴露出路由和客户端通讯。
5.进入宝塔面板,创建网站,添加站点,输入 外网ip:自定义端口,(建议不要用80端口,以免占用),点击添加
创建网站成功后,将routers.json文件放入网站根目录
在本地电脑浏览器输入 外网ip:网站自定义端口/routers.json ,确保能外网访问到该文件
6.Unity打开项目,Resource/GlobalConfig 文件的CodeModel选择Client
7.Rider打开ET项目,找到 Assets\Scripts\Hotfix\Client\Demo\NetClient\Router\RouterAddressComponentSystem.cs文件,修改GetAllRouter方法里的url, 特别说明,这里实际使用应该改用能防攻击的地址,比如加个cdn啥的。
8.进入ET项目根目录,复制 Publish-linux-x64.ps1 文件,重命名为 Publish-win-x64.ps1,打开 Publish-win-x64.ps1,将文件内的3处 linux 都替换为 win
9.按住shift键,右键点击Publish-win-x64.ps1,选择 “使用PowerShell运行”,运行完成后,打开Publich文件夹,就能看到发布win64位平台的文件夹
10.复制win-x64文件夹,直接粘贴到云服务器上
11.进入win-x64/Bin目录,按住shift,右键点击空白处,选择 “在此处打开命令窗口”
12.在窗口内输入以下命令
dotnet App.dll –Process=1 –StartConfig=StartConfig/Release –Console=1
--Console=1可以不需要,这是方便调试的
13.Unity窗口点击Play,登录连接云服务器上架设的ET服务器
14.因为Demo没有限制账号密码,也没有处理顶号的问题,所以会出现一种报错情况:
在ET服务器刚启动的情况下,客户端(Unity编辑器)登录进地图,然后取消编辑器运行,编辑器再重新Play并且登录,会触发报错
运行的情况下不清空日志,对比2此登录的日志,发现 第一次登录,网关返回的Playerid正常,第二次登录网关返回的Playerid不对
以上就是github上8.1分支的项目部署
下面按照 【ET 8.0-8.1版本】ET框架 - C#全栈式网络游戏开发框架(入门篇) 实现数据库记录的账号登录,并且查看数据库内容
15.进入宝塔面板,选择 数据库=>MongoDB,未安装的话会有安装提示,按照提示安装MongoDB。添加数据库,添加的数据库与启动服务类型的StartZoneConfig@s.xlsx 内的配置对应,这里以 Assets\Config\Excel\StartConfig\Release\StartZoneConfig@s.xlsx 为例
StartZoneConfig@s.xlsx配置表的DBConnection字段内容的规则如下:
16.云服务器上安装 MongoDB可视化工具 robo3t,下载连接 https://gitee.com/mirrors/Robo3T ,选择下载
17,开好MongoDB数据库后,云服务器上关掉ET服务器,删掉云服务器的win-x64文件夹,本地找到按照 **【ET 8.0-8.1版本】ET框架 - C#全栈式网络游戏开发框架(入门篇)**课程实现了数据库记录的账号登录工程,重新发布得到win-x64文件夹,并复制到云服务器上。
18. 按照步骤 11 12 启动服务器,Unity编辑器运行,输入账号密码登录,进入地图
19. 云服务器上打开robo3t,选择 File=>Connect
弹出的窗口选择Create