将.net应用部署到Linux服务器
一、环境准备
安装 .NET Runtime(用于部署运行),例如安装 .NET 8 Runtime(不需要开发):
sudo yum install -y dotnet-runtime-8.0
或者安装 SDK(含开发工具):
sudo yum install -y dotnet-sdk-8.0
查看版本验证:
dotnet --info
输出类似如下内容,则表明安装成功:
Host:
Version: 8.0.17
Architecture: x64
Commit: 77545d6fd5
RID: rhel.9-x64
二、部署 .NET 应用程序
1.上传或复制你的发布文件到服务器
如果在Windows 电脑发布,则进入项目所在目录,使用以下命令发布为生产环境:
dotnet publish -c Release -o ./publish
然后将文件打包成tar文件,上传到服务器指定目录,使用以下命令解压:
tar -xvf myapp.tar
2. 运行 .NET 应用
切换到项目目录并运行:
dotnet myApp.dll
默认监听 http://localhost:5000
查看服务是否在运行:
ps -ef | grep dotnet
查看端口是否在监听:
sudo ss -tuln | grep 5000
如果输出下面的内容则表明则程序已经在运行了
tcp LISTEN 0 512 0.0.0.0:5000 0.0.0.0:*
上面的命令如果窗口关闭,则程序退出。下面将其设置为持久化运行
三、设置为后台服务(Systemd)
sudo vim /etc/systemd/system/myapp.service
写入如下内容,
[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 -xe
或journalctl -u byring
查看详细错误日志。
保存并退出,依次执行下面的命令:
# 重新加载 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进行域名访问了。