奋斗
努力

阿里云ECS云服务器如何部署.net网站?

云计算

在阿里云 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 设为 Integrated
    • Identity 可保持默认或改为特定用户权限

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 新项目、微服务、容器化

🔒 安全建议

  1. 最小权限原则:不要以 root/Administrator 运行应用
  2. 定期更新:保持系统和 .NET 运行时最新
  3. 防火墙限制:仅开放必要端口
  4. 日志监控:启用应用日志和系统日志
  5. 备份策略:定期备份数据库和应用文件
  6. DDoS 防护:考虑启用阿里云 DDoS 防护或 CDN

🚀 进阶选项

  • Docker 容器化部署:将应用打包为 Docker 镜像,在 ECS 上运行 Docker Engine,便于迁移和扩展
  • Kubernetes(ACK):大规模部署时使用阿里云 ACK 集群
  • CI/CD 自动化:结合阿里云效(Flow)或 GitHub Actions 实现自动构建和部署

如需针对特定 .NET 版本或具体框架(如 Blazor、SignalR、Entity Framework)的详细配置,请提供更多信息!

未经允许不得转载:云服务器 » 阿里云ECS云服务器如何部署.net网站?