插件窝 干货文章 Centos7系统下如何搭建.NET Core2.0+Nginx+Supervisor环境

Centos7系统下如何搭建.NET Core2.0+Nginx+Supervisor环境

sudo Nginx myapp Supervisor 960    来源:    2025-04-26

CentOS 7 下搭建 .NET Core 2.0 + Nginx + Supervisor 环境指南

准备工作

  1. 确保你有一个干净的 CentOS 7 系统
  2. 以 root 用户或具有 sudo 权限的用户登录

步骤 1:安装 .NET Core 2.0 SDK

# 添加 Microsoft 产品密钥
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

# 安装 .NET Core 2.0 SDK
sudo yum install dotnet-sdk-2.0 -y

# 验证安装
dotnet --version

步骤 2:创建并发布 .NET Core 应用

# 创建新项目
mkdir /var/www/myapp
cd /var/www/myapp
dotnet new mvc

# 发布项目
dotnet publish -c Release -o /var/www/myapp/publish

步骤 3:安装和配置 Nginx

# 安装 EPEL 仓库
sudo yum install epel-release -y

# 安装 Nginx
sudo yum install nginx -y

# 启动 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx

# 配置 Nginx 作为反向代理
sudo vi /etc/nginx/conf.d/myapp.conf

在配置文件中添加以下内容:

server {
    listen 80;
    server_name example.com; # 替换为你的域名或IP

    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;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

测试并重新加载 Nginx 配置:

sudo nginx -t
sudo systemctl restart nginx

步骤 4:安装和配置 Supervisor

# 安装 Supervisor
sudo yum install supervisor -y

# 启动 Supervisor
sudo systemctl start supervisord
sudo systemctl enable supervisord

# 为应用创建 Supervisor 配置
sudo vi /etc/supervisord.d/myapp.ini

添加以下内容:

[program:myapp]
command=/usr/bin/dotnet /var/www/myapp/publish/myapp.dll
directory=/var/www/myapp/publish
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=www-data
stopsignal=INT

更新 Supervisor 配置:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myapp

步骤 5:防火墙配置

# 允许 HTTP 流量
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

验证安装

  1. 访问服务器 IP 或域名,应该能看到你的 .NET Core 应用
  2. 检查日志确保一切正常: bash sudo tail -f /var/log/myapp.out.log sudo tail -f /var/log/nginx/error.log

常见问题解决

  1. 权限问题

    sudo chown -R www-data:www-data /var/www/myapp
    
  2. 端口冲突: 确保没有其他应用占用 5000 端口

  3. Supervisor 无法启动应用

    sudo supervisorctl status
    sudo supervisorctl restart myapp
    
  4. Nginx 502 Bad Gateway: 检查 .NET Core 应用是否在运行,以及 Nginx 配置是否正确

  5. .NET Core 版本问题: 如果需要特定版本的 .NET Core 2.0,可以指定版本号安装:

    sudo yum install dotnet-sdk-2.0.3 -y
    

这样就完成了在 CentOS 7 上搭建 .NET Core 2.0 + Nginx + Supervisor 环境的全部步骤。