阿里云1台服务器部署2套前后端项目?

云计算

是的,阿里云的一台服务器完全可以部署两套(甚至更多)前后端项目。关键在于合理规划资源、配置环境和使用合适的技术手段来实现隔离与共存。

以下是详细的实现方法和建议:


✅ 一、前提条件

确保你的服务器配置足够支持两个项目的运行,例如:

  • ECS 实例规格:至少 2核4G 或更高(视项目负载而定)
  • 操作系统:推荐 CentOS 7+/Ubuntu 20.04+
  • 公网 IP:1 个(可通过域名 + 端口或反向X_X区分访问)

✅ 二、部署方案选择

方案1:使用 Nginx 反向X_X(推荐)

通过 Nginx 将不同域名或路径转发到不同的前后端服务。

示例场景:
  • 项目A:frontend-a.com → 前端(Vue/React) + 后端(Node.js/Java/Spring Boot)运行在 30008080
  • 项目B:frontend-b.com → 前端(Vue) + 后端(Express)运行在 30018081
步骤:
  1. 部署前端静态文件

    • 构建项目 A 的前端 → 放入 /var/www/projectA
    • 构建项目 B 的前端 → 放入 /var/www/projectB
  2. 启动后端服务

    • 使用 PM2(Node.js)或 Jar 包(Java)等方式后台运行两个后端。
    • 示例:
      pm2 start appA.js --name "backend-A" --port 8080
      pm2 start appB.js --name "backend-B" --port 8081
  3. 配置 Nginx 虚拟主机

    # /etc/nginx/conf.d/projectA.conf
    server {
       listen 80;
       server_name frontend-a.com;
    
       location / {
           root /var/www/projectA;
           index index.html;
           try_files $uri $uri/ /index.html;
       }
    
       location /api/ {
           proxy_pass http://localhost:8080/;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
       }
    }
    
    # /etc/nginx/conf.d/projectB.conf
    server {
       listen 80;
       server_name frontend-b.com;
    
       location / {
           root /var/www/projectB;
           index index.html;
           try_files $uri $uri/ /index.html;
       }
    
       location /api/ {
           proxy_pass http://localhost:8081/;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
       }
    }
  4. 重启 Nginx

    nginx -t && systemctl reload nginx
  5. 域名解析

    • frontend-a.comfrontend-b.com 解析到服务器公网 IP
    • 如需 HTTPS,可用 Let’s Encrypt 配置 SSL 证书(Certbot)

方案2:同一项目共享端口(不推荐用于生产)

  • 前端用不同路径区分,如:
    • your-ip:8080/projectA
    • your-ip:8080/projectB
  • 需要在前端路由和构建时配置 base 路径,后端做路径判断。
  • 复杂且不易维护,适合测试环境。

方案3:使用 Docker 容器化部署(高级推荐)

每个项目独立容器,互不干扰。

目录结构示例:
/projectA/
  ├── frontend/ (Dockerfile)
  ├── backend/  (Dockerfile)
/projectB/
  ├── frontend/
  ├── backend/
/docker-compose.yml
docker-compose.yml 示例:
version: '3'
services:
  frontend-a:
    build: ./projectA/frontend
    ports:
      - "3000:80"

  backend-a:
    build: ./projectA/backend
    ports:
      - "8080:3000"

  frontend-b:
    build: ./projectB/frontend
    ports:
      - "3001:80"

  backend-b:
    build: ./projectB/backend
    ports:
      - "8081:3000"

  nginx:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - frontend-a
      - backend-a
      - frontend-b
      - backend-b

优势:环境隔离、易于扩展、便于迁移。


✅ 三、注意事项

项目 建议
端口冲突 确保前后端服务使用的端口不重复
资源占用 监控 CPU、内存使用,避免 OOM
日志管理 使用 PM2、systemd 或 Docker 查看各项目日志
安全性 关闭不必要的端口,使用安全组限制访问
备份策略 定期备份代码、数据库、配置文件

✅ 四、总结

可以部署两套项目,常用方式:

方法 适用场景 推荐度
Nginx 反向X_X 多域名、简单清晰 ⭐⭐⭐⭐☆
Docker 容器化 复杂项目、长期维护 ⭐⭐⭐⭐⭐
直接共用端口 测试/学习 ⭐⭐

如果你提供具体技术栈(如 Vue + Spring Boot?React + Node?),我可以给出更精确的部署脚本和配置模板。

需要我帮你写一份完整的部署流程吗?

未经允许不得转载:CLOUD云枢 » 阿里云1台服务器部署2套前后端项目?