在腾讯云的服务器(如云服务器 CVM)上部署多个项目,是常见的开发和运维需求。以下是详细的部署方案和步骤,帮助你在一台服务器上安全、高效地运行多个项目。
一、部署方式选择
在一台服务器上部署多个项目,主要有以下几种方式:
| 方式 | 说明 | 适用场景 |
|---|---|---|
| 1. 多端口运行 | 每个项目监听不同端口 | 简单项目,如多个 Node.js、Python Flask 应用 |
| 2. Nginx 反向X_X | 使用 Nginx 根据域名或路径转发请求 | 多个 Web 项目共享 80/443 端口 |
| 3. Docker 容器化 | 每个项目运行在独立容器中 | 项目隔离、环境独立、便于管理 |
| 4. PM2 管理 Node.js 项目 | 多个 Node.js 项目用 PM2 启动 | 多个 Node.js 服务 |
二、推荐方案:Nginx + 多端口 + 域名(最佳实践)
✅ 场景示例:
- 项目1:
www.site1.com→ Node.js 应用(监听 3000) - 项目2:
www.site2.com→ Python Flask 应用(监听 5000) - 项目3:
api.site1.com→ 后端 API(监听 8000)
三、具体步骤
1. 准备服务器环境
登录腾讯云 CVM,安装必要软件:
sudo apt update
sudo apt install nginx git python3-pip nodejs npm -y
2. 部署多个项目(以 Node.js 和 Python 为例)
项目1:Node.js 项目(监听 3000 端口)
cd /var/www/site1
npm install
nohup node app.js --port 3000 > site1.log 2>&1 &
项目2:Flask 项目(监听 5000 端口)
cd /var/www/site2
pip3 install flask
nohup python3 app.py > site2.log 2>&1 &
注意:建议使用 PM2(Node.js)或 Gunicorn(Python)来管理进程。
3. 配置 Nginx 反向X_X
编辑 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/site1
server {
listen 80;
server_name www.site1.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;
}
}
创建 site2 配置:
sudo nano /etc/nginx/sites-available/site2
server {
listen 80;
server_name www.site2.com;
location / {
proxy_pass http://127.0.0.1:5000;
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/site1 /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2 /etc/nginx/sites-enabled/
# 删除默认站点(可选)
sudo rm /etc/nginx/sites-enabled/default
# 测试配置并重启
sudo nginx -t
sudo systemctl restart nginx
4. 域名解析(腾讯云 DNSPod)
登录 腾讯云 DNS 控制台,添加 A 记录:
www.site1.com→ 你的服务器公网 IPwww.site2.com→ 同一 IP
5. 配置 HTTPS(推荐使用 Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d www.site1.com -d www.site2.com
Certbot 会自动配置 SSL 并更新 Nginx。
四、进阶方案:使用 Docker 隔离项目(推荐)
优势:
- 环境隔离
- 依赖不冲突
- 易于部署和迁移
示例:Docker + Docker Compose
# docker-compose.yml
version: '3'
services:
site1:
image: node:16
working_dir: /app
volumes:
- ./site1:/app
command: bash -c "npm install && node app.js"
ports:
- "3000:3000"
restart: unless-stopped
site2:
build: ./site2
ports:
- "5000:5000"
restart: unless-stopped
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./ssl:/etc/nginx/ssl
depends_on:
- site1
- site2
restart: unless-stopped
五、注意事项
- 防火墙:确保腾讯云安全组开放 80、443、22 等端口。
- 资源监控:一个服务器运行多个项目需关注 CPU、内存使用。
- 日志管理:每个项目单独记录日志,便于排查问题。
- 进程守护:使用
pm2、systemd或supervisor防止进程崩溃。 - 备份策略:定期备份代码和数据库。
六、总结
| 方法 | 优点 | 缺点 |
|---|---|---|
| 多端口 + Nginx | 简单高效,适合中小型项目 | 需手动管理进程 |
| Docker | 隔离性好,易于扩展 | 学习成本略高 |
| PM2(Node.js) | 适合多个 Node 项目 | 仅适用于 Node |
✅ 推荐组合:
Nginx 反向X_X + 多项目独立端口 + Docker(可选)+ 域名 + HTTPS
如有具体项目类型(如 Vue + Spring Boot + Django),可提供更详细部署方案。欢迎继续提问!
轻量云Cloud