在腾讯云服务器上部署两个项目是完全可行的,常见的方法包括使用不同的端口、反向X_X(如 Nginx)、Docker 容器化等。以下是几种常见且推荐的方式:
✅ 方法一:通过不同端口部署(简单直接)
适用场景:
两个项目都是 Web 应用(如 Node.js、Python Flask/Django、Java Spring Boot 等),但运行在不同端口。
步骤:
-
上传并启动第一个项目
- 例如:Node.js 项目监听
3000端口node app1.js # 监听 3000
- 例如:Node.js 项目监听
-
上传并启动第二个项目
- 例如:另一个 Node.js 或 Python 项目监听
4000端口python app2.py # 监听 4000
- 例如:另一个 Node.js 或 Python 项目监听
-
开放安全组端口
- 登录腾讯云控制台 → 进入「云服务器 CVM」→ 找到你的实例 → 安全组 → 添加规则:
- 开放端口
3000和4000(TCP) - 源 IP 可设为
0.0.0.0/0(生产环境建议限制 IP)
- 开放端口
- 登录腾讯云控制台 → 进入「云服务器 CVM」→ 找到你的实例 → 安全组 → 添加规则:
-
访问方式
- 项目1:
http://<公网IP>:3000 - 项目2:
http://<公网IP>:4000
- 项目1:
⚠️ 缺点:URL 带端口号不美观,不适合正式上线。
✅ 方法二:使用 Nginx 反向X_X(推荐用于生产)
优点:
- 可以通过域名 + 路径区分项目
- 支持 HTTPS、负载均衡、缓存等
- 用户访问统一端口(80/443)
步骤:
-
安装 Nginx
sudo apt update sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx -
配置两个项目分别运行在不同端口
- 项目1:
localhost:3000 - 项目2:
localhost:4000
- 项目1:
-
配置 Nginx 反向X_X
创建两个配置文件或合并到一个中:
# /etc/nginx/sites-available/project1 server { listen 80; server_name project1.yourdomain.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name project2.yourdomain.com; location / { proxy_pass http://127.0.0.1:4000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } -
启用配置
sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置 sudo systemctl reload nginx -
域名解析
- 在域名服务商处将
project1.yourdomain.com和project2.yourdomain.com解析到服务器公网 IP
- 在域名服务商处将
-
开放安全组
- 确保腾讯云安全组允许
80(HTTP)和443(HTTPS)端口
- 确保腾讯云安全组允许
✅ 推荐:后续可使用 Let’s Encrypt 免费证书开启 HTTPS。
✅ 方法三:使用 Docker 部署(高级推荐)
优点:
- 环境隔离
- 易于管理多个项目
- 可配合 Docker Compose 统一编排
示例:docker-compose.yml
version: '3'
services:
app1:
image: your-app1-image
ports:
- "3000:3000"
restart: unless-stopped
app2:
image: your-app2-image
ports:
- "4000:4000"
restart: unless-stopped
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- app1
- app2
restart: unless-stopped
然后配置 Nginx 将流量转发到 app1 和 app2 容器。
✅ 方法四:子路径X_X(单域名下多项目)
如果你想用同一个域名访问两个项目,比如:
yourdomain.com/app1→ 项目1yourdomain.com/app2→ 项目2
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:4000/;
proxy_set_header Host $host;
}
注意:项目本身可能需要配置 base path,否则静态资源路径会出错。
🛠️ 补充建议
-
使用 PM2(Node.js)或 Gunicorn(Python)守护进程
npm install -g pm2 pm2 start app1.js --name "project1" pm2 start app2.js --name "project2" pm2 startup -
防火墙设置
- Ubuntu 使用
ufw,确保放行 80、443、必要端口 - 同时在腾讯云「安全组」中开放对应端口
- Ubuntu 使用
-
日志监控
- 查看 Nginx 日志:
/var/log/nginx/access.log和error.log - 项目日志单独输出便于排查
- 查看 Nginx 日志:
总结
| 方法 | 适合场景 | 是否推荐 |
|---|---|---|
| 不同端口直接访问 | 测试、开发 | ✅ 简单 |
| Nginx 反向X_X(多域名) | 正式上线、多项目 | ✅✅✅ 强烈推荐 |
| Nginx 子路径X_X | 单域名多个应用 | ✅(注意路径兼容性) |
| Docker + Nginx | 复杂项目、微服务 | ✅✅ 最佳实践 |
如果你告诉我你的项目类型(如 Vue + Spring Boot、两个 Node.js 项目等),我可以提供更具体的部署脚本和配置示例。
CLOUD云知道