阿里云服务器准备:
本地开发环境:
dotnet publish -c Release -o ./publish
# 更新系统
sudo yum update -y # CentOS
sudo apt update && sudo apt upgrade -y # Ubuntu
# 安装 .NET Core 运行时
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm # CentOS
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb # Ubuntu
sudo dpkg -i packages-microsoft-prod.deb
sudo yum install aspnetcore-runtime-6.0 -y # CentOS,根据版本调整
sudo apt-get install aspnetcore-runtime-6.0 -y # Ubuntu
将本地发布的 publish
文件夹上传到服务器,例如 /var/www/myapp/
:
scp -r ./publish/* root@your-server-ip:/var/www/myapp/
创建 systemd 服务管理 .NET Core 应用:
sudo nano /etc/systemd/system/myapp.service
添加以下内容(根据实际情况调整):
[Unit]
Description=My .NET Core App
[Service]
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/YourApp.dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-myapp
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
sudo systemctl status myapp.service # 检查状态
# 安装 Nginx
sudo yum install nginx -y # CentOS
sudo apt install nginx -y # Ubuntu
# 启动 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
配置 Nginx 作为反向代理:
sudo nano /etc/nginx/conf.d/myapp.conf
添加以下配置:
server {
listen 80;
server_name your-domain.com www.your-domain.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;
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
使用 Certbot 获取 Let's Encrypt 证书:
# 安装 Certbot
sudo yum install certbot python3-certbot-nginx -y # CentOS
sudo apt install certbot python3-certbot-nginx -y # Ubuntu
# 获取证书
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
# 设置自动续期
sudo certbot renew --dry-run
# 开放 HTTP/HTTPS 端口
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
# 或者使用 ufw (Ubuntu)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
应用无法访问:
sudo systemctl status myapp
netstat -tulnp | grep dotnet
sudo tail -f /var/log/nginx/error.log
502 Bad Gateway:
0.0.0.0
而不仅仅是 localhost
静态文件问题:
直接在 Nginx 中处理静态文件更高效:
location / {
try_files $uri $uri/ @proxy;
}
location @proxy {
proxy_pass http://localhost:5000;
# 其他代理设置...
}
性能优化:
通过以上步骤,您的 .NET Core 应用应该已经成功部署到阿里云并通过 Nginx 提供服务。