在腾讯云的一台服务器上部署多个项目是完全可行的,常用的方法包括使用不同的端口、反向(如 Nginx)、Docker 容器化、或通过进程管理工具(如 PM2)来管理多个应用。以下是几种常见的部署方式及操作步骤:
✅ 方法一:使用 Nginx 反向(推荐)
适用于多个 Web 项目(如 Node.js、Python Flask、Java Spring Boot、静态网站等)共用 80/443 端口,通过域名区分。
步骤:
-
为每个项目分配独立端口
例如:
- 项目 A:运行在
3000端口 - 项目 B:运行在
4000端口 - 项目 C:静态网站,放在
/var/www/project-c
- 项目 A:运行在
-
安装 Nginx
sudo apt update sudo apt install nginx -y -
配置 Nginx 虚拟主机
创建配置文件(以项目 A 和 B 为例):
sudo nano /etc/nginx/sites-available/project-a内容如下(假设你有域名
a.example.com):server { listen 80; server_name a.example.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; } }同理,创建
project-b配置文件:sudo nano /etc/nginx/sites-available/project-bserver { listen 80; server_name b.example.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/project-a /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/project-b /etc/nginx/sites-enabled/ # 删除默认站点(可选) sudo rm /etc/nginx/sites-enabled/default -
测试并重启 Nginx
sudo nginx -t sudo systemctl restart nginx -
域名解析
在腾讯云 DNS 控制台,将
a.example.com和b.example.com解析到服务器公网 IP。 -
启动各个项目
确保每个项目在后台运行(可使用 PM2、systemd 或 nohup)。
✅ 方法二:使用 Docker 容器部署(更清晰隔离)
每个项目运行在独立容器中,互不干扰。
示例:部署两个 Node.js 项目
-
安装 Docker
curl -fsSL https://get.docker.com | bash -
为每个项目创建 Dockerfile
例如项目 A 的
Dockerfile:FROM node:16 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["node", "app.js"] -
构建并运行容器
docker build -t project-a . docker run -d -p 3000:3000 --name my-project-a project-a docker build -t project-b . docker run -d -p 4000:4000 --name my-project-b project-b -
配合 Nginx 反向(同方法一)
使用 Nginx 将域名指向对应容器端口。
✅ 优势:环境隔离、易于管理、可扩展。
✅ 方法三:使用 PM2 管理多个 Node.js 项目
适合多个 Node.js 应用。
npm install -g pm2
# 启动项目 A
pm2 start app1.js --name "project-a"
# 启动项目 B
pm2 start app2.js --name "project-b"
# 查看状态
pm2 list
# 开机自启
pm2 startup
pm2 save
然后配合 Nginx 反向访问。
✅ 方法四:部署多个静态网站
使用 Nginx 的 server_name 和 root 区分:
server {
listen 80;
server_name site1.com;
root /var/www/site1;
index index.html;
}
server {
listen 80;
server_name site2.com;
root /var/www/site2;
index index.html;
}
🔐 安全建议
- 使用腾讯云安全组:只开放必要的端口(如 80、443、22)
- 配置 HTTPS(使用 Let’s Encrypt + Certbot)
- 定期更新系统和软件
🌐 总结
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Nginx 反向 | 多个 Web 项目共享 80/443 | 简单高效,支持域名分流 | 需要管理端口 |
| Docker | 多项目、多语言、环境隔离 | 隔离性好,易于部署 | 学习成本略高 |
| PM2 | 多个 Node.js 项目 | 进程管理方便 | 仅适用于 Node.js |
✅ 推荐组合:Docker + Nginx + 域名 + HTTPS
这样可以实现多个项目清晰、安全、可维护地部署在同一台腾讯云服务器上。
如需具体某个项目的部署示例(如 Vue + Node.js + MySQL),欢迎继续提问!
ECLOUD博客