努力
奋斗

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

服务器

在阿里云 ECS 上部署 .NET 网站,主要取决于你使用的 .NET 版本。目前主流分为两种情况:

  1. ASP.NET Core (.NET 5/6/7/8):跨平台,可部署在 Linux(推荐)或 Windows。
  2. 传统 ASP.NET (.NET Framework 4.x):仅支持 Windows Server。

下面我将分别介绍这两种场景的部署步骤,并重点推荐 Linux + ASP.NET Core 方案(性能更好、成本更低)。


✅ 推荐方案:ASP.NET Core + Linux (Ubuntu/CentOS)

📌 前提条件

  • 已创建阿里云 ECS 实例(建议 Ubuntu 20.04/22.04 或 CentOS 7/8)
  • 已安装 .NET SDK/Runtime(服务器只需 Runtime)
  • 网站代码已发布为“自包含”或“框架依赖”模式

🔧 步骤一:登录 ECS 并更新系统

ssh root@<你的ECS公网IP>
sudo apt update && sudo apt upgrade -y   # Ubuntu
# 或
sudo yum update -y                       # CentOS

🔧 步骤二:安装 .NET Runtime

以 .NET 8 为例(根据实际项目版本调整):

# Ubuntu 22.04+
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

# CentOS 7/8
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm
sudo yum install -y dotnet-runtime-8.0 aspnetcore-runtime-8.0

验证安装:

dotnet --version

🔧 步骤三:上传并发布网站

方法1:使用 VS Code / Visual Studio 发布到本地文件夹,再上传到 ECS

在本地项目中执行:

dotnet publish -c Release -o ./publish

然后通过 scp 或 rsync 上传到 ECS:

scp -r ./publish/* root@<ECS_IP>:/var/www/myapp

方法2:直接在 ECS 上使用 Git 拉取代码并编译(适合 CI/CD)

sudo mkdir -p /var/www/myapp
cd /var/www/myapp
git clone https://github.com/your-repo.git .
dotnet build
dotnet publish -c Release -o ./publish

🔧 步骤四:创建 Systemd 服务守护进程

为了让网站后台运行并自动重启,创建 systemd 服务文件:

sudo nano /etc/systemd/system/myapp.service

内容如下(请替换路径和用户名):

[Unit]
Description=My .NET Web App
After=network.target

[Service]
WorkingDirectory=/var/www/myapp/publish
ExecStart=/usr/bin/dotnet /var/www/myapp/publish/MyApp.dll
Restart=always
RestartSec=10
SyslogIdentifier=myapp
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl status myapp

查看日志:

sudo journalctl -u myapp -f

🔧 步骤五:配置反向X_X(Nginx)

安装 Nginx:

sudo apt install nginx    # Ubuntu
# 或
sudo yum install nginx     # CentOS

创建站点配置:

sudo nano /etc/nginx/sites-available/myapp

内容:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.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;
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

⚠️ 注意:ASP.NET Core 默认监听端口是 5000(Kestrel),需确保防火墙开放 80 和 443 端口。


🔧 步骤六:配置安全组与域名

  1. 阿里云控制台 → 安全组:添加入方向规则,允许 TCP 80 和 TCP 443。
  2. 绑定域名:在 DNS 管理中将域名解析到 ECS 公网 IP。
  3. HTTPS(可选但推荐):使用 Let’s Encrypt 免费证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

❌ 替代方案:传统 ASP.NET (.NET Framework) + Windows Server

如果你使用的是 .NET Framework 4.6+,则必须使用 Windows Server:

步骤简述:

  1. 选择 Windows Server 镜像(如 Windows Server 2019 Datacenter)。
  2. 通过 RDP 远程桌面登录。
  3. 安装 IIS 和 .NET Framework Hosting Bundle。
  4. 将网站文件复制到 C:inetpubwwwrootmyapp。
  5. 在 IIS 管理器中创建站点,指向该目录。
  6. 配置应用程序池为 .NET CLR Version: No Managed Code。
  7. 开放防火墙端口 80/443。
  8. 绑定域名。

💡 缺点:Windows Server 授权成本高,资源占用大,不推荐用于新项目。


🔄 进阶:使用 Docker 部署(更灵活)

Dockerfile 示例:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MyApp.csproj", "./"]
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]

构建并运行:

docker build -t myapp .
docker run -d -p 80:80 --name myapp-container myapp

再用 Nginx 反向X_X即可。


✅ 总结对比

项目 ASP.NET Core + Linux ASP.NET Framework + Windows
操作系统 Ubuntu/CentOS Windows Server
性能 高,轻量 较低,较重
成本 低(Linux 实例便宜) 高(Windows 授权费)
部署复杂度 中等(需配置 systemd/Nginx) 简单(IIS 图形化)
适用场景 新项目、微服务、云原生 遗留系统、内部工具

🛡️ 安全建议

  • 禁用 SSH 密码登录,改用密钥认证。
  • 定期更新系统和 .NET Runtime。
  • 使用阿里云 Security Center 进行漏洞扫描。
  • 数据库连接字符串等敏感信息不要硬编码,使用环境变量或密钥管理服务。

如需我为你生成具体的 Dockerfile、systemd 文件或 Nginx 配置模板,请告诉我你的 .NET 版本和项目结构!

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