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

AI 工具上线实战:从服务器配置到 HTTPS、备份与安全加固全流程指南

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

AI工具 生产环境部署指南|附完整命令

随着大模型、智能体(Agent)、RAG 知识库、AI 编码助手、AI 客服等应用逐渐进入企业生产环境,“把 AI 工具跑起来”已经不再是难点,真正的挑战在于:如何稳定、安全、可观测、可扩展地部署 AI 工具

很多团队在测试环境中可以很快完成 Demo,但一到生产环境就会遇到各种问题:

  • 服务偶发超时;
  • 大模型接口调用成本失控;
  • 向量数据库查询变慢;
  • 文件上传后解析失败;
  • 容器重启后数据丢失;
  • 日志分散,排查困难;
  • 没有鉴权,存在安全风险;
  • 并发一高,应用直接崩溃。

本文将以一个通用 AI 工具生产环境部署方案为例,讲解如何在 Linux 服务器上完成从环境准备、Docker 安装、项目部署、Nginx 反向代理、HTTPS 配置、进程守护、日志监控、安全加固到备份恢复的完整流程,并附带可直接执行的命令。

说明:本文适用于大多数 AI Web 工具、RAG 应用、Agent 平台、LLM API 封装服务、企业内部 AI 助手等场景。你可以根据自己的项目结构进行调整。


一、生产环境部署目标

在正式部署之前,我们需要明确生产环境的基本目标。

一个合格的 AI 工具生产部署方案,至少应该满足以下要求:

目标 说明
稳定运行 服务异常后能够自动重启
数据持久化 数据库、向量库、上传文件不能因容器重启丢失
安全访问 支持 HTTPS、鉴权、端口限制
易于维护 使用 Docker Compose 统一管理
可观测 有日志、监控、健康检查
易扩展 后续可以增加 Worker、GPU 服务、队列等
可备份 数据库和文件可以定期备份
成本可控 对模型调用、并发、缓存做限制

本文默认使用以下技术栈作为示例:

  • 操作系统:Ubuntu 22.04 LTS
  • 容器:Docker + Docker Compose
  • Web 服务:AI 应用后端
  • 反向代理:Nginx
  • HTTPS:Let’s Encrypt / Certbot
  • 数据库:PostgreSQL
  • 缓存:Redis
  • 向量数据库:Qdrant
  • 部署方式:Docker Compose
  • 域名示例:ai.example.com

二、服务器基础准备

1. 推荐服务器配置

不同类型的 AI 工具对服务器资源要求不同。如果只是调用外部大模型 API,例如 OpenAI、Claude、通义千问、DeepSeek、智谱等,服务器本身不需要特别强的 GPU。

调用外部模型 API 的推荐配置

场景 CPU 内存 磁盘
小型个人项目 2 核 4GB 40GB
企业内部工具 4 核 8GB 80GB
多用户知识库 8 核 16GB 200GB

本地部署模型的推荐配置

如果你需要部署本地大模型,例如 Qwen、Llama、DeepSeek-R1-Distill 等,则需要额外考虑 GPU。

场景 GPU 显存
7B 模型推理 NVIDIA T4 / RTX 3060 12GB+
14B 模型推理 RTX 3090 / 4090 24GB+
32B 以上模型 A100 / H100 40GB+

本文主要以“应用服务部署”为主,不强制依赖 GPU。


2. 更新系统软件包

登录服务器:

ssh root@your_server_ip

更新系统:

apt update && apt upgrade -y

安装常用工具:

apt install -y \
  curl \
  wget \
  git \
  vim \
  htop \
  unzip \
  net-tools \
  lsof \
  ca-certificates \
  gnupg \
  ufw

查看系统版本:

lsb_release -a

查看服务器资源:

free -h
df -h
nproc

三、创建部署用户

生产环境不建议长期使用 root 用户运行应用。我们可以创建一个专门的部署用户。

adduser deploy

将用户加入 sudo 组:

usermod -aG sudo deploy

切换到部署用户:

su - deploy

测试 sudo 权限:

sudo whoami

如果返回:

root

说明权限正常。


四、安装 Docker 和 Docker Compose

1. 卸载旧版本 Docker

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

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

更新索引:

sudo apt update

3. 安装 Docker

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

启动 Docker:

sudo systemctl enable docker
sudo systemctl start docker

查看 Docker 版本:

docker --version
docker compose version

4. 配置当前用户使用 Docker

sudo usermod -aG docker $USER

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

newgrp docker

测试 Docker:

docker run hello-world

五、规划项目目录

生产环境建议统一将项目放在 /opt/srv 目录下。

创建目录:

sudo mkdir -p /opt/ai-tools
sudo chown -R deploy:deploy /opt/ai-tools
cd /opt/ai-tools

推荐目录结构如下:

/opt/ai-tools
├── app
│   ├── Dockerfile
│   ├── package.json
│   ├── requirements.txt
│   └── src
├── docker-compose.yml
├── .env
├── data
│   ├── postgres
│   ├── redis
│   ├── qdrant
│   └── uploads
├── logs
└── backups

创建基础目录:

mkdir -p data/postgres data/redis data/qdrant data/uploads logs backups

六、编写环境变量文件

生产环境中,数据库密码、模型 API Key、JWT 密钥、对象存储密钥等敏感配置不应该写死在代码中,而应该放在 .env 文件里。

创建 .env

vim .env

写入示例内容:

# 应用配置
APP_NAME=AI Tools
APP_ENV=production
APP_PORT=3000
APP_BASE_URL=https://ai.example.com

# 数据库配置
POSTGRES_DB=aitools
POSTGRES_USER=aitools_user
POSTGRES_PASSWORD=change_this_strong_password

# Redis 配置
REDIS_PASSWORD=change_this_redis_password

# Qdrant 配置
QDRANT_API_KEY=change_this_qdrant_api_key

# JWT
JWT_SECRET=change_this_long_random_jwt_secret

# 大模型 API 配置
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://api.openai.com/v1
DEFAULT_MODEL=gpt-4o-mini

# 上传目录
UPLOAD_DIR=/app/uploads

# 日志级别
LOG_LEVEL=info

修改权限:

chmod 600 .env

生成随机密钥可以使用:

openssl rand -hex 32

例如:

openssl rand -hex 32
openssl rand -base64 48

七、编写 Docker Compose 文件

下面是一个适用于 AI 工具生产环境的 docker-compose.yml 示例,包含应用、PostgreSQL、Redis、Qdrant 四个服务。

创建文件:

vim docker-compose.yml

写入内容:

services:
  app:
    build:
      context: ./app
      dockerfile: Dockerfile
    container_name: ai-tools-app
    restart: always
    env_file:
      - .env
    ports:
      - "127.0.0.1:3000:3000"
    volumes:
      - ./data/uploads:/app/uploads
      - ./logs:/app/logs
    depends_on:
      - postgres
      - redis
      - qdrant
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 3

  postgres:
    image: postgres:16
    container_name: ai-tools-postgres
    restart: always
    env_file:
      - .env
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    ports:
      - "127.0.0.1:5432:5432"
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
      interval: 30s
      timeout: 10s
      retries: 3

  redis:
    image: redis:7
    container_name: ai-tools-redis
    restart: always
    command: >
      redis-server
      --requirepass ${REDIS_PASSWORD}
      --appendonly yes
    ports:
      - "127.0.0.1:6379:6379"
    volumes:
      - ./data/redis:/data
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
      interval: 30s
      timeout: 10s
      retries: 3

  qdrant:
    image: qdrant/qdrant:latest
    container_name: ai-tools-qdrant
    restart: always
    environment:
      QDRANT__SERVICE__API_KEY: ${QDRANT_API_KEY}
    ports:
      - "127.0.0.1:6333:6333"
      - "127.0.0.1:6334:6334"
    volumes:
      - ./data/qdrant:/qdrant/storage
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:6333/healthz"]
      interval: 30s
      timeout: 10s
      retries: 3

这里有几个关键点:

  1. restart: always:容器异常退出后自动重启;
  2. 数据目录都挂载到了宿主机;
  3. 服务端口只绑定到 127.0.0.1,避免数据库直接暴露到公网;
  4. 使用 healthcheck 检查服务健康状态;
  5. .env 统一管理生产配置。

八、准备应用 Dockerfile

如果你的 AI 工具是 Node.js 项目,可以使用下面的 Dockerfile。

进入应用目录:

mkdir -p app
cd app
vim Dockerfile

Node.js 示例:

FROM node:20-alpine

WORKDIR /app

RUN apk add --no-cache curl

COPY package*.json ./

RUN npm ci --omit=dev

COPY . .

EXPOSE 3000

CMD ["npm", "run", "start"]

如果你的 AI 工具是 Python FastAPI 项目,可以使用下面的 Dockerfile。

FROM python:3.11-slim

WORKDIR /app

RUN apt-get update && apt-get install -y \
    curl \
    gcc \
    && rm -rf /var/lib/apt/lists/*

COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 3000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "3000", "--workers", "2"]

如果是 FastAPI,推荐提供一个健康检查接口:

from fastapi import FastAPI

app = FastAPI()

@app.get("/health")
def health():
    return {"status": "ok"}

如果是 Express.js,也建议提供:

app.get('/health', (req, res) => {
  res.json({ status: 'ok' })
})

九、启动服务

回到项目根目录:

cd /opt/ai-tools

构建镜像:

docker compose build

启动服务:

docker compose up -d

查看容器状态:

docker compose ps

查看日志:

docker compose logs -f app

查看所有服务日志:

docker compose logs -f

进入应用容器:

docker exec -it ai-tools-app sh

进入 PostgreSQL:

docker exec -it ai-tools-postgres psql -U aitools_user -d aitools

测试 Redis:

docker exec -it ai-tools-redis redis-cli -a change_this_redis_password ping

如果返回:

PONG

说明 Redis 正常。

测试 Qdrant:

curl http://127.0.0.1:6333/healthz

测试应用:

curl http://127.0.0.1:3000/health

十、安装并配置 Nginx

生产环境通常不直接暴露应用端口,而是使用 Nginx 作为反向代理。

安装 Nginx:

sudo apt install -y nginx

启动并设置开机自启:

sudo systemctl enable nginx
sudo systemctl start nginx

创建站点配置:

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

写入:

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

    client_max_body_size 50M;

    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_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

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

启用站点:

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

删除默认配置:

sudo rm -f /etc/nginx/sites-enabled/default

检查 Nginx 配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

访问:

http://ai.example.com

如果域名解析正确,应该可以访问到应用。


十一、配置 HTTPS 证书

生产环境必须启用 HTTPS,尤其是 AI 工具通常涉及用户输入、企业文档、API Key、聊天记录等敏感数据。

安装 Certbot:

sudo apt install -y certbot python3-certbot-nginx

申请证书:

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

按提示填写邮箱并同意协议。完成后,Certbot 会自动修改 Nginx 配置。

检查自动续期:

sudo certbot renew --dry-run

查看证书状态:

sudo certbot certificates

重载 Nginx:

sudo systemctl reload nginx

访问:

https://ai.example.com

十二、配置防火墙

建议只开放 SSH、HTTP、HTTPS 端口。

启用 UFW:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

查看状态:

sudo ufw status

输出类似:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

如果 SSH 使用了非默认端口,例如 2222,应执行:

sudo ufw allow 2222/tcp

确认无误后再启用防火墙,避免把自己锁在服务器外。


十三、生产环境安全加固

1. 禁止数据库公网访问

在上面的 docker-compose.yml 中,数据库端口已经绑定到:

127.0.0.1:5432:5432

这表示 PostgreSQL 只能被本机访问,公网无法连接。

你可以检查监听端口:

sudo ss -tunlp

确认没有出现:

0.0.0.0:5432

2. 限制 Nginx 请求体大小

如果 AI 工具支持上传文档,建议限制上传文件大小。

client_max_body_size 50M;

如果文件解析服务较慢,适当增加超时时间:

proxy_read_timeout 300s;

3. 设置强密码和密钥

以下内容必须使用强随机值:

  • PostgreSQL 密码;
  • Redis 密码;
  • JWT Secret;
  • Qdrant API Key;
  • 管理员密码;
  • 大模型 API Key。

生成随机值:

openssl rand -hex 32

4. 不要提交 .env

在项目仓库中添加 .gitignore

vim .gitignore

写入:

.env
data/
logs/
backups/
node_modules/
__pycache__/

5. 配置 SSH 安全

编辑 SSH 配置:

sudo vim /etc/ssh/sshd_config

建议配置:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

重启 SSH:

sudo systemctl restart ssh

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

生成本地 SSH Key:

ssh-keygen -t ed25519 -C "deploy@ai-tools"

上传公钥:

ssh-copy-id deploy@your_server_ip

十四、日志管理

Docker 默认日志如果不限制,长时间运行后可能占满磁盘。建议配置 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-tools
docker compose up -d

查看日志占用:

docker system df

查看应用日志:

docker compose logs -f --tail=200 app

如果要导出最近 1000 行日志:

docker compose logs --tail=1000 app > logs/app-latest.log

十五、数据库备份与恢复

生产环境必须有备份策略,尤其是 AI 知识库类工具,通常包含:

  • 用户数据;
  • 聊天记录;
  • 文档元数据;
  • 向量索引;
  • 上传文件;
  • 系统配置。

1. PostgreSQL 手动备份

cd /opt/ai-tools
docker exec ai-tools-postgres pg_dump \
  -U aitools_user \
  -d aitools \
  > backups/postgres_$(date +%F_%H-%M-%S).sql

压缩备份:

gzip backups/postgres_*.sql

2. PostgreSQL 恢复

先将 SQL 文件解压:

gunzip backups/postgres_2025-01-01_12-00-00.sql.gz

恢复:

cat backups/postgres_2025-01-01_12-00-00.sql | \
docker exec -i ai-tools-postgres psql -U aitools_user -d aitools

3. 备份上传文件

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

4. 备份 Qdrant 数据

如果 Qdrant 数据量不大,可以直接备份挂载目录:

tar -czf backups/qdrant_$(date +%F_%H-%M-%S).tar.gz data/qdrant

5. 编写自动备份脚本

创建脚本:

vim backup.sh

写入:

#!/bin/bash

set -e

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

cd "$BASE_DIR"

mkdir -p "$BACKUP_DIR"

echo "开始备份 PostgreSQL..."
docker exec ai-tools-postgres pg_dump \
  -U aitools_user \
  -d aitools \
  > "$BACKUP_DIR/postgres_$DATE.sql"

gzip "$BACKUP_DIR/postgres_$DATE.sql"

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

echo "开始备份 qdrant..."
tar -czf "$BACKUP_DIR/qdrant_$DATE.tar.gz" data/qdrant

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

echo "备份完成:$DATE"

授权:

chmod +x backup.sh

测试执行:

./backup.sh

添加定时任务:

crontab -e

每天凌晨 2 点备份:

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

十六、应用更新与回滚

1. 更新代码

如果项目来自 Git 仓库:

cd /opt/ai-tools/app
git pull

回到部署目录:

cd /opt/ai-tools

重新构建并启动:

docker compose build app
docker compose up -d app

查看状态:

docker compose ps
docker compose logs -f --tail=200 app

2. 零停机优化思路

单机 Docker Compose 很难做到严格意义的零停机,但可以通过以下方式降低影响:

  • 使用 Nginx 代理多个应用实例;
  • 应用启动前先健康检查;
  • 数据库迁移向后兼容;
  • 避免在高峰期发布;
  • 发布前先备份数据库;
  • 使用蓝绿部署或滚动发布。

3. 快速回滚

如果使用 Git,可以查看提交记录:

cd /opt/ai-tools/app
git log --oneline

回退到指定版本:

git checkout 

重新构建:

cd /opt/ai-tools
docker compose build app
docker compose up -d app

如果需要回到主分支:

cd /opt/ai-tools/app
git checkout main

十七、性能优化建议

AI 工具的性能瓶颈通常不只在 Web 服务,还可能出现在大模型接口、Embedding、向量检索、文件解析、数据库查询等环节。

1. 增加应用 Worker

如果是 Python FastAPI,可以增加 Uvicorn Worker:

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "3000", "--workers", "4"]

如果是 Gunicorn:

gunicorn main:app \
  -k uvicorn.workers.UvicornWorker \
  -w 4 \
  -b 0.0.0.0:3000

2. 使用 Redis 缓存

适合缓存:

  • 用户会话;
  • 模型配置;
  • 热门知识库查询结果;
  • 重复 Embedding 结果;
  • API 限流计数。

3. 控制大模型并发

外部大模型 API 通常有速率限制。建议在应用层做:

  • 每用户请求频率限制;
  • 每 IP 请求频率限制;
  • 队列排队;
  • 超时控制;
  • 失败重试;
  • 熔断降级。

4. 配置 Nginx 限流

在 Nginx 主配置中加入:

sudo vim /etc/nginx/nginx.conf

http 块中加入:

limit_req_zone $binary_remote_addr zone=ai_limit:10m rate=10r/s;

站点配置中加入:

location / {
    limit_req zone=ai_limit burst=20 nodelay;

    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;
}

检查并重载:

sudo nginx -t
sudo systemctl reload nginx

十八、监控与排障命令

1. 查看容器状态

docker compose ps

2. 查看资源占用

docker stats

3. 查看系统资源

htop
free -h
df -h

4. 查看端口监听

sudo ss -tunlp

5. 查看 Nginx 日志

sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

6. 查看应用日志

docker compose logs -f app

7. 查看数据库日志

docker compose logs -f postgres

8. 重启单个服务

docker compose restart app

9. 重启全部服务

docker compose restart

10. 查看最近异常日志

docker compose logs --tail=500 app | grep -i error

十九、常见问题与解决方案

问题 1:Nginx 返回 502 Bad Gateway

排查应用是否正常:

docker compose ps
docker compose logs -f app
curl http://127.0.0.1:3000/health

如果应用没有启动,查看容器日志。常见原因包括:

  • 环境变量缺失;
  • 数据库连接失败;
  • 端口不一致;
  • 应用启动命令错误;
  • 依赖安装失败。

问题 2:上传大文件失败

检查 Nginx 配置:

client_max_body_size 50M;

修改后重载:

sudo nginx -t
sudo systemctl reload nginx

同时确认应用本身是否限制上传大小。


问题 3:HTTPS 证书申请失败

检查域名解析:

ping ai.example.com

检查 80 端口是否开放:

sudo ufw status

检查 Nginx 是否正常:

sudo nginx -t
sudo systemctl status nginx

重新申请:

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

问题 4:磁盘空间占满

查看磁盘:

df -h

查看 Docker 占用:

docker system df

清理未使用镜像:

docker image prune -a

清理未使用容器、网络、缓存:

docker system prune

注意:清理前确认不会删除重要数据。不要随意删除 Docker volume 或项目的 data 目录。


问题 5:大模型接口响应慢

可以从以下方向优化:

  • 调整模型,例如使用更快的轻量模型;
  • 增加流式输出;
  • 开启缓存;
  • 降低上下文长度;
  • 对文档分块做优化;
  • 减少无效工具调用;
  • 对用户请求做队列化;
  • 设置合理超时和重试策略。

二十、生产部署检查清单

上线前建议逐项检查:

  • [ ] 域名已解析到服务器;
  • [ ] Docker 和 Docker Compose 已安装;
  • [ ] .env 使用强密码且权限为 600
  • [ ] 数据库未暴露到公网;
  • [ ] Redis 未暴露到公网;
  • [ ] Qdrant 未暴露到公网;
  • [ ] Nginx 配置通过 nginx -t
  • [ ] HTTPS 证书配置成功;
  • [ ] 防火墙只开放必要端口;
  • [ ] 应用有健康检查接口;
  • [ ] 容器配置了自动重启;
  • [ ] Docker 日志配置了轮转;
  • [ ] 数据库和上传文件已配置备份;
  • [ ] 备份脚本已测试;
  • [ ] 模型 API Key 未提交到代码仓库;
  • [ ] 管理后台已设置强密码;
  • [ ] 已配置限流或基础防刷;
  • [ ] 已准备回滚方案;
  • [ ] 已记录关键运维命令。

二十一、推荐的一键启动命令汇总

如果你已经完成配置,可以使用以下命令快速部署:

cd /opt/ai-tools
docker compose build
docker compose up -d
docker compose ps
docker compose logs -f --tail=200 app

更新应用:

cd /opt/ai-tools/app
git pull

cd /opt/ai-tools
docker compose build app
docker compose up -d app
docker compose logs -f --tail=200 app

重启应用:

cd /opt/ai-tools
docker compose restart app

停止全部服务:

cd /opt/ai-tools
docker compose down

启动全部服务:

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

查看资源:

docker stats

备份数据:

cd /opt/ai-tools
./backup.sh

检查 Nginx:

sudo nginx -t
sudo systemctl reload nginx

检查证书:

sudo certbot certificates
sudo certbot renew --dry-run

结语

AI 工具的生产环境部署并不是简单地执行一条启动命令。真正稳定的生产环境,需要同时考虑服务运行、数据持久化、网络安全、HTTPS、日志、备份、限流、监控、回滚和成本控制

对于个人项目来说,Docker Compose + Nginx + HTTPS 已经足够支撑大多数场景;对于企业级 AI 平台,则可以在此基础上继续演进到 Kubernetes、对象存储、消息队列、分布式向量数据库、统一监控告警、灰度发布和多模型网关。

如果你刚开始部署 AI 工具,建议先从本文这套方案落地:
先保证服务稳定上线,再逐步补齐监控、备份、安全和扩展能力。

目录结构
全文