将.net应用部署到Linux服务器

一、环境准备

安装 .NET Runtime(用于部署运行),例如安装 .NET 8 Runtime(不需要开发):

bash 复制代码
sudo yum install -y dotnet-runtime-8.0

或者安装 SDK(含开发工具):

bash 复制代码
sudo yum install -y dotnet-sdk-8.0

查看版本验证:

bash 复制代码
dotnet --info

输出类似如下内容,则表明安装成功:

Host:

Version: 8.0.17

Architecture: x64

Commit: 77545d6fd5

RID: rhel.9-x64

二、部署 .NET 应用程序

1.上传或复制你的发布文件到服务器

如果在Windows 电脑发布,则进入项目所在目录,使用以下命令发布为生产环境:

bash 复制代码
dotnet publish -c Release -o ./publish

然后将文件打包成tar文件,上传到服务器指定目录,使用以下命令解压:

bash 复制代码
tar -xvf myapp.tar

2. 运行 .NET 应用

切换到项目目录并运行:

bash 复制代码
dotnet myApp.dll

默认监听 http://localhost:5000

查看服务是否在运行:

bash 复制代码
ps -ef | grep dotnet

查看端口是否在监听:

bash 复制代码
sudo ss -tuln | grep 5000

如果输出下面的内容则表明则程序已经在运行了

tcp LISTEN 0 512 0.0.0.0:5000 0.0.0.0:*

上面的命令如果窗口关闭,则程序退出。下面将其设置为持久化运行

三、设置为后台服务(Systemd)

bash 复制代码
sudo vim /etc/systemd/system/myapp.service

写入如下内容,

bash 复制代码
[Unit]
Description=my.NET Web API
After=network.target

[Service]
# 设置工作目录(替换为你的项目发布目录)
WorkingDirectory=/var/www/projects

# 启动命令(包含 dll 路径)
ExecStart=/usr/bin/dotnet myapp.dll

# 设置环境变量用于监听公网地址
Environment=ASPNETCORE_URLS=http://0.0.0.0:5000

# 设置用户
User=root

# 自动重启策略
Restart=always
RestartSec=5
SyslogIdentifier=myapp-api

[Install]
WantedBy=multi-user.target

确认应用工作:

curl http://127.0.0.1:5000

注意事项

  • WorkingDirectory 一定要指向包含 dll 的目录。

  • 如果使用了其他环境变量(如数据库连接、日志路径等),也可以在 [Service] 中继续加 Environment=XXX=YYY

  • 若应用运行失败,可用 journalctl -xejournalctl -u byring 查看详细错误日志。

保存并退出,依次执行下面的命令:

bash 复制代码
# 重新加载 Systemd 配置
sudo systemctl daemon-reload
#  设置服务开机自启,需替换myapp为自己的应用
sudo systemctl enable myapp
#  启动应用
sudo systemctl start myapp
#  停止应用
sudo systemctl stop myapp
#  重启应用
sudo systemctl restart myapp
# 查看服务状态
sudo systemctl status myapp
# 查看输出日志(实时滚动输出)
journalctl -u myapp -f
# 取消开机启动
sudo systemctl disable myapp

服务启动好了,后面可以配置nginx进行域名访问了。