腾讯云一个服务器如何部署多个项目?

在腾讯云的一台服务器上部署多个项目是完全可行的,常用的方法包括使用不同的端口、反向(如 Nginx)、Docker 容器化、或通过进程管理工具(如 PM2)来管理多个应用。以下是几种常见的部署方式及操作步骤:


✅ 方法一:使用 Nginx 反向(推荐)

适用于多个 Web 项目(如 Node.js、Python Flask、Java Spring Boot、静态网站等)共用 80/443 端口,通过域名区分。

步骤:

  1. 为每个项目分配独立端口

    例如:

    • 项目 A:运行在 3000 端口
    • 项目 B:运行在 4000 端口
    • 项目 C:静态网站,放在 /var/www/project-c
  2. 安装 Nginx

    sudo apt update
    sudo apt install nginx -y
  3. 配置 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-b
    server {
       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;
       }
    }
  4. 启用站点

    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
  5. 测试并重启 Nginx

    sudo nginx -t
    sudo systemctl restart nginx
  6. 域名解析

    在腾讯云 DNS 控制台,将 a.example.comb.example.com 解析到服务器公网 IP。

  7. 启动各个项目

    确保每个项目在后台运行(可使用 PM2、systemd 或 nohup)。


✅ 方法二:使用 Docker 容器部署(更清晰隔离)

每个项目运行在独立容器中,互不干扰。

示例:部署两个 Node.js 项目

  1. 安装 Docker

    curl -fsSL https://get.docker.com | bash
  2. 为每个项目创建 Dockerfile

    例如项目 A 的 Dockerfile

    FROM node:16
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    EXPOSE 3000
    CMD ["node", "app.js"]
  3. 构建并运行容器

    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
  4. 配合 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_nameroot 区分:

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博客 » 腾讯云一个服务器如何部署多个项目?