在阿里云服务器(ECS)上部署多个项目是完全可行的,以下是详细的部署方案和最佳实践,帮助你高效管理多个项目。
一、部署方式选择
根据项目类型和资源需求,有以下几种常见部署方式:
1. 多项目共用一台 ECS 实例
适用于资源充足、项目规模较小的场景。
✅ 优点:
- 成本低
- 管理方便
⚠️ 注意:
- 需合理分配端口、资源,避免冲突
- 做好隔离,防止一个项目崩溃影响其他项目
二、部署方案(推荐)
✅ 方案一:使用 Nginx 反向 + 多端口
适用于多个 Web 项目(如 Node.js、Python、Java、PHP 等)。
步骤:
-
每个项目运行在不同端口
- 项目A:
localhost:3000 - 项目B:
localhost:8000 - 项目C:
localhost:5000
- 项目A:
-
配置 Nginx 反向
# /etc/nginx/sites-available/project-a server { listen 80; server_name a.yourdomain.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } # /etc/nginx/sites-available/project-b server { listen 80; server_name b.yourdomain.com; location / { proxy_pass http://127.0.0.1:8000; } } -
启用站点并重启 Nginx
sudo ln -s /etc/nginx/sites-available/project-a /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx -
域名解析
- 将
a.yourdomain.com和b.yourdomain.com解析到服务器公网 IP
- 将
✅ 方案二:使用 Docker 隔离部署(推荐)
更现代、更安全、更易维护的方式。
优点:
- 项目完全隔离
- 环境独立,避免依赖冲突
- 易于迁移和扩展
示例:
-
安装 Docker 和 Docker Compose
curl -fsSL https://get.docker.com | bash sudo systemctl start docker sudo systemctl enable docker -
为每个项目创建
Dockerfile和docker-compose.yml项目A 示例:
# docker-compose.yml (项目A) version: '3' services: web: build: . ports: - "3000:3000" restart: unless-stopped -
使用 Nginx 作为统一入口(可选):
- 启动一个 Nginx 容器,反向所有项目
- 或者每个项目暴露不同端口,用域名+端口访问
-
使用
docker-compose up -d启动多个项目
✅ 方案三:使用子目录部署(单域名)
如果多个项目属于同一主站,可部署在子路径下。
例如:
yourdomain.com/app1→ 项目Ayourdomain.com/app2→ 项目B
Nginx 配置:
location /app1/ {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
}
location /app2/ {
proxy_pass http://127.0.0.1:8000/;
}
注意:后端项目需支持子路径(如设置
baseURL、publicPath等)
三、其他注意事项
-
安全组配置
- 在阿里云控制台开放所需端口(如 80、443、22)
- 建议关闭不必要的端口
-
HTTPS 配置
- 使用阿里云免费 SSL 证书 或 Let’s Encrypt
- Nginx 配置 HTTPS:
listen 443 ssl; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; -
进程守护
- Node.js 项目使用
pm2:npm install -g pm2 pm2 start app.js --name "project-a" pm2 startup
- Node.js 项目使用
-
资源监控
- 使用
top、htop、netstat监控 CPU、内存、端口占用 - 阿里云自带云监控服务
- 使用
-
备份与快照
- 定期创建 ECS 系统盘快照
- 项目代码和数据库定期备份
四、进阶建议
| 需求 | 推荐方案 |
|---|---|
| 项目多、复杂 | 使用 Docker + Docker Compose |
| 高可用 | 多台 ECS + 负载均衡 SLB |
| 自动部署 | 配合 Jenkins / GitHub Actions |
| 数据库分离 | 使用阿里云 RDS,避免与应用混用 |
总结
✅ 推荐做法:
- 使用 Nginx 反向统一入口
- 用 Docker 隔离项目环境
- 每个项目独立端口或路径
- 配置域名 + HTTPS
- 使用
pm2或systemd守护进程
如果你提供具体项目类型(如:Vue + Node.js + Python Flask),我可以给出更详细的部署脚本和目录结构建议。欢迎继续提问!
PHPWP博客