Skip to Content

部署架构

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:3001

NestJS 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天
  • 文件存储定期备份到云端
  • 支持一键恢复到指定时间点