9.7 KiB
9.7 KiB
🚀 部署智能展开引擎 (Deployment Auto-Expand)
角色激活: 将此文件拖入 AI,即刻激活 DevOps 运维专家 角色 核心能力: 自动化部署、CI/CD、Docker、服务器配置
📋 一、快速启动指令
1.1 项目转部署
@部署引擎 请根据以下项目信息,生成完整的部署方案:
【项目名称】:[项目名]
【技术栈】:[前端/后端技术]
【服务器】:[宝塔/Docker/云服务]
【域名】:[可选:域名信息]
【特殊需求】:[可选:负载均衡/SSL等]
1.2 展开输出清单
| 输出项 | 说明 | 格式 |
|---|---|---|
| 部署架构图 | 服务器拓扑 | Mermaid |
| 环境配置 | .env 模板 | 文本 |
| 部署脚本 | Shell 脚本 | Bash |
| Nginx 配置 | 反向代理 | Nginx conf |
| CI/CD 配置 | 自动化流程 | YAML/Shell |
🛠️ 二、部署方案选型
2.1 卡若标准部署栈
┌─────────────────────────────────────────────────────────────────────┐
│ 部署技术栈 │
├─────────────────────────────────────────────────────────────────────┤
│ 🖥️ 服务器管理 │
│ ├── 宝塔面板 (首选,可视化) │
│ ├── Docker + Docker Compose (容器化) │
│ └── 云服务器:阿里云 / 腾讯云 / 轻量应用 │
├─────────────────────────────────────────────────────────────────────┤
│ 🌐 Web 服务 │
│ ├── Nginx (反向代理 + SSL) │
│ ├── PM2 (Node.js 进程管理) │
│ └── Gunicorn + Uvicorn (Python ASGI) │
├─────────────────────────────────────────────────────────────────────┤
│ 🔄 CI/CD │
│ ├── GitHub Webhook (自动部署) │
│ ├── GitHub Actions (可选) │
│ └── 宝塔 Webhook 插件 │
├─────────────────────────────────────────────────────────────────────┤
│ 📊 监控 │
│ ├── PM2 日志 / journalctl │
│ ├── 宝塔监控面板 │
│ └── Sentry (错误追踪) │
└─────────────────────────────────────────────────────────────────────┘
📝 三、部署配置模板
3.1 环境变量模板 (.env)
# .env.production
# 应用配置
APP_NAME=私域银行
APP_ENV=production
DEBUG=false
PORT=8000
# 数据库
MONGODB_URL=mongodb://user:pass@host:27017/dbname
REDIS_URL=redis://:password@host:6379/0
# JWT
JWT_SECRET=your-super-secret-key-change-in-production
JWT_ALGORITHM=HS256
JWT_EXPIRE_HOURS=2
# AI 配置
OPENAI_API_KEY=sk-xxx
GEMINI_API_KEY=xxx
# 第三方服务
SMS_ACCESS_KEY=xxx
SMS_SECRET_KEY=xxx
OSS_BUCKET=xxx
3.2 Nginx 配置
# /etc/nginx/sites-available/project.conf
# 前端
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# 前端静态文件
location / {
root /www/wwwroot/project/frontend/dist;
try_files $uri $uri/ /index.html;
# 缓存静态资源
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}
# 后端 API 代理
location /api {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 支持
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
3.3 部署脚本 (deploy.sh)
#!/bin/bash
# deploy.sh - 自动部署脚本
set -e
PROJECT_DIR="/www/wwwroot/project"
BACKEND_DIR="$PROJECT_DIR/backend"
FRONTEND_DIR="$PROJECT_DIR/frontend"
echo "🚀 开始部署..."
# 1. 拉取最新代码
cd $PROJECT_DIR
git pull origin main
# 2. 后端部署
echo "📦 部署后端..."
cd $BACKEND_DIR
source venv/bin/activate
pip install -r requirements.txt --quiet
sudo systemctl restart project-backend
# 3. 前端部署
echo "🎨 部署前端..."
cd $FRONTEND_DIR
npm install --silent
npm run build
# 4. 重载 Nginx
sudo nginx -t && sudo nginx -s reload
echo "✅ 部署完成!"
3.4 Systemd 服务配置
# /etc/systemd/system/project-backend.service
[Unit]
Description=Project Backend Service
After=network.target
[Service]
Type=simple
User=www
Group=www
WorkingDirectory=/www/wwwroot/project/backend
Environment="PATH=/www/wwwroot/project/backend/venv/bin"
EnvironmentFile=/www/wwwroot/project/backend/.env
ExecStart=/www/wwwroot/project/backend/venv/bin/gunicorn \
-w 4 \
-k uvicorn.workers.UvicornWorker \
-b 127.0.0.1:8000 \
main:app
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
🔄 四、CI/CD 配置
4.1 GitHub Webhook 自动部署
# webhook_handler.sh - Webhook 处理脚本
#!/bin/bash
cd /www/wwwroot/project
git pull origin main
bash deploy.sh >> /var/log/deploy.log 2>&1
4.2 宝塔 Webhook 配置
1. 安装宝塔 Webhook 插件
2. 添加 Webhook:
- 名称:project-deploy
- 执行脚本:/www/wwwroot/project/deploy.sh
3. 获取 Webhook URL
4. 在 GitHub 仓库设置中添加 Webhook
4.3 部署流程图
sequenceDiagram
participant Dev as 开发者
participant GitHub
participant Server as 服务器
participant Nginx
Dev->>GitHub: git push
GitHub->>Server: Webhook 触发
Server->>Server: git pull
Server->>Server: pip install
Server->>Server: npm build
Server->>Server: systemctl restart
Server->>Nginx: nginx reload
Nginx-->>Dev: 部署完成
🐳 五、Docker 部署方案
5.1 Dockerfile (后端)
# backend/Dockerfile
FROM python:3.11-slim
WORKDIR /app
# 安装依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制代码
COPY . .
# 启动命令
CMD ["gunicorn", "-w", "4", "-k", "uvicorn.workers.UvicornWorker", "-b", "0.0.0.0:8000", "main:app"]
5.2 docker-compose.yml
version: '3.8'
services:
backend:
build: ./backend
ports:
- "8000:8000"
env_file:
- ./backend/.env
depends_on:
- mongodb
- redis
restart: always
frontend:
build: ./frontend
ports:
- "3000:3000"
restart: always
mongodb:
image: mongo:7
volumes:
- mongo_data:/data/db
restart: always
redis:
image: redis:7-alpine
restart: always
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./certs:/etc/nginx/certs
depends_on:
- backend
- frontend
restart: always
volumes:
mongo_data:
🔗 六、跨目录联动
graph LR
A[6、后端] -->|技术栈| B[8、部署]
C[4、前端] -->|构建产物| B
D[7、数据库] -->|备份策略| B
B -->|运维手册| E[9、手册]
🤖 七、AI 协作指令
| 指令 | 功能 | 示例 |
|---|---|---|
@生成部署脚本 |
生成 Shell 脚本 | @生成部署脚本 Python+React |
@生成Nginx |
生成 Nginx 配置 | @生成Nginx 反向代理 |
@生成Docker |
生成 Docker 配置 | @生成Docker 全栈项目 |
@生成CI/CD |
生成自动化流程 | @生成CI/CD GitHub Webhook |
@环境检查 |
检查服务器环境 | @环境检查 Python+Node |
⚠️ 八、注意事项
8.1 安全规范
必须做:
- [ ] 密钥走环境变量,不提交代码
- [ ] 开启 HTTPS
- [ ] 配置防火墙
- [ ] 定期备份数据库
禁止做:
- [ ] 在代码中硬编码密钥
- [ ] 开放不必要端口
- [ ] root 用户运行服务
8.2 常用命令
# 查看服务状态
systemctl status project-backend
# 查看日志
journalctl -u project-backend -f
# 重启服务
systemctl restart project-backend
# Nginx 测试配置
nginx -t
# Docker 常用
docker-compose up -d
docker-compose logs -f
docker-compose restart
下一步: 部署完成后,拖入
9、手册/_智能展开.md编写用户手册