# 添加 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
# 创建新项目
mkdir /var/www/myapp
cd /var/www/myapp
dotnet new mvc
# 发布项目
dotnet publish -c Release -o /var/www/myapp/publish
# 安装 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
# 安装 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
# 允许 HTTP 流量
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload
bash
sudo tail -f /var/log/myapp.out.log
sudo tail -f /var/log/nginx/error.log
权限问题:
sudo chown -R www-data:www-data /var/www/myapp
端口冲突: 确保没有其他应用占用 5000 端口
Supervisor 无法启动应用:
sudo supervisorctl status
sudo supervisorctl restart myapp
Nginx 502 Bad Gateway: 检查 .NET Core 应用是否在运行,以及 Nginx 配置是否正确
.NET Core 版本问题: 如果需要特定版本的 .NET Core 2.0,可以指定版本号安装:
sudo yum install dotnet-sdk-2.0.3 -y
这样就完成了在 CentOS 7 上搭建 .NET Core 2.0 + Nginx + Supervisor 环境的全部步骤。