在CentOS 7系统中部署.NET Core应用程序是许多开发者和运维人员的常见需求,CentOS 7作为一款稳定可靠的Linux发行版,为.NET Core运行提供了良好的支持,本文将详细介绍在CentOS 7上安装.NET Core SDK、部署应用程序、配置服务以及常见问题的解决方法。

安装.NET Core SDK
在CentOS 7上安装.NET Core SDK有多种方式,推荐使用官方提供的软件包管理器进行安装,需要添加Microsoft的软件包签名密钥和官方软件源,打开终端,执行以下命令:
sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
添加软件源后,可以使用yum命令安装.NET Core SDK:
sudo yum update sudo yum install dotnet-sdk-3.1
安装完成后,可以通过dotnet --version命令验证安装是否成功,如果显示版本号,则表示安装成功,需要注意的是,CentOS 7默认的内核版本可能较旧,建议升级系统以确保兼容性。
部署.NET Core应用程序
部署.NET Core应用程序前,需要确保应用程序已经发布为可执行文件或框架依赖的部署包,在Windows或Linux开发机上,可以使用以下命令发布应用程序:
dotnet publish -c Release -o ./publish
将发布后的文件传输到CentOS 7服务器上,可以通过SCP、FTP或Git等方式,传输完成后,在服务器上创建一个新的目录用于存放应用程序文件,并将文件解压或复制到该目录。
配置应用程序运行环境
.NET Core应用程序在CentOS 7上运行时,需要确保系统已安装必要的依赖库,对于使用ASP.NET Core的应用程序,需要安装libunwind和curl:

sudo yum install libunwind curl
如果应用程序使用SQLite数据库,可能还需要安装sqlite-devel,建议配置防火墙规则,确保应用程序的端口(如8080)对外开放:
sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload
使用systemd管理应用程序
为了确保应用程序在服务器重启后能够自动启动,可以使用systemd创建一个服务单元文件,在/etc/systemd/system/目录下创建一个新的服务文件,例如myapp.service:
[Unit] Description=My .NET Core Application After=network.target [Service] WorkingDirectory=/var/www/myapp ExecStart=/usr/bin/dotnet /var/www/myapp/MyApp.dll Restart=always RestartSec=10 User=apache Group=apache Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target
保存文件后,执行以下命令重新加载systemd并启动服务:
sudo systemctl daemon-reload sudo systemctl start myapp sudo systemctl enable myapp
可以通过systemctl status myapp命令查看服务状态,如果服务启动失败,可以检查journalctl -u myapp查看日志。
性能优化与监控
在生产环境中,性能优化和监控是必不可少的,可以通过以下方式提升应用程序性能:
- 使用Kestrel反向代理:建议将Kestrel与Nginx或Apache配合使用,通过反向代理处理静态文件和HTTPS请求。
- 启用HTTP/2:在Nginx配置中启用HTTP/2,以提升传输效率。
- 日志监控:使用
Serilog或NLog等日志库记录应用程序运行状态,并通过ELK(Elasticsearch、Logstash、Kibana)或Grafana进行监控。
以下是一个Nginx配置示例:

server {
listen 80;
server_name example.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;
}
}
常见问题与解决方案
在部署过程中,可能会遇到一些常见问题。
- 端口冲突:如果多个应用程序使用同一端口,会导致启动失败,可以通过
netstat -tulpn命令检查端口占用情况。 - 权限问题:如果应用程序无法访问文件或目录,需要确保运行用户(如
apache)具有相应的读写权限。
相关问答FAQs
Q1: 如何在CentOS 7上卸载.NET Core SDK?
A1: 可以使用以下命令卸载.NET Core SDK:
sudo yum remove dotnet-sdk-3.1
如果不再需要Microsoft的软件源,可以删除/etc/yum.repos.d/microsoft-prod.repo文件。
Q2: 如何查看.NET Core应用程序的运行日志?
A2: 如果使用systemd管理服务,可以通过以下命令查看日志:
journalctl -u myapp -f
-f参数可以实时跟踪日志输出,如果应用程序使用自定义日志库,日志文件通常位于应用程序目录下的logs文件夹中。