多个Node.js项目可以部署在同一台阿里云服务器上吗?

可以,多个 Node.js 项目完全可以在同一台阿里云服务器上部署。这是生产环境中非常常见的做法,关键在于做好端口隔离、进程管理、资源分配和运维监控

以下是几种主流且推荐的部署方案:


✅ 推荐方案对比

方案 适用场景 优点 注意事项
PM2 + Nginx 反向X_X 多项目、需高可用、易维护 进程守护、日志分离、自动重启、支持集群模式;Nginx 按域名/路径路由 需配置 app.jsecosystem.config.js 区分项目;Nginx 配置正确避免冲突
Docker + Docker Compose 环境一致性要求高、微服务架构 容器隔离、依赖独立、一键部署、便于扩展 需掌握 Docker 基础;网络/卷权限需合理配置
Systemd + 独立进程 简单单项目或少量项目 原生 Linux 管理、轻量 手动处理日志轮转、进程重启较繁琐

🔧 以 PM2 + Nginx 为例(最常用)

1. 安装 PM2

npm install -g pm2
pm2 startup   # 生成 systemd 启动命令并执行

2. 每个项目单独配置(示例:ecosystem.config.js

module.exports = {
  apps: [
    {
      name: 'project-a',
      script: './server.js',
      instances: 2,
      env: { NODE_ENV: 'production' },
      log_date_format: 'YYYY-MM-DD HH:mm:ss',
      error_file: '/home/user/logs/project-a-error.log',
      out_file: '/home/user/logs/project-a-out.log'
    },
    {
      name: 'project-b',
      script: './index.js',
      instances: 1,
      env: { NODE_ENV: 'production' }
    }
  ]
};

💡 每个项目可独立设置端口(如 3000, 3001)、实例数、环境变量等。

3. 启动所有项目

pm2 start ecosystem.config.js
pm2 save          # 保存当前状态,开机自启
pm2 list          # 查看运行状态

4. Nginx 反向X_X配置(/etc/nginx/conf.d/multi-node.conf

# project-a.example.com → localhost:3000
server {
    listen 80;
    server_name project-a.example.com;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_cache_bypass $http_upgrade;
    }
}

# api.project-b.example.com → localhost:3001
server {
    listen 80;
    server_name api.project-b.example.com;
    location / {
        proxy_pass http://localhost:3001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

✅ 优势:统一 80/443 端口对外,内部项目互不干扰;支持 HTTPS(配合 Let’s Encrypt)。


⚠️ 关键注意事项

  1. 端口冲突
    确保每个 Node 进程监听不同端口(可通过环境变量动态设置 PORT=3000 等)。

  2. 资源限制

    • 使用 ulimit 限制文件句柄数(避免 EMFILE 错误)
    • /etc/security/limits.conf 中调整:
      * soft nofile 65535
      * hard nofile 65535
    • 监控 CPU/内存:htoppm2 monit、Prometheus+Grafana
  3. 安全加固

    • 禁止 root 登录 SSH,改用密钥认证
    • 仅开放必要端口(如 80/443),其他通过防火墙(ufw 或云盾安全组)限制
    • 定期更新系统 & Node.js 版本(建议 LTS)
  4. 日志与备份

    • PM2 自带日志管理,但建议配合 logrotate 轮转大日志
    • 数据库/静态文件单独备份策略

🌐 进阶建议

  • 若项目间有共享依赖(如 Redis、MySQL),可使用 Docker Compose 编排服务层;
  • 对于复杂架构,考虑 Kubernetes(ACK 托管版)实现自动化扩缩容;
  • 使用阿里云 弹性伸缩(ESS) + 负载均衡(SLB) 提升可用性。

需要我为你生成一个完整的部署脚本模板(含 Nginx + PM2 + SSL 自动申请)吗?

未经允许不得转载:CLOUD云枢 » 多个Node.js项目可以部署在同一台阿里云服务器上吗?