在CentOS上部署.NET Core应用的基础流程
.NET Core作为跨平台的开发框架,在CentOS系统上的部署已成为许多企业的选择,CentOS作为稳定的Linux发行版,为.NET Core应用提供了可靠运行环境,本文将介绍在CentOS上部署.NET Core应用的关键步骤和注意事项,帮助开发者顺利完成从开发到生产环境的迁移。

环境准备与.NET Core SDK安装
在开始部署前,需确保CentOS系统满足.NET Core的运行要求,首先更新系统包管理器,使用sudo yum update -y命令安装最新安全补丁,安装.NET Core SDK,建议通过Microsoft官方仓库获取最新版本,执行以下命令添加微软签名密钥和仓库:
sudo rpm -Uvh http://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm sudo yum install dotnet-sdk-3.1 -y
安装完成后,通过dotnet --version验证是否成功,若需长期支持版本,可选择.NET Core 3.1或.NET 5/6 LTS分支。
应用发布与配置
开发完成的.NET Core应用需先发布为独立或框架依赖的部署包,在项目目录下运行dotnet publish -c Release -o ./publish命令,生成可执行文件,对于生产环境,推荐使用独立部署(-r linux-x64),避免依赖系统.NET Core运行时。
将发布文件通过SCP或FTP上传至CentOS服务器的指定目录(如/var/www/myapp),创建专用运行用户(如dotnetuser)并设置文件权限:
sudo useradd -r -s /bin/false dotnetuser sudo chown -R dotnetuser:dotnetuser /var/www/myapp
使用Nginx反向代理配置
为提高应用性能和安全性,建议通过Nginx作为反向代理,首先安装Nginx:

sudo yum install nginx -y sudo systemctl start nginx
编辑Nginx配置文件(/etc/nginx/nginx.conf),添加以下配置:
server {
listen 80;
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;
}
} 保存后重启Nginx服务(sudo systemctl restart nginx),确保防火墙允许HTTP流量(sudo firewall-cmd --permanent --add-service=http)。
进程管理与监控
生产环境中需确保应用持续运行,推荐使用systemd创建服务单元文件,例如/etc/systemd/system/myapp.service:
[Unit] Description=My .NET Core App [Service] User=dotnetuser WorkingDirectory=/var/www/myapp ExecStart=/var/www/myapp/myapp Restart=always [Install] WantedBy=multi-user.target
启用并启动服务:sudo systemctl enable myapp && sudo systemctl start myapp,通过journalctl -u myapp查看日志,监控应用状态。
常见问题与优化
部署时可能遇到端口冲突或依赖问题,若应用无法启动,检查netstat -tlnp确认端口占用情况,性能优化方面,可启用Gzip压缩(在Nginx配置中添加gzip on;)或调整进程工作线程数。

FAQs
Q1: 如何在CentOS上卸载.NET Core SDK?
A1: 执行sudo yum remove dotnet-sdk-3.1命令卸载指定版本,若需完全清理,可删除Microsoft仓库配置文件(/etc/yum.repos.d/microsoft-prod.repo)并清理缓存(sudo yum clean all)。
Q2: .NET Core应用在CentOS上出现内存溢出如何处理?
A2: 首先使用dotnet-counters监控内存使用情况,确认是否因内存泄漏导致,可通过调整ProcessModel配置中的maxWorkerThreads参数限制并发线程数,或启用GC服务器模式(在运行时添加--gc-server参数)。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复