如何在腾讯云CVM上部署多个Web项目?

在腾讯云CVM上部署多个Web项目,常见方案如下:

一、基础环境准备

  1. 安装Web服务器

    # Nginx
    sudo apt update && sudo apt install nginx
    # 或 Apache
    sudo apt install apache2
  2. 安装运行时环境

    # PHP
    sudo apt install php-fpm php-mysql
    # Node.js
    curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
    sudo apt install nodejs
    # Python
    sudo apt install python3-pip

二、多项目部署方案

方案1:基于端口的虚拟主机(Nginx示例)

# /etc/nginx/nginx.conf 或 sites-available/
server {
    listen 80;
    server_name project1.example.com;
    root /var/www/project1;
    index index.html;
}

server {
    listen 8080;
    server_name _;
    root /var/www/project2;
    index index.html;
}

方案2:基于域名的虚拟主机(推荐)

# project1.conf
server {
    listen 80;
    server_name api.example.com;
    root /var/www/api;
    # 其他配置...
}

# project2.conf
server {
    listen 80;
    server_name admin.example.com;
    root /var/www/admin;
    # 其他配置...
}

启用配置:

sudo ln -s /etc/nginx/sites-available/project1.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

方案3:使用反向XX

location /project1/ {
    proxy_pass http://localhost:3000/;
    proxy_set_header Host $host;
}

location /project2/ {
    proxy_pass http://localhost:3001/;
    proxy_set_header Host $host;
}

方案4:Docker容器化部署

# 为每个项目创建Docker容器
docker run -d -p 3000:80 --name project1 nginx
docker run -d -p 3001:80 --name project2 httpd

# 使用Docker Compose管理
# docker-compose.yml
version: '3'
services:
  project1:
    image: nginx
    ports:
      - "3000:80"
  project2:
    image: httpd
    ports:
      - "3001:80"

三、安全与优化建议

  1. 防火墙配置

    # 开放必要端口
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw allow 22/tcp
  2. SSL证书配置

    # 使用Certbot自动获取证书
    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d project1.example.com -d project2.example.com
  3. 进程管理

    # 使用PM2管理Node.js应用
    pm2 start app.js --name project1
    pm2 start app2.js --name project2
    pm2 save && pm2 startup
  4. 目录结构建议

    /var/www/
    ├── project1/
    │   ├── public/
    │   └── .env
    ├── project2/
    │   ├── dist/
    │   └── config/
    └── logs/
       ├── project1.access.log
       └── project2.access.log

四、腾讯云特定配置

  1. 安全组设置

    • 在腾讯云控制台配置安全组规则
    • 开放80、443端口
    • 限制管理端口访问IP
  2. 使用CLB负载均衡

    • 将多个CVM实例加入负载均衡
    • 配置健康检查
    • 设置域名转发规则
  3. 监控与告警

    • 配置云监控告警策略
    • 设置CPU、内存、带宽阈值
    • 启用日志服务收集应用日志

五、自动化部署脚本示例

#!/bin/bash
# deploy.sh - 多项目部署脚本

PROJECTS=("project1" "project2")

for project in "${PROJECTS[@]}"; do
    echo "部署项目: $project"

    # 1. 拉取代码
    git clone https://github.com/yourname/$project.git /var/www/$project

    # 2. 安装依赖
    cd /var/www/$project
    npm install  # 或 pip install -r requirements.txt

    # 3. 构建项目
    npm run build  # 或相应构建命令

    # 4. 重启服务
    pm2 restart $project || pm2 start ecosystem.config.js --name $project
done

# 5. 重载Nginx
sudo nginx -t && sudo systemctl reload nginx

注意事项

  1. 为每个项目配置独立的数据库用户
  2. 定期备份项目数据和配置文件
  3. 使用环境变量管理敏感信息
  4. 设置适当的文件权限(避免使用777)
  5. 配置日志轮转防止磁盘占满

根据项目技术栈和访问量,可选择最适合的方案。对于生产环境,建议使用Docker或Kubernetes进行容器化部署,便于管理和扩展。

云服务器