在阿里云 ECS 上部署 .NET 网站,主要取决于你使用的 .NET 版本(.NET Framework vs .NET Core/.NET 5+)以及你选择的 操作系统(Windows Server vs Linux)。
以下是两种主流部署方案的详细步骤:
✅ 方案一:使用 Windows Server + IIS(适合 .NET Framework 4.x)
这是传统 ASP.NET Web Forms/MVC 项目的标准部署方式。
1. 创建 ECS 实例
- 登录 阿里云控制台
- 创建 ECS 实例,选择 Windows Server 2016/2019/2022 镜像
- 配置安全组:开放端口
80(HTTP)、443(HTTPS)、3389(RDP远程桌面)
2. 连接服务器
- 使用远程桌面客户端(如 Windows Remote Desktop)连接 ECS
- 输入用户名(通常是
Administrator)和密码
3. 安装 IIS 和必要组件
- 打开 Server Manager → Add Roles and Features
- 勾选 Web Server (IIS)
- 在安装 IIS 时,确保启用以下功能:
ASP.NET 4.x(根据你的 .NET 版本选择)CGI、Static Content、Default Document等基础模块
- 如果项目使用 SQL Server,还需安装 SQL Server Express 或连接外部数据库
4. 发布网站
- 在本地 Visual Studio 中右键项目 → Publish
- 选择 Folder 或 FTP 作为发布目标
- 将发布的文件上传到服务器(可通过 RDP 直接复制,或使用 FTP/SMB)
💡 推荐路径:
C:inetpubwwwrootYourSite
5. 配置 IIS
- 打开 Internet Information Services (IIS) Manager
- 添加站点:
- 站点名称:
YourSite - 物理路径:指向发布文件夹
- 绑定:
http,端口80,主机名可选
- 站点名称:
- 设置应用程序池:
- 右键应用池 → Advanced Settings
.NET CLR Version设置为对应版本(如v4.0)Managed Pipeline Mode设为IntegratedIdentity可保持默认或改为特定用户权限
6. 测试访问
- 浏览器访问
http://<ECS公网IP> - 确认网站正常加载
7. (可选)绑定域名 & HTTPS
- 在阿里云 DNS 管理中添加 A 记录指向 ECS IP
- 申请 SSL 证书(阿里云免费证书或 Let’s Encrypt)
- 在 IIS 中绑定 HTTPS 并配置证书
✅ 方案二:使用 Linux + Kestrel/Nginx(适合 .NET Core / .NET 5/6/7/8+)
这是现代 .NET 应用推荐的跨平台部署方式,性能更好、资源占用更低。
1. 创建 ECS 实例
- 创建 ECS 实例,选择 Linux 发行版(推荐 Ubuntu 22.04 LTS 或 CentOS 7/8)
- 配置安全组:开放端口
80、443、22(SSH)
2. 连接服务器
ssh root@<ECS公网IP>
# 首次登录需修改密码
3. 安装 .NET SDK/Runtime
以 Ubuntu 为例:
# 安装 .NET 8 Runtime(根据实际版本调整)
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y dotnet-runtime-8.0 aspnetcore-runtime-8.0
📌 注意:生产环境只需安装 Runtime,无需 SDK。
4. 发布网站
在本地机器上执行:
dotnet publish -c Release -o ./publish
将 publish 文件夹中的内容上传到服务器,例如 /var/www/yourapp
scp -r ./publish/* root@<ECS公网IP>:/var/www/yourapp
5. 设置权限
sudo chown -R www-data:www-data /var/www/yourapp
sudo chmod -R 755 /var/www/yourapp
6. 创建 Systemd 服务
创建服务文件 /etc/systemd/system/yourapp.service:
[Unit]
Description=My .NET App
After=network.target
[Service]
WorkingDirectory=/var/www/yourapp
ExecStart=/usr/bin/dotnet /var/www/yourapp/YourApp.dll
Restart=always
RestartSec=10
SyslogIdentifier=yourapp
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
重载并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable yourapp
sudo systemctl start yourapp
sudo systemctl status yourapp # 检查状态
7. 配置 Nginx 反向X_X
安装 Nginx:
sudo apt-get install nginx
创建配置文件 /etc/nginx/sites-available/yourapp:
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名
location / {
proxy_pass http://localhost:5000; # Kestrel 默认端口
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 ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置
sudo systemctl restart nginx
8. 配置防火墙
sudo ufw allow 'Nginx Full'
sudo ufw enable
9. 测试访问
- 浏览器访问
http://yourdomain.com - 确认网站正常运行
10. (可选)HTTPS 配置
使用 Certbot 自动申请 Let’s Encrypt 证书:
sudo apt-get install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
📊 方案对比
| 特性 | Windows + IIS | Linux + Nginx |
|---|---|---|
| 适用 .NET 版本 | .NET Framework 4.x | .NET Core / .NET 5+ |
| 资源占用 | 较高 | 较低 |
| 部署复杂度 | 中等 | 中等偏高 |
| 性能 | 一般 | 更优 |
| 运维成本 | 高(需维护 Windows 更新) | 低 |
| 推荐场景 | 遗留系统、必须用 COM/ActiveX | 新项目、微服务、容器化 |
🔒 安全建议
- 最小权限原则:不要以 root/Administrator 运行应用
- 定期更新:保持系统和 .NET 运行时最新
- 防火墙限制:仅开放必要端口
- 日志监控:启用应用日志和系统日志
- 备份策略:定期备份数据库和应用文件
- DDoS 防护:考虑启用阿里云 DDoS 防护或 CDN
🚀 进阶选项
- Docker 容器化部署:将应用打包为 Docker 镜像,在 ECS 上运行 Docker Engine,便于迁移和扩展
- Kubernetes(ACK):大规模部署时使用阿里云 ACK 集群
- CI/CD 自动化:结合阿里云效(Flow)或 GitHub Actions 实现自动构建和部署
如需针对特定 .NET 版本或具体框架(如 Blazor、SignalR、Entity Framework)的详细配置,请提供更多信息!
云服务器