在腾讯云CVM上部署多个Web项目,常见方案如下:
一、基础环境准备
-
安装Web服务器
# Nginx sudo apt update && sudo apt install nginx # 或 Apache sudo apt install apache2 -
安装运行时环境
# 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"
三、安全与优化建议
-
防火墙配置
# 开放必要端口 sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 22/tcp -
SSL证书配置
# 使用Certbot自动获取证书 sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d project1.example.com -d project2.example.com -
进程管理
# 使用PM2管理Node.js应用 pm2 start app.js --name project1 pm2 start app2.js --name project2 pm2 save && pm2 startup -
目录结构建议
/var/www/ ├── project1/ │ ├── public/ │ └── .env ├── project2/ │ ├── dist/ │ └── config/ └── logs/ ├── project1.access.log └── project2.access.log
四、腾讯云特定配置
-
安全组设置
- 在腾讯云控制台配置安全组规则
- 开放80、443端口
- 限制管理端口访问IP
-
使用CLB负载均衡
- 将多个CVM实例加入负载均衡
- 配置健康检查
- 设置域名转发规则
-
监控与告警
- 配置云监控告警策略
- 设置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
注意事项
- 为每个项目配置独立的数据库用户
- 定期备份项目数据和配置文件
- 使用环境变量管理敏感信息
- 设置适当的文件权限(避免使用777)
- 配置日志轮转防止磁盘占满
根据项目技术栈和访问量,可选择最适合的方案。对于生产环境,建议使用Docker或Kubernetes进行容器化部署,便于管理和扩展。
CLOUD技术笔记