阿里云服务器上如何部署多个网站或应用?

在阿里云 ECS(云服务器)上部署多个网站或应用,核心逻辑在于“资源隔离”与“流量分发”。根据业务规模、技术栈和运维能力,主要有以下几种主流方案,从简单到复杂排列:

方案一:基于 Nginx/Apache 的虚拟主机(Virtual Hosts)

适用场景:静态网站、PHP/Python/Node.js 轻量级应用,共享同一台服务器资源,成本低。

这是最经典的方式,通过配置 Web 服务器(如 Nginx),利用 域名(Server Name) 或 端口(Port) 将请求分发到不同的后端服务或目录。

1. 基于域名的虚拟主机(推荐)

假设你有两个域名 a.com 和 b.com,都解析到同一台 ECS 公网 IP。

  • 步骤简述:
    1. 安装 Nginx:sudo apt-get install nginx (Ubuntu) 或 yum install nginx (CentOS)。
    2. 创建站点目录:mkdir -p /var/www/a.com/html 和 /var/www/b.com/html。
    3. 编写配置文件:
      • 在 /etc/nginx/conf.d/ 下创建 a.conf:
        server {
            listen 80;
            server_name a.com www.a.com;
            root /var/www/a.com/html;
            index index.html;
            location / { try_files $uri $uri/ =404; }
        }
      • 同理创建 b.conf,修改 server_name 和 root 路径。
    4. 重启 Nginx:sudo systemctl restart nginx。
    5. 注意:需在阿里云控制台安全组中开放 80 (HTTP) 和 443 (HTTPS) 端口。

2. 基于端口的反向X_X

如果应用是 Node.js、Go、Java 等独立进程监听不同端口(如 3000, 8080)。

  • 配置示例:
    server {
        listen 80;
        server_name app1.example.com;
        location / {
            proxy_pass http://localhost:3000; # 转发给本地运行的 Java/Node 应用
            proxy_set_header Host $host;
        }
    }
    server {
        listen 80;
        server_name app2.example.com;
        location / {
            proxy_pass http://localhost:8080; # 转发给另一个应用
            proxy_set_header Host $host;
        }
    }

方案二:Docker 容器化部署(强烈推荐)

适用场景:多语言混合架构、需要环境隔离、便于迁移和扩展。

使用 Docker 可以将每个应用及其依赖打包成独立容器,互不干扰,管理更清晰。

实施步骤:

  1. 安装 Docker:

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    sudo systemctl enable --now docker
  2. 使用 Docker Compose 管理多应用:
    创建一个 docker-compose.yml 文件,定义多个服务:

    version: '3'
    services:
      frontend:
        image: nginx:alpine
        ports:
          - "80:80"
        volumes:
          - ./frontend/conf/nginx.conf:/etc/nginx/conf.d/default.conf
        depends_on:
          - api-backend
    
      api-backend:
        build: ./api
        environment:
          - NODE_ENV=production
        expose:
          - "3000" # 内部通信,不直接暴露给公网
    
      database:
        image: mysql:8.0
        environment:
          MYSQL_ROOT_PASSWORD: secret
        volumes:
          - db_data:/var/lib/mysql
    
    volumes:
      db_data:
  3. Nginx 作为统一入口:
    在前端的 Nginx 配置中,根据域名或 URL 路径反向X_X到 api-backend 容器。

  4. 启动:

    docker compose up -d

优势:即使某个应用崩溃,不影响其他应用;升级方便;环境一致性高。


方案三:阿里云负载均衡 SLB + 多台 ECS(生产级架构)

适用场景:高并发、高可用要求、大型项目、需要弹性伸缩。

单台 ECS 存在单点故障风险。当访问量增大时,应拆分服务。

架构设计:

  1. 购买 SLB(Server Load Balancer):
    • 在阿里云控制台创建 SLB 实例,获取一个 VIP(虚拟 IP)。
  2. 注册后端服务器组:
    • 创建多个 ECS 实例(例如:Web 服务器集群、API 服务器集群、数据库主从)。
    • 将这些 ECS 加入 SLB 的后端服务器组。
  3. 配置监听规则:
    • HTTP/HTTPS 监听器绑定域名。
    • 设置健康检查,确保只将流量转发给健康的 ECS。
  4. 域名解析:
    • 将域名 CNAME 指向 SLB 的 VIP。

优势:自动负载均衡、支持 SSL 卸载、高可用、可横向扩展。


方案四:使用阿里云轻量应用服务器(Simple Application Server)

适用场景:个人开发者、小型博客、测试环境、预算有限。

如果你的需求比较简单(< 3 个中小型网站),可以考虑直接使用 轻量应用服务器。

  • 特点:
    • 集成度高:自带防火墙、监控、备份。
    • 应用镜像:一键部署 WordPress、LAMP、LNMP、Docker 等环境。
    • 套餐制:带宽和应用存储捆绑,价格通常比同等配置的 ECS 更低。
  • 操作:
    1. 购买轻量应用服务器。
    2. 选择“LNMP”或“WordPress”镜像。
    3. 通过控制台提供的远程连接或 FTP/SFTP 上传代码。
    4. 如需部署多个站点,可在系统内手动配置 Nginx 虚拟主机(同方案一)。

关键注意事项(合规与安全)

  1. ICP 备案:

    • 必须项:在中国大陆地区,所有通过 ECS 或轻量应用服务器提供 Web 服务(80/443 端口)的网站,必须先完成 ICP 备案,否则会被阿里云阻断访问。
    • 未备案域名无法解析到国内 ECS 的 80/443 端口。
  2. 安全组配置:

    • 仅开放必要端口(80, 443, SSH 22)。
    • 避免开放数据库端口(3306, 6379)到公网,仅允许内网访问。
    • 建议启用阿里云云盾(安骑士)防护。
  3. SSL 证书:

    • 推荐使用 HTTPS。可通过阿里云免费申请 DV 证书,或在 Nginx/Docker 中使用 Let’s Encrypt 自动续期。
  4. 性能瓶颈:

    • 单台 ECS 资源有限(CPU/内存/IO)。若发现负载过高,优先优化代码或使用 CDN 提速静态资源,而非盲目升级配置。
    • 动态内容考虑接入 OSS + CDN 组合。

总结建议

你的需求 推荐方案
个人博客、小站、学习用途 轻量应用服务器 或 ECS + Nginx 虚拟主机
多语言应用、微服务、追求稳定隔离 ECS + Docker Compose
企业级应用、高并发、需高可用 SLB + 多台 ECS + RDS/OSS
有备案但无技术背景 轻量应用服务器 + 一键镜像

对于大多数初学者和中小企业,ECS + Docker + Nginx 反向X_X 是目前最平衡灵活性、稳定性和成本的选择。

未经允许不得转载:CLOUD云枢 » 阿里云服务器上如何部署多个网站或应用?