第十五章:从开发环境到生产部署(完整上线流程)

这一章是整套系统的“最后一公里”。

前面我们完成的是:

一个具备 AI 能力、异步架构、可靠性设计的完整系统

但它仍然停留在:

开发环境可运行状态

这一章要解决的是:

如何让它稳定运行在真实服务器上,并长期在线


15.1 生产环境目标

上线后的系统必须满足:

✔ 断电可恢复
✔ 崩溃自动重启
✔ HTTPS可访问
✔ 企业微信回调稳定
✔ AI服务可用
✔ 日志可追踪

15.2 生产架构最终形态

                ┌──────────────┐
                │ 企业微信服务器 │
                └──────┬───────┘
                       │ HTTPS
              ┌─────────────────┐
              │  OpenResty/Nginx │
              └──────┬──────────┘
                     │ reverse proxy
            ┌────────────────────┐
            │   FastAPI Webhook   │
            └──────┬─────────────┘
            ┌──────────────┐
            │ Redis Queue   │
            └────┬─────────┘
        ┌──────────────────┐
        │ Worker (AI系统)   │
        └────┬─────────────┘
     ┌───────────────────┐
     │ DeepSeek / LLM API │
     └───────────────────┘

15.3 Ubuntu服务器初始化

📌 更新系统

sudo apt update && sudo apt upgrade -y

📌 安装基础工具

sudo apt install -y git curl vim ufw

15.4 安装 Docker 环境

📌 安装 Docker

curl -fsSL https://get.docker.com | sh

📌 安装 Compose

sudo apt install docker-compose-plugin -y

📌 启动 Docker

sudo systemctl enable docker
sudo systemctl start docker

15.5 项目部署结构

服务器目录:

/opt/wecom-bot/
├── app/
├── docker/
├── logs/
├── .env
├── docker-compose.yml

15.6 Docker生产配置

📌 docker-compose.yml

version: "3.9"

services:

  api:
    build: .
    container_name: wecom-api
    restart: always
    ports:
      - "8000:8000"
    env_file:
      - .env
    depends_on:
      - redis

  worker:
    build: .
    container_name: wecom-worker
    restart: always
    command: python -m app.queue.worker
    env_file:
      - .env
    depends_on:
      - redis

  redis:
    image: redis:7
    container_name: wecom-redis
    restart: always
    ports:
      - "6379:6379"

15.7 OpenResty反向代理

📌 nginx配置

server {
    listen 443 ssl;
    server_name api.xxx.com;

    ssl_certificate     /etc/letsencrypt/live/api.xxx.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.xxx.com/privkey.pem;

    location /wecom/ {
        proxy_pass http://127.0.0.1:8000/wecom/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

15.8 HTTPS证书配置

📌 使用 certbot

sudo apt install certbot python3-certbot-nginx

📌 申请证书

sudo certbot --nginx -d api.xxx.com

15.9 防火墙配置

sudo ufw allow 22
sudo ufw allow 443
sudo ufw allow 80
sudo ufw enable

15.10 .env生产配置

WECOM_CORP_ID=xxx
WECOM_SECRET=xxx
WECOM_TOKEN=xxx
WECOM_AES_KEY=xxx

DEEPSEEK_API_KEY=xxx

REDIS_HOST=redis
REDIS_PORT=6379

15.11 一键启动系统

docker compose up -d --build

15.12 服务验证

📌 检查容器

docker ps

📌 检查API

curl http://localhost:8000/health

📌 检查回调

企业微信后台:

https://api.xxx.com/wecom/callback

15.13 系统运行链路(生产版)

企业微信
   ↓ HTTPS
OpenResty
FastAPI
Redis Queue
Worker
DeepSeek
企业微信回复

15.14 生产环境优化点

✔ 自动重启

restart: always

✔ 容器隔离

API / Worker / Redis 分离

✔ 可扩展Worker

worker replicas = N

✔ 日志集中

/logs 统一收集

15.15 常见生产问题

❌ 回调失败

原因:

  • HTTPS未配置
  • 域名不合法
  • 路由错误

❌ AI不可用

原因:

  • API KEY错误
  • 网络问题
  • 超时设置过短

❌ Worker不消费

原因:

  • Redis未连接
  • 队列Key错误

15.16 系统最终能力

✔ 完整能力

✔ 企业微信AI机器人
✔ 异步架构
✔ Redis队列
✔ Worker系统
✔ DeepSeek AI
✔ Token管理
✔ 幂等机制
✔ 重试机制
✔ 限流机制
✔ TraceID可观测
✔ Docker生产部署
✔ HTTPS上线

15.17 本书最终总结

这个系统已经不是“Demo”,而是:

👉 一个可以真正部署在企业环境中的 AI 助手系统

🚀 全书完成总结(非常重要)

如果把整个系统压缩成一句话:

企业微信 = AI入口
Redis = 异步中枢
Worker = AI引擎执行器
DeepSeek = 大脑
OpenResty = 安全入口
Docker = 运行载体