部署架构
7.1 私有化部署
7.1.1 部署架构概览
采用私有化部署方式,基于Next.js + NestJS技术栈:
7.1.2 部署方案选择
技术栈:
- 前端:Next.js(支持SSR/SSG)
- 后端:NestJS(TypeScript框架)
- 数据库:PostgreSQL
- 文件存储:本地存储或云存储(阿里云OSS、腾讯云COS等)
- 部署方式:Docker Compose,支持本地服务器、私有云、公有云
Docker Compose 部署配置:
# docker-compose.yml
version: '3.8'
services:
# Next.js 应用(包含L1-L3层逻辑)
admin:
build:
context: ./apps/admin
dockerfile: Dockerfile
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DATABASE_URL=postgresql://app_user:${DB_PASSWORD}@postgres:5432/procurebot
- QWEN_API_KEY=${QWEN_API_KEY}
- NEXT_PUBLIC_API_URL=http://api:3001
volumes:
- ./storage:/app/storage
depends_on:
- postgres
restart: unless-stopped
# NestJS API(仅L4层对外接口)
api:
build:
context: ./apps/api
dockerfile: Dockerfile
ports:
- "3001:3001"
environment:
- NODE_ENV=production
- NEXT_SERVER_URL=http://admin:3000
- JWT_SECRET=${JWT_SECRET}
depends_on:
- admin
restart: unless-stopped
# PostgreSQL 数据库
postgres:
image: postgres:15-alpine
environment:
- POSTGRES_DB=procurebot
- POSTGRES_USER=app_user
- POSTGRES_PASSWORD=${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
- ./backup:/backup
restart: unless-stopped
# Prometheus 监控(可选)
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
volumes:
- ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
restart: unless-stopped
volumes:
postgres_data:
prometheus_data:7.1.3 环境配置
Next.js 应用环境变量(L1-L3层):
# apps/admin/.env.production
NODE_ENV=production
# 数据库配置
DATABASE_URL=postgresql://app_user:${DB_PASSWORD}@postgres:5432/procurebot
# AI服务配置
QWEN_API_KEY=${QWEN_API_KEY}
BROWSER_USE_MODEL=qwen-vl-plus
# 文件存储
FILE_STORAGE_PATH=/app/storage
# 对外API地址(供前端调用)
NEXT_PUBLIC_API_URL=http://localhost:3001NestJS API 环境变量(L4层):
# apps/api/.env.production
NODE_ENV=production
PORT=3001
# Next.js Server地址(内部调用)
NEXT_SERVER_URL=http://web:3000
# 认证配置
JWT_SECRET=${JWT_SECRET}7.2 安全与认证
基础安全措施:
- 网络隔离:应用部署在企业内网,通过防火墙访问控制
- HTTPS支持:Next.js生产环境配置HTTPS,确保传输安全
- 数据加密:数据库连接使用SSL,敏感数据AES-256加密存储
- 访问控制:NestJS实现JWT Token认证,支持RBAC角色权限管理
- 审计日志:记录所有关键操作,支持操作追溯
7.3 运维管理
7.3.1 监控与日志
基础监控:
- 使用Prometheus + Grafana进行应用和系统监控
- 关键指标:API响应时间、任务执行成功率、资源使用率
- 日志分级存储(info/error),错误日志单独归档
7.3.2 备份与恢复
备份策略:
- 数据库每日自动全量备份,保留30天
- 文件存储定期备份到云端
- 支持一键恢复到指定时间点