在CentOS上部署.NET Core应用是现代Web开发中常见的实践,本文将详细介绍从环境准备到应用发布的完整流程,帮助开发者高效完成部署任务。

环境准备
在开始部署前,需确保CentOS系统满足.NET Core的运行要求,推荐使用CentOS 7或更高版本,具体要求如下:
- 操作系统:CentOS 7.0+(64位)
- .NET Core SDK:根据项目需求选择版本(如.NET 6.0 LTS)
- 运行时环境:ASP.NET Core Runtime
- Web服务器:Nginx或Apache(本文以Nginx为例)
首先更新系统并安装必要的依赖包:
sudo yum update -y sudo yum install -y libunwind libicu
安装.NET Core SDK
通过微软官方源安装.NET Core SDK,确保版本一致性:
sudo rpm -Uvh http://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm sudo yum install -y dotnet-sdk-6.0
安装完成后验证:
dotnet --version
应用发布
在开发环境中执行发布命令生成部署文件:
dotnet publish -c Release -o ./publish
将生成的publish目录通过SCP或FTP上传至CentOS服务器的/var/www/yourapp路径。

配置Nginx反向代理
Nginx作为前端服务器负责转发请求和静态文件服务,安装Nginx:
sudo yum install -y nginx
创建配置文件/etc/nginx/conf.d/yourapp.conf:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /static/ {
alias /var/www/yourapp/wwwroot/;
expires 30d;
}
} 启动Nginx并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx
配置守护进程
使用systemd创建服务文件确保应用持续运行,创建/etc/systemd/system/yourapp.service:
[Unit] Description=Your .NET Core App After=network.target [Service] WorkingDirectory=/var/www/yourapp ExecStart=/usr/bin/dotnet /var/www/yourapp/YourApp.dll Restart=always RestartSec=10 User=nginx Group=nginx Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target
加载服务并启动:
sudo systemctl daemon-reload sudo systemctl start yourapp sudo systemctl enable yourapp
防火墙配置
开放必要端口:

sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
常见问题排查
若应用无法访问,可通过以下命令排查:
- 检查应用状态:
sudo systemctl status yourapp - 查看Nginx错误日志:
sudo tail -f /var/log/nginx/error.log - 测试应用直接运行:
cd /var/www/yourapp && dotnet run
FAQs
Q1: 如何更新已发布的.NET Core应用?
A1: 首先停止现有服务(sudo systemctl stop yourapp),备份旧版本文件,然后上传新版本文件并重新发布,最后重启服务(sudo systemctl start yourapp),建议在低峰期操作以避免服务中断。
Q2: 部署后出现502 Bad Gateway错误如何解决?
A2: 通常因后端应用未正常启动或端口配置错误导致,检查应用日志(journalctl -u yourapp -f)确认应用是否运行,并验证Nginx配置中的proxy_pass地址是否与实际应用监听端口一致(默认为5000)。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复