刚入门ET几天,选择了直接上手ET8。折腾这个部署花了不少时间,经过群友的指点(@水群猫),加上查看以前et6,甚至et5的部署教程,最终总算是能跑了,和正式项目部署还是有区别的,所以这个是Demo的部署过程。如有不对的地方,各位大佬不要客气,欢迎指出。
开始
1.先将Demo在本地跑起来(看运行指南,出问题就是哪一步没看全,或者没有理解对,刚上手时我也报错怀疑过,但其实认真看是可以正常跑起来的)。
2.修改\Unity\Assets\Config\Excel\StartConfig\Localhost\StartMachineConfig@s.xlsx这个配置文件中的IP地址,内网地址和外网地址都填云服务器的内网地址。
3.(可忽略这步,这一步和第5步是一个意思)修改\Unity\Assets\Scripts\Hotfix\Share\ConstValue.cs中的RouterHttpHost值,改为云服务器的公网地址。
4.部署一个可以外网访问的http服务,用于客户端取得软路由的配置数据。可以是自己云服务器上的静态json文件,也可以使用云函数等其他云服务。我这里是在自己云服务器上直接部署了一个http服务,直接建了一个json文件,文件内容看下图,这样就可以通过自己的网站域名访问到这个json文件,我的url是这样的
以下是json文件内容(记得替换内网和外网IP):
{ “_t” : “HttpGetRouterResponse”, “Realms” : [“内网IP:30002”], “Routers” : [“外网IP:30301”, “外网IP:30302”, “外网IP:30303”, “外网IP:30304”] }
5.找到\Unity\Assets\Scripts\Hotfix\Client\Demo\NetClient\Router\RouterAddressComponentSystem.cs文件,修改第28行,替换原有的url。特别说明,这里实际使用应该改用能防攻击的地址,比如加个cdn啥的。
6.重新编译整个项目。记得把上面那些修改保存,再进行编译。
7.找到项目根目录的Publish-linux-x64.ps1文件,我这里部署的是windows的服务器,所以需要略加修改。首先复制一份,并命名为Publish-win-x64.ps1,再将里面的代码,linux替换为win就行。
dotnet publish -r win-x64 –no-self-contained –no-dependencies -c Release
$path = “.\Publish\win-x64”
Remove-Item $path\Bin\ -Recurse -ErrorAction Ignore
Copy-Item .\Bin\win-x64\publish -Destination $path\Bin -Recurse -Force
Remove-Item $path\Config -Recurse -ErrorAction Ignore
Copy-Item .\Config -Destination $path\Config -Recurse -Force
8.执行脚本。按住shift键,鼠标右键脚本,点击 使用PowerShell运行 ,执行完成后,进到Publish文件夹内,就可以看到一个win-x64文件夹。
9.在云服务器上下载安装.net sdk,要和你编译时用的版本一样。
10.将win-x64文件夹上传到云服务器上,进入win-x64\Bin文件夹,在空白处按住shift键,并按下鼠标右键,点击 在此处打开PowerShell窗口 ,此时会打开一个命令窗口。
11.启动服务端。在窗口输入 dotnet App.dll ,即可启动服务端,也可以带参数,具体配置需要看一下源代码。
12.完成以上步骤,没有报错的话,就大功告成了,本地启动一个客户端或者直接unity内跑起来测试一下即可。
结束
欢迎各位大佬指点~
参考过的教程:
字母哥的视频教程(第1节免费)
Centos7+ET5.0+Mac下的部署
ET部署到docker
ET部署到Linux