
一、前言目前我所尝试的只有.net8.0及以上才可部署Linux所以着重讲.net8.0部署Linux若你想项目升级可看我上期升级.net472项目步骤经验分享-CSDN博客二、项目生成1、提前在vs内把配置文件中所使用的IP更改为虚拟机的所使用的IP方便部署2、打开项目启动文件文件夹打开终端3、输入命令后回车dotnet publish -o authI、auth文件就是你需要部署在Linux上的文件II、最好剪切放到别的地方否则会影响vs项目生成三、部署Liunx前言有很多种方式来启动这里我就说一下用dotnet启动的方式1、以Ubuntu_22.04.05为例其他也都一样。2、把上方auth直接复制到Ubuntu虚拟机上若您是终端虚拟机把auth压缩然后再终端下载解压工具解压到指定位置3、若auth的配置文件你生成前已经改好配置就不需要再改动了否则手动改动配置文件如IP、Port终端虚拟机则需要通过iv编辑器更改或者重新生成复制过来4、右击打开Linux终端下载dotnet服务可以根据自己的版本来更改下方版本如你是20.04就把22.04改了就行# 下载并安装 Microsoft 包签名密钥 wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb # 更新包列表 sudo apt-get update5、安装.net core运行时库可以根据自己的版本来更改下方版本如你是.net10.0就把8.0改了就行sudo apt-get install -y dotnet-runtime-8.0验证安装dotnet --list-runtimes正确样例Microsoft.AspNetCore.App 8.0.30 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]Microsoft.NETCore.App 8.0.30 [/usr/share/dotnet/shared/Microsoft.NETCore.App]6、运行.net程序注意这在auth文件下右击打开终端否则会找不到文件dotnet 启动文件名称.dll要么使用绝对路径dotnet /home/用户名/publish8.0/auth/启动文件名称.dll博主的是dotnet GameService.dll7、系统后台运行需要日志nohup dotnet GameService.dll output.log 21 不需要则nohup dotnet GameService.dll nohup让程序在后台运行不受终端关闭影响。dotnet GameService.dll你的启动命令。 output.log将标准输出重定向到 output.log文件可选建议指定日志文件以便排查问题。21将标准错误输出也重定向到同一个日志文件。让命令在后台执行。终止后台运行# 查找进程 ps -ef | grep GameService.dll # 杀死进程 kill -9 PID四、部署失败启动失败问题1、如你按照我上述步骤仍失败可以考虑是否项目为.net8.0及以上是否支持Linux2、启动期间是否有代码报错有的话改3、根据终端报错提示是否缺少工具导致缺少的话根据终端提示下载工具项目升级后生成成功启动失败1、博主的websocket、mqtt服务生成期间没有报错启动也没有报错但一部署就报错显示什么端口被占用等没用的错误提示但根本就不是因为端口被占用而是因为Linux不支持不兼容的库2、这就是因为你升级后虽然window的vs兼容了它但Linux不兼容3、需要做的是直接发送AI如.net8.0部署Mqtt把我们的服务使用的包替换为新的一般只会该一些头部实例并不会很麻烦4、主要你所使用的包是否支持Linux如websocket的Fleck库是不支持Linux的是必须替换掉的可以换成WebSocketSharp库等5、你可以把报错的服务或者代码发送AI询问是否支持部署Linux6、这里主要提供思路遇到错误至少知道往哪方面去找后缀像启动方式还有mono 运行文件、./运行文件这两个我就不再赘述了我用的不怎么好上方这个学会就够用了祝大家再老的项目部署也包成功的好吧