上一篇 下一篇 分享链接 返回 返回顶部

从内网试用到正式上线:AI办公系统生产部署全流程实战指南

发布人:慈云数据-客服中心 发布时间:12小时前 阅读量:2

AI办公 生产环境部署指南|附完整命令

本文面向准备将“AI办公系统”部署到生产环境的团队,目标是搭建一个稳定、安全、可维护的企业级 AI 办公平台。
典型场景包括:AI文档问答、知识库检索、会议纪要生成、合同/制度解读、邮件草拟、日报周报生成、内部智能助手等。


一、生产环境部署目标

很多人在本地体验 AI 办公工具时,往往只关注“能不能跑起来”。但真正进入生产环境后,需要考虑的问题会更多,例如:

  • 服务是否稳定?
  • 是否支持多人同时访问?
  • 数据是否安全?
  • 文件、知识库、向量数据是否可持久化?
  • 服务崩溃后能否自动恢复?
  • 是否支持 HTTPS?
  • 是否方便升级和备份?
  • 是否便于后期接入大模型 API 或本地大模型?

因此,生产环境部署不能只是简单执行一条启动命令,而应该形成一套完整的标准化流程。

本文将以一套通用 AI 办公应用架构为例,使用 Docker Compose + Nginx + HTTPS + 数据持久化 + 日志管理 + 备份策略 来完成部署。


二、推荐生产架构

一个较完整的 AI 办公生产环境通常包含以下组件:

模块 作用
Web 前端 用户访问 AI 办公系统的界面
API 服务 处理业务逻辑、用户请求、权限、模型调用
PostgreSQL 存储用户、配置、文档元数据等结构化数据
Redis 缓存、任务队列、会话状态
向量数据库 存储知识库文档切片后的向量数据
对象存储/本地存储 存储上传的文档、图片、附件
Nginx 反向代理、HTTPS、负载转发
大模型服务 可使用 OpenAI、通义千问、DeepSeek、智谱、Claude 或本地模型
监控与日志 用于排查问题、定位性能瓶颈
备份任务 定期备份数据库、配置和文件

本文为了便于落地,采用如下部署方式:

  • 操作系统:Ubuntu 22.04 LTS
  • 容器管理:Docker + Docker Compose
  • 数据库:PostgreSQL
  • 缓存:Redis
  • 反向代理:Nginx
  • HTTPS:Certbot + Let’s Encrypt
  • 应用部署目录:/opt/ai-office

三、服务器配置建议

1. 基础配置

如果你只是部署企业内部 AI 办公应用,且主要调用外部大模型 API,可以选择:

规模 CPU 内存 磁盘 适用场景
小型团队 2 核 4GB 80GB SSD 10 人以内轻量使用
中小团队 4 核 8GB 200GB SSD 10~100 人
企业部门 8 核 16GB+ 500GB SSD 高频知识库问答、多人并发
本地大模型 16 核+ 32GB+ 1TB SSD 需要本地推理,建议配 GPU

如果你要运行本地大模型,还需要 GPU,例如:

  • NVIDIA RTX 4090
  • NVIDIA L20
  • NVIDIA A10
  • NVIDIA A100
  • H100

但如果只是做 AI 办公应用,建议优先使用成熟的大模型 API,这样部署成本更低,稳定性也更好。


四、系统初始化

以下命令均以 Ubuntu 22.04 为例。

1. 更新系统

sudo apt update && sudo apt upgrade -y

2. 安装常用工具

sudo apt install -y \
  curl \
  wget \
  git \
  vim \
  unzip \
  tar \
  htop \
  net-tools \
  ca-certificates \
  gnupg \
  lsb-release \
  ufw

3. 设置服务器时区

sudo timedatectl set-timezone Asia/Shanghai
timedatectl

4. 创建部署目录

sudo mkdir -p /opt/ai-office
sudo chown -R $USER:$USER /opt/ai-office
cd /opt/ai-office

五、安装 Docker 和 Docker Compose

1. 卸载旧版本 Docker

sudo apt remove -y docker docker-engine docker.io containerd runc || true

2. 添加 Docker 官方源

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3. 安装 Docker

sudo apt update

sudo apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

4. 设置 Docker 开机自启

sudo systemctl enable docker
sudo systemctl start docker

5. 验证 Docker

docker version
docker compose version

6. 将当前用户加入 Docker 用户组

sudo usermod -aG docker $USER

执行后重新登录服务器,或执行:

newgrp docker

六、编写生产环境目录结构

建议目录结构如下:

/opt/ai-office
├── docker-compose.yml
├── .env
├── nginx
│   └── ai-office.conf
├── data
│   ├── postgres
│   ├── redis
│   ├── uploads
│   └── vector
├── logs
│   ├── nginx
│   └── app
└── backup

创建目录:

cd /opt/ai-office

mkdir -p nginx
mkdir -p data/postgres
mkdir -p data/redis
mkdir -p data/uploads
mkdir -p data/vector
mkdir -p logs/nginx
mkdir -p logs/app
mkdir -p backup

七、编写环境变量文件

创建 .env 文件:

vim /opt/ai-office/.env

写入以下内容:

# 基础配置
APP_NAME=AI Office
APP_ENV=production
APP_PORT=3000
API_PORT=8000

# 域名配置
DOMAIN=ai.example.com
PUBLIC_URL=https://ai.example.com

# 数据库配置
POSTGRES_DB=ai_office
POSTGRES_USER=ai_office_user
POSTGRES_PASSWORD=请替换为强密码

# Redis 配置
REDIS_PASSWORD=请替换为Redis强密码

# 文件上传配置
UPLOAD_DIR=/app/uploads
MAX_UPLOAD_SIZE=100MB

# JWT 密钥
JWT_SECRET=请替换为至少32位随机字符串

# 大模型 API 配置,可根据实际厂商修改
LLM_PROVIDER=openai
OPENAI_API_KEY=请替换为你的API_KEY
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini

# Embedding 模型配置
EMBEDDING_MODEL=text-embedding-3-small

# 向量数据库配置
VECTOR_DB_PATH=/app/vector

# 日志级别
LOG_LEVEL=info

为了生成安全随机密码,可以使用:

openssl rand -base64 32

例如:

openssl rand -base64 48

八、编写 Docker Compose 配置

下面给出一个通用 AI 办公系统的生产部署模板。实际项目中,你可以将 ai-office-webai-office-api 替换成自己的镜像地址。

创建文件:

vim /opt/ai-office/docker-compose.yml

写入:

services:
  postgres:
    image: postgres:16
    container_name: ai-office-postgres
    restart: always
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      TZ: Asia/Shanghai
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    networks:
      - ai-office-net
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 10s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7
    container_name: ai-office-redis
    restart: always
    command: >
      redis-server
      --appendonly yes
      --requirepass ${REDIS_PASSWORD}
    volumes:
      - ./data/redis:/data
    networks:
      - ai-office-net
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  api:
    image: your-registry/ai-office-api:latest
    container_name: ai-office-api
    restart: always
    env_file:
      - .env
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    volumes:
      - ./data/uploads:/app/uploads
      - ./data/vector:/app/vector
      - ./logs/app:/app/logs
    networks:
      - ai-office-net
    expose:
      - "8000"

  web:
    image: your-registry/ai-office-web:latest
    container_name: ai-office-web
    restart: always
    env_file:
      - .env
    depends_on:
      - api
    networks:
      - ai-office-net
    expose:
      - "3000"

networks:
  ai-office-net:
    driver: bridge

注意:
如果你的 AI 办公系统使用的是开源项目,例如 Dify、MaxKB、FastGPT、AnythingLLM、Open WebUI 等,Docker Compose 文件会有所不同,但部署思路基本一致:应用服务、数据库、缓存、向量数据、文件存储必须持久化。


九、启动服务

/opt/ai-office 目录执行:

cd /opt/ai-office
docker compose pull
docker compose up -d

查看容器状态:

docker compose ps

查看日志:

docker compose logs -f

只查看 API 日志:

docker compose logs -f api

只查看数据库日志:

docker compose logs -f postgres

如果需要重启:

docker compose restart

停止服务:

docker compose down

十、初始化数据库

不同应用的初始化命令不同。一般来说,后端服务可能需要执行数据库迁移。

示例命令:

docker compose exec api npm run migrate

或者:

docker compose exec api python manage.py migrate

如果你的后端是 Node.js 项目,常见命令如下:

docker compose exec api npm run db:migrate
docker compose exec api npm run db:seed

如果是 Python FastAPI / Django 项目,可能是:

docker compose exec api alembic upgrade head

或:

docker compose exec api python manage.py migrate

创建管理员账号示例:

docker compose exec api npm run create-admin

或:

docker compose exec api python manage.py createsuperuser

十一、配置 Nginx 反向代理

生产环境不建议直接暴露容器端口给公网,而应该通过 Nginx 统一入口访问。

1. 安装 Nginx

sudo apt install -y nginx

设置开机自启:

sudo systemctl enable nginx
sudo systemctl start nginx

2. 创建 Nginx 配置

创建配置文件:

sudo vim /etc/nginx/sites-available/ai-office.conf

写入以下内容,请将 ai.example.com 替换为你的真实域名:

server {
    listen 80;
    server_name ai.example.com;

    client_max_body_size 100M;

    access_log /opt/ai-office/logs/nginx/access.log;
    error_log /opt/ai-office/logs/nginx/error.log;

    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;

        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
    }

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;

        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
    }
}

但是上面的配置要求宿主机能访问 127.0.0.1:3000127.0.0.1:8000。如果你的 compose 没有将端口映射出来,需要修改 docker-compose.yml

api 增加:

ports:
  - "127.0.0.1:8000:8000"

web 增加:

ports:
  - "127.0.0.1:3000:3000"

完整示例:

  api:
    image: your-registry/ai-office-api:latest
    container_name: ai-office-api
    restart: always
    env_file:
      - .env
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    volumes:
      - ./data/uploads:/app/uploads
      - ./data/vector:/app/vector
      - ./logs/app:/app/logs
    ports:
      - "127.0.0.1:8000:8000"
    networks:
      - ai-office-net

  web:
    image: your-registry/ai-office-web:latest
    container_name: ai-office-web
    restart: always
    env_file:
      - .env
    depends_on:
      - api
    ports:
      - "127.0.0.1:3000:3000"
    networks:
      - ai-office-net

重新启动:

cd /opt/ai-office
docker compose up -d

启用 Nginx 站点:

sudo ln -s /etc/nginx/sites-available/ai-office.conf /etc/nginx/sites-enabled/ai-office.conf

测试配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

十二、配置 HTTPS 证书

生产环境必须启用 HTTPS,尤其是 AI 办公系统通常会涉及企业文档、合同、制度、客户信息等敏感数据。

1. 安装 Certbot

sudo apt install -y certbot python3-certbot-nginx

2. 申请证书

请确保域名已经解析到服务器公网 IP。

sudo certbot --nginx -d ai.example.com

按照提示输入邮箱并同意协议即可。

3. 测试自动续期

sudo certbot renew --dry-run

查看证书定时任务:

systemctl list-timers | grep certbot

十三、配置防火墙

生产环境建议只开放必要端口。

允许 SSH:

sudo ufw allow 22/tcp

允许 HTTP:

sudo ufw allow 80/tcp

允许 HTTPS:

sudo ufw allow 443/tcp

启用防火墙:

sudo ufw enable

查看状态:

sudo ufw status

如果你的 SSH 端口不是 22,请先放行自定义端口,否则可能导致无法远程登录。例如:

sudo ufw allow 2222/tcp

十四、接入大模型服务

AI 办公的核心能力来自大模型。生产环境建议至少支持两类模型:

  1. 对话模型:用于问答、写作、总结、分析;
  2. Embedding 模型:用于知识库检索、文档向量化。

1. 使用 OpenAI 兼容接口

如果你的供应商支持 OpenAI-compatible API,可以在 .env 中配置:

OPENAI_API_KEY=sk-xxxx
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini
EMBEDDING_MODEL=text-embedding-3-small

如果使用 DeepSeek:

OPENAI_API_KEY=sk-xxxx
OPENAI_BASE_URL=https://api.deepseek.com
OPENAI_MODEL=deepseek-chat

如果使用通义千问兼容接口:

OPENAI_API_KEY=sk-xxxx
OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
OPENAI_MODEL=qwen-plus

修改后重启服务:

cd /opt/ai-office
docker compose restart api

十五、部署本地大模型,使用 Ollama

如果你希望在企业内网运行本地大模型,可以使用 Ollama。它适合快速部署本地模型服务,但生产高并发场景建议使用 vLLM、TGI 等推理框架。

1. 安装 Ollama

curl -fsSL https://ollama.com/install.sh | sh

2. 启动 Ollama

sudo systemctl enable ollama
sudo systemctl start ollama

3. 下载模型

例如下载 Qwen2.5:

ollama pull qwen2.5:7b

运行测试:

ollama run qwen2.5:7b

4. 配置应用使用 Ollama

如果应用支持 OpenAI 兼容接口,可使用 Ollama 的接口地址:

OPENAI_BASE_URL=http://host.docker.internal:11434/v1
OPENAI_API_KEY=ollama
OPENAI_MODEL=qwen2.5:7b

Linux Docker 默认不一定支持 host.docker.internal,可以在 docker-compose.ymlapi 服务中增加:

extra_hosts:
  - "host.docker.internal:host-gateway"

重启:

docker compose up -d

十六、文件上传与知识库配置

AI 办公系统通常会上传大量文档,例如:

  • Word 文档
  • PDF 文件
  • Excel 表格
  • PPT 文件
  • Markdown 文件
  • 企业制度文档
  • 产品手册
  • 合同模板
  • 客户 FAQ

生产环境需要注意以下几点:

1. 限制上传文件大小

Nginx 中已经配置:

client_max_body_size 100M;

应用环境变量中也建议配置:

MAX_UPLOAD_SIZE=100MB

2. 文件目录必须持久化

Compose 中已经将上传文件挂载到宿主机:

volumes:
  - ./data/uploads:/app/uploads

这样即使容器重建,上传文件仍然保留。

3. 向量数据必须持久化

volumes:
  - ./data/vector:/app/vector

知识库检索依赖向量数据,如果没有持久化,容器删除后知识库可能需要重新构建。


十七、日志管理

生产环境一定要关注日志,否则系统出现问题后很难定位。

1. 查看容器日志

docker compose logs -f api
docker compose logs -f web
docker compose logs -f postgres
docker compose logs -f redis

2. 查看 Nginx 日志

tail -f /opt/ai-office/logs/nginx/access.log
tail -f /opt/ai-office/logs/nginx/error.log

3. 限制 Docker 日志大小

编辑 Docker daemon 配置:

sudo vim /etc/docker/daemon.json

写入:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  }
}

重启 Docker:

sudo systemctl restart docker

重新启动应用:

cd /opt/ai-office
docker compose up -d

十八、数据库备份

AI 办公系统中最重要的数据通常包括:

  • 用户数据
  • 权限配置
  • 应用配置
  • 文档元数据
  • 对话记录
  • 知识库索引信息

因此 PostgreSQL 必须定期备份。

1. 手动备份 PostgreSQL

cd /opt/ai-office

docker compose exec postgres pg_dump \
  -U ai_office_user \
  -d ai_office \
  > backup/ai_office_$(date +%F_%H%M%S).sql

2. 压缩备份

gzip backup/ai_office_*.sql

3. 恢复数据库

先将备份文件解压:

gunzip backup/ai_office_2025-01-01_120000.sql.gz

恢复:

cat backup/ai_office_2025-01-01_120000.sql | \
docker compose exec -T postgres psql \
  -U ai_office_user \
  -d ai_office

4. 备份上传文件和向量数据

tar -czf backup/uploads_$(date +%F_%H%M%S).tar.gz data/uploads
tar -czf backup/vector_$(date +%F_%H%M%S).tar.gz data/vector

十九、自动备份脚本

创建脚本:

vim /opt/ai-office/backup.sh

写入:

#!/bin/bash

set -e

BASE_DIR="/opt/ai-office"
BACKUP_DIR="$BASE_DIR/backup"
DATE=$(date +%F_%H%M%S)

cd $BASE_DIR

echo "开始备份 PostgreSQL..."
docker compose exec -T postgres pg_dump \
  -U ai_office_user \
  -d ai_office \
  > $BACKUP_DIR/postgres_$DATE.sql

gzip $BACKUP_DIR/postgres_$DATE.sql

echo "开始备份上传文件..."
tar -czf $BACKUP_DIR/uploads_$DATE.tar.gz data/uploads

echo "开始备份向量数据..."
tar -czf $BACKUP_DIR/vector_$DATE.tar.gz data/vector

echo "删除 15 天前的旧备份..."
find $BACKUP_DIR -type f -mtime +15 -delete

echo "备份完成:$DATE"

添加执行权限:

chmod +x /opt/ai-office/backup.sh

手动测试:

/opt/ai-office/backup.sh

添加定时任务:

crontab -e

每天凌晨 2 点执行:

0 2 * * * /opt/ai-office/backup.sh >> /opt/ai-office/logs/backup.log 2>&1

二十、应用升级流程

生产环境升级不能直接覆盖,建议按以下流程:

1. 查看当前版本

docker compose images

2. 备份数据

/opt/ai-office/backup.sh

3. 拉取新镜像

cd /opt/ai-office
docker compose pull

4. 重启服务

docker compose up -d

5. 查看日志

docker compose logs -f api

6. 如果升级失败,回滚镜像

建议生产环境不要使用 latest,而是固定版本号,例如:

image: your-registry/ai-office-api:v1.2.3

回滚时修改为旧版本:

image: your-registry/ai-office-api:v1.2.2

然后执行:

docker compose up -d

二十一、安全加固建议

AI 办公系统往往会处理企业敏感信息,因此安全配置非常重要。

1. 不要暴露数据库端口

PostgreSQL 和 Redis 不应映射到公网。Compose 中只通过内部网络访问即可。

不要这样写:

ports:
  - "5432:5432"

也不要这样写:

ports:
  - "6379:6379"

2. 使用强密码

以下配置必须使用强密码:

POSTGRES_PASSWORD=强密码
REDIS_PASSWORD=强密码
JWT_SECRET=随机长字符串

3. 限制后台访问

如果有管理后台,可以在 Nginx 中限制 IP:

location /admin/ {
    allow 你的办公公网IP;
    deny all;

    proxy_pass http://127.0.0.1:3000;
}

4. 定期更新系统

sudo apt update && sudo apt upgrade -y

5. 禁止 root SSH 登录

编辑 SSH 配置:

sudo vim /etc/ssh/sshd_config

修改:

PermitRootLogin no
PasswordAuthentication no

重启 SSH:

sudo systemctl restart ssh

注意:关闭密码登录前,请确保你已经配置好 SSH Key,否则可能无法登录服务器。


二十二、常见问题排查

1. 容器启动失败

查看日志:

docker compose logs -f api

查看容器状态:

docker compose ps

2. Nginx 访问 502

常见原因是后端服务没有启动,或者端口没有映射。

检查端口:

ss -lntp | grep 3000
ss -lntp | grep 8000

检查 Nginx 配置:

sudo nginx -t

重启服务:

sudo systemctl reload nginx
docker compose restart

3. 上传大文件失败

检查 Nginx:

client_max_body_size 100M;

检查应用配置:

MAX_UPLOAD_SIZE=100MB

然后重载:

sudo systemctl reload nginx
docker compose restart api

4. 大模型调用失败

检查 API Key:

docker compose exec api env | grep OPENAI

查看日志:

docker compose logs -f api

测试网络:

curl https://api.openai.com/v1/models \
  -H "Authorization: Bearer 你的API_KEY"

如果使用国内模型厂商,需要确认 BASE_URL 是否正确。


二十三、生产环境检查清单

上线前建议逐项检查:

  • [ ] 域名已经解析到服务器
  • [ ] Docker 和 Docker Compose 已安装
  • [ ] .env 中密码已替换为强密码
  • [ ] PostgreSQL 数据目录已持久化
  • [ ] Redis 数据目录已持久化
  • [ ] 上传文件目录已持久化
  • [ ] 向量数据目录已持久化
  • [ ] Nginx 已配置反向代理
  • [ ] HTTPS 证书已申请成功
  • [ ] 防火墙只开放 22、80、443
  • [ ] 数据库和 Redis 未暴露公网
  • [ ] 已配置自动备份
  • [ ] 已配置日志大小限制
  • [ ] 已测试大模型 API 调用
  • [ ] 已创建管理员账号
  • [ ] 已完成一次恢复演练

二十四、总结

AI 办公系统从“本地体验”到“生产可用”,关键不在于能否启动一个服务,而在于是否具备稳定运行能力。生产环境部署至少要关注五件事:

  1. 服务编排:使用 Docker Compose 管理应用、数据库、缓存等组件;
  2. 数据持久化:上传文件、数据库、向量数据都不能放在临时容器中;
  3. 安全访问:通过 Nginx 统一入口,启用 HTTPS,不暴露数据库端口;
  4. 可维护性:日志、备份、升级、回滚都要有明确流程;
  5. 模型配置:根据业务场景选择外部 API 或本地大模型。

如果你的团队刚开始建设 AI 办公平台,建议先采用外部大模型 API,优先把文档问答、知识库检索、会议纪要、邮件写作、制度查询等高频场景跑通。等业务稳定后,再根据成本、安全和性能要求,逐步引入本地模型、私有化向量数据库、监控告警和多节点部署。

按照本文的流程,你可以快速搭建一套具备生产环境基础能力的 AI 办公系统,并且后续可以平滑扩展到更复杂的企业级架构。

目录结构
全文