在华为云(如弹性云服务器 ECS)上部署两个项目到同一个服务器,可以通过多种方式实现。以下是一个通用的指导流程,适用于常见的 Web 项目部署场景(如 Java、Node.js、Python、PHP 等),你可以根据自己的具体技术栈进行调整。
🧩 场景说明
- 服务器:一台华为云 ECS 实例
- 目标:在这台服务器上部署两个独立项目(例如 A 和 B)
- 常见方式:
- 使用不同端口运行两个服务
- 使用 Nginx 做反向 + 域名区分
- 使用 Docker 容器隔离部署
✅ 方法一:使用不同端口直接部署
步骤:
-
准备环境
- 安装必要的运行时环境(如 JDK、Node.js、Python、Nginx、MySQL 等)
- 安装防火墙工具(如
firewalld或iptables)
-
分别启动两个项目
- 项目 A 启动在端口 3000(比如 Node.js 项目)
node appA.js --port 3000 - 项目 B 启动在端口 8000(比如 Python Flask 项目)
python appB.py --port 8000
- 项目 A 启动在端口 3000(比如 Node.js 项目)
-
开放安全组规则
- 在华为云控制台中为这两个端口(3000、8000)开放入方向访问权限
-
访问方式
- 项目 A:
http://<公网IP>:3000 - 项目 B:
http://<公网IP>:8000
- 项目 A:
✅ 方法二:使用 Nginx 反向 + 域名区分
这是更推荐的方式,适合对外提供服务,可以使用域名统一入口。
步骤:
-
绑定两个域名
- 比如:
a.example.com和b.example.com - 将这两个域名解析到你的 ECS 公网 IP
- 比如:
-
安装并配置 Nginx
sudo apt update && sudo apt install nginx -
配置第一个站点 a.example.com
创建文件
/etc/nginx/sites-available/a.conf:server { listen 80; server_name a.example.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } -
配置第二个站点 b.example.com
创建文件
/etc/nginx/sites-available/b.conf:server { listen 80; server_name b.example.com; location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } -
启用配置并重启 Nginx
sudo ln -s /etc/nginx/sites-available/a.conf /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/b.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx -
访问测试
- 项目 A:
http://a.example.com - 项目 B:
http://b.example.com
- 项目 A:
✅ 方法三:使用 Docker 部署(推荐用于隔离环境)
如果你希望两个项目互不干扰,可以使用 Docker 容器部署。
步骤:
-
安装 Docker 和 Docker Compose
sudo apt update sudo apt install docker.io docker-compose -
创建两个 Docker 容器分别运行项目 A 和 B
示例
docker-compose.yml文件:version: '3' services: project-a: image: your-project-a-image ports: - "3000:3000" container_name: project-a project-b: image: your-project-b-image ports: - "8000:8000" container_name: project-b -
启动容器
docker-compose up -d -
配合 Nginx 做反向(可选)
- 如方法二所述,用 Nginx 把请求分发给对应的容器
🔐 补充建议
- 防火墙/安全组设置:确保对应端口在华为云控制台的安全组中已开放。
- HTTPS 支持:可以使用 Let’s Encrypt 为每个域名申请 SSL 证书,提升安全性。
- 进程守护:使用 PM2(Node.js)、systemd、supervisor 等工具保证服务持续运行。
- 日志管理:建议将项目日志输出到指定路径,便于排查问题。
📌 总结
| 方式 | 特点 | 适用场景 |
|---|---|---|
| 不同端口直接部署 | 简单快速 | 内部测试或简单用途 |
| Nginx + 多域名 | 统一入口,易于维护 | 正式上线网站项目 |
| Docker 部署 | 环境隔离,便于扩展 | 多个复杂项目共存 |
如果你能告诉我你使用的具体技术栈(比如 Spring Boot、Django、Vue、React 等),我可以给你更详细的部署示例和命令。需要的话请继续提问!
CLOUD技术博