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

从 0 到上线:Dify 生产环境部署避坑实战指南

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

Dify 生产环境部署指南|零基础可学

随着大模型应用的普及,越来越多团队开始使用 Dify 来快速搭建 AI 应用、智能客服、知识库问答、Agent 工作流以及企业内部效率工具。Dify 的优势在于:开源、上手快、功能完整,并且支持可视化编排应用,让不具备深度算法背景的开发者也能快速构建 AI 产品。

不过,很多人在本地体验 Dify 时比较顺利,一旦准备部署到生产环境,就会遇到各种问题:服务器怎么选?域名怎么配置?Docker 怎么安装?HTTPS 怎么启用?数据库、对象存储、向量数据库如何处理?如何备份?如何保证服务稳定?

本文将以“零基础可学”为目标,带你从服务器准备开始,一步步完成 Dify 的生产环境部署,并补充生产环境中必须注意的安全、备份、监控和维护建议。


一、Dify 是什么?

Dify 是一个开源的大语言模型应用开发平台,支持快速构建以下类型的 AI 应用:

  • AI 聊天助手
  • 企业知识库问答系统
  • 工作流自动化应用
  • Agent 智能体
  • 文本生成工具
  • 多模型统一管理平台
  • 面向业务人员的低代码 AI 应用平台

它内置了应用编排、Prompt 管理、知识库、向量检索、模型供应商接入、API 发布、权限管理等能力,非常适合企业快速落地 AI 应用。


二、生产环境部署前的准备

在正式部署之前,我们需要先准备好服务器、域名、基础软件环境和必要的账号信息。


三、服务器配置建议

Dify 本身由多个服务组成,例如:

  • Web 前端
  • API 后端
  • Worker 异步任务
  • PostgreSQL 数据库
  • Redis 缓存
  • 向量数据库
  • Sandbox 代码执行环境
  • Nginx 反向代理

如果只是个人测试,低配置服务器也能运行。但如果用于生产环境,建议配置不要太低。

1. 最低配置

适合个人学习、小规模测试:

项目 配置
CPU 2 核
内存 4GB
硬盘 40GB
系统 Ubuntu 22.04 LTS
部署方式 Docker Compose

注意:4GB 内存可以跑起来,但生产环境不推荐,服务较多时容易出现内存不足。

2. 推荐配置

适合小团队或企业初期使用:

项目 配置
CPU 4 核及以上
内存 8GB 及以上
硬盘 100GB SSD 及以上
系统 Ubuntu 22.04 LTS
部署方式 Docker Compose
域名 建议准备一个正式域名
HTTPS 必须开启

3. 较大规模生产配置

适合访问量较高或知识库数据较多的场景:

项目 建议
API 服务 独立服务器或容器编排
数据库 使用云数据库 PostgreSQL
Redis 使用云 Redis
向量数据库 使用独立向量数据库服务
文件存储 使用 S3、MinIO 或云对象存储
网关 使用 Nginx / SLB / Ingress
部署方式 Docker Compose / Kubernetes

对于零基础用户,建议先使用单机 Docker Compose 部署,等业务稳定后再逐步拆分数据库、Redis 和对象存储。


四、系统环境选择

本文推荐使用:

Ubuntu 22.04 LTS

原因如下:

  1. 社区资料多,遇到问题容易搜索;
  2. Docker 支持好;
  3. 长期支持版本,稳定性较好;
  4. 云服务器厂商普遍支持。

如果你使用的是 CentOS、Debian 或其他 Linux 发行版,也可以部署,但命令可能略有差异。


五、域名和端口规划

生产环境建议使用域名访问,而不是直接使用服务器 IP。

例如:

https://dify.example.com

你需要提前完成以下准备:

  1. 购买或准备一个域名;
  2. 将域名解析到服务器公网 IP;
  3. 开放服务器安全组端口;
  4. 配置 HTTPS 证书。

常用端口如下:

端口 用途
22 SSH 登录服务器
80 HTTP 访问,用于证书申请和跳转
443 HTTPS 访问
3000 Dify Web,通常不直接暴露
5001 Dify API,通常不直接暴露

生产环境中,建议只对外开放:

22、80、443

其他内部服务端口不要直接暴露到公网。


六、安装 Docker 和 Docker Compose

Dify 官方推荐使用 Docker Compose 部署。Docker 可以理解为应用运行的“容器环境”,它能把复杂依赖封装起来,避免手动安装大量组件。

1. 更新系统软件包

登录服务器后执行:

sudo apt update
sudo apt upgrade -y

2. 安装基础工具

sudo apt install -y ca-certificates curl gnupg lsb-release git

3. 安装 Docker

执行以下命令安装 Docker:

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

安装完成后,查看 Docker 版本:

docker --version

如果能看到版本号,说明 Docker 安装成功。

4. 设置 Docker 开机自启

sudo systemctl enable docker
sudo systemctl start docker

5. 安装 Docker Compose

新版本 Docker 一般已经内置 Compose 插件,可以执行:

docker compose version

如果能看到版本号,说明可用。


七、下载 Dify 源码

进入你希望部署应用的目录,例如:

cd /opt

拉取 Dify 项目:

sudo git clone https://github.com/langgenius/dify.git

进入 Docker 部署目录:

cd /opt/dify/docker

查看目录文件:

ls

你通常会看到类似文件:

docker-compose.yaml
.env.example
nginx
volumes

八、配置环境变量

Dify 的 Docker 部署依赖 .env 文件。一般会提供 .env.example 示例文件,我们需要复制一份并修改。

cp .env.example .env

然后编辑:

nano .env

如果你不熟悉 nano,可以记住:

  • 保存:Ctrl + O
  • 回车确认
  • 退出:Ctrl + X

1. 修改访问地址

生产环境中,最重要的是配置 Dify 对外访问地址。例如你的域名是:

https://dify.example.com

需要重点检查类似配置项:

CONSOLE_WEB_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com

不同版本 Dify 的环境变量名称可能略有差异,请以你当前 .env.example 文件为准。

2. 修改密钥

生产环境必须修改默认密钥,例如:

SECRET_KEY=请替换为足够复杂的随机字符串

你可以使用以下命令生成随机字符串:

openssl rand -base64 42

将输出结果复制到 .env 中。

3. 数据库密码

如果 .env 中存在 PostgreSQL、Redis 等默认密码,也建议修改,例如:

POSTGRES_PASSWORD=请替换为复杂密码
REDIS_PASSWORD=请替换为复杂密码

生产环境不要使用默认密码,也不要使用弱密码。

4. 文件存储配置

Dify 支持不同的文件存储方式。单机部署时,可以先使用本地存储。但生产环境更推荐使用对象存储,例如:

  • AWS S3
  • 阿里云 OSS
  • 腾讯云 COS
  • MinIO

如果初期只是小规模使用,可以先采用本地存储,后期再迁移到对象存储。


九、启动 Dify 服务

/opt/dify/docker 目录下执行:

docker compose up -d

参数说明:

  • up:启动服务;
  • -d:后台运行。

查看容器状态:

docker compose ps

如果所有服务状态都是 runninghealthy,说明启动正常。

查看日志:

docker compose logs -f

如果只想查看某个服务日志,例如 API:

docker compose logs -f api

十、初始化访问 Dify

如果你暂时没有配置 Nginx 和 HTTPS,可以先通过服务器 IP 和端口访问。例如:

http://服务器IP

但生产环境不建议长期使用 HTTP。

首次访问 Dify 时,系统会引导你创建管理员账号。请注意:

  1. 使用安全邮箱;
  2. 设置强密码;
  3. 不要多人共用管理员账号;
  4. 管理员账号创建后妥善保存。

十一、配置 Nginx 反向代理

虽然 Dify Docker 中通常已经包含 Nginx 服务,但在生产环境里,你可能会选择使用宿主机 Nginx 或云厂商负载均衡进行统一代理。

下面以宿主机 Nginx 为例。

1. 安装 Nginx

sudo apt install -y nginx

启动并设置开机自启:

sudo systemctl enable nginx
sudo systemctl start nginx

2. 新建站点配置

sudo nano /etc/nginx/sites-available/dify.conf

写入示例配置:

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

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:80;
        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_pass 需要根据你实际 Docker 暴露端口调整。如果 Dify 自带 Nginx 已经绑定了宿主机 80 端口,那么宿主机再安装 Nginx 会产生端口冲突。此时可以选择只使用 Dify 自带 Nginx,或者修改 Docker 映射端口。

启用配置:

sudo ln -s /etc/nginx/sites-available/dify.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

十二、配置 HTTPS 证书

生产环境强烈建议使用 HTTPS。这里使用 Let’s Encrypt 免费证书。

1. 安装 Certbot

sudo apt install -y certbot python3-certbot-nginx

2. 申请证书

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

按照提示输入邮箱、同意协议,Certbot 会自动修改 Nginx 配置并启用 HTTPS。

3. 测试自动续期

sudo certbot renew --dry-run

如果没有报错,说明自动续期正常。


十三、接入大模型供应商

Dify 本身不是大模型,它是大模型应用开发平台。因此部署完成后,你还需要在后台配置模型供应商。

常见供应商包括:

  • OpenAI
  • Azure OpenAI
  • Anthropic
  • Google Gemini
  • 阿里云通义千问
  • 百度文心一言
  • 智谱 GLM
  • DeepSeek
  • Ollama 本地模型
  • OpenAI API 兼容服务

配置步骤通常是:

  1. 登录 Dify 控制台;
  2. 进入“设置”或“模型供应商”;
  3. 选择对应模型平台;
  4. 填写 API Key;
  5. 选择默认模型;
  6. 测试是否可用。

如果你在国内服务器部署,需要注意访问部分海外模型 API 可能存在网络不稳定问题。生产环境建议选择网络稳定、计费透明、服务可用性较高的模型供应商。


十四、配置知识库和向量数据库

Dify 的知识库能力依赖向量检索。Docker Compose 默认通常会包含一个向量数据库服务,例如 Weaviate、Qdrant、Milvus 或其他可选方案,具体取决于版本配置。

生产环境中你需要关注:

  1. 知识库文档数量;
  2. 文档切片大小;
  3. Embedding 模型选择;
  4. 向量数据库存储空间;
  5. 检索召回质量;
  6. 数据备份方式。

如果知识库数据较少,可以先使用默认配置。如果知识库数据越来越多,建议将向量数据库独立部署,避免与 Dify 主服务争抢资源。


十五、生产环境安全建议

Dify 一旦部署到公网,就必须重视安全问题。

1. 不暴露内部端口

不要将以下服务端口直接暴露到公网:

  • PostgreSQL
  • Redis
  • 向量数据库
  • Sandbox
  • API 内部端口

公网只开放必要端口:

22、80、443

2. 使用强密码

包括:

  • 服务器 SSH 密码或密钥;
  • Dify 管理员密码;
  • PostgreSQL 密码;
  • Redis 密码;
  • 对象存储密钥;
  • 模型供应商 API Key。

3. 使用 SSH 密钥登录

建议禁用密码登录,仅允许密钥登录。

编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

设置:

PasswordAuthentication no
PermitRootLogin no

重启 SSH:

sudo systemctl restart ssh

操作前务必确认你的 SSH 密钥可以正常登录,否则可能把自己锁在服务器外。

4. 定期更新系统和镜像

sudo apt update && sudo apt upgrade -y

更新 Dify:

cd /opt/dify
git pull
cd docker
docker compose pull
docker compose up -d

更新前建议先备份。


十六、数据备份方案

生产环境中,备份比部署更重要。很多人只关注“能不能跑起来”,却忽略“数据丢了怎么办”。

Dify 需要重点备份:

  1. PostgreSQL 数据库;
  2. 上传文件;
  3. 向量数据库数据;
  4. .env 配置文件;
  5. Nginx 配置;
  6. 对象存储数据;
  7. 自定义插件或扩展配置。

1. 备份 PostgreSQL

可以使用 pg_dump

docker exec -t docker-db-1 pg_dump -U postgres dify > dify_backup.sql

容器名称可能不同,你可以通过以下命令查看:

docker ps

2. 备份 volumes 目录

在 Dify Docker 目录下,通常会有 volumes 目录:

cd /opt/dify/docker
tar -czvf dify_volumes_backup.tar.gz volumes

3. 备份环境配置

cp .env .env.backup

4. 建议备份策略

类型 频率
数据库 每天
文件数据 每天或每周
配置文件 每次修改后
全量备份 每周
异地备份 强烈建议

不要只把备份放在同一台服务器上。如果服务器磁盘损坏,本地备份也会一起丢失。建议同步到对象存储或另一台服务器。


十七、日志与监控

生产环境不能只看服务是否启动,还要关注运行状态。

1. 查看容器状态

docker compose ps

2. 查看资源占用

docker stats

3. 查看服务日志

docker compose logs -f

4. 查看磁盘空间

df -h

5. 查看内存使用

free -h

如果磁盘满了,服务可能会异常,数据库也可能损坏。因此建议配置磁盘告警。

生产环境可以接入以下监控方案:

  • Prometheus + Grafana
  • Zabbix
  • Uptime Kuma
  • 云厂商监控
  • 日志采集系统

对于零基础用户,建议先部署 Uptime Kuma,用来监控 Dify 域名是否可访问。


十八、常见问题排查

1. 访问不了页面

检查以下内容:

docker compose ps

确认容器是否正常运行。

检查服务器安全组是否开放 80 和 443。

检查域名是否解析正确:

ping dify.example.com

检查 Nginx 配置:

sudo nginx -t

2. 容器启动失败

查看日志:

docker compose logs -f

常见原因包括:

  • 端口被占用;
  • 内存不足;
  • .env 配置错误;
  • 镜像拉取失败;
  • 数据库初始化失败。

3. 登录后页面接口报错

重点检查:

  • CONSOLE_WEB_URL
  • APP_WEB_URL
  • SERVICE_API_URL
  • HTTPS 配置
  • 反向代理 Header
  • API 服务日志

4. 上传文件失败

可能原因:

  • 文件大小超过 Nginx 限制;
  • 存储目录权限错误;
  • 对象存储配置错误;
  • 磁盘空间不足。

可以在 Nginx 中设置:

client_max_body_size 100M;

5. 模型调用失败

检查:

  • API Key 是否正确;
  • 模型供应商余额是否充足;
  • 服务器是否能访问模型 API;
  • 模型名称是否填写正确;
  • 是否触发供应商限流。

十九、升级 Dify 的正确姿势

Dify 更新较快,升级时不要直接盲目执行命令。建议流程如下:

1. 阅读版本说明

先查看官方 Release Notes,确认是否有破坏性变更。

2. 备份数据

至少备份:

  • PostgreSQL;
  • volumes;
  • .env
  • Nginx 配置。

3. 拉取新代码

cd /opt/dify
git pull

4. 更新镜像并重启

cd docker
docker compose pull
docker compose up -d

5. 检查服务状态

docker compose ps
docker compose logs -f

6. 验证业务功能

检查:

  • 登录是否正常;
  • 应用是否可访问;
  • 知识库检索是否正常;
  • 模型调用是否正常;
  • API 是否正常返回。

二十、生产环境部署清单

正式上线前,可以按照下面的清单逐项检查。

基础环境

  • [ ] 服务器配置满足需求
  • [ ] Docker 安装完成
  • [ ] Docker Compose 可用
  • [ ] 域名解析正确
  • [ ] 安全组开放 80、443
  • [ ] SSH 登录安全配置完成

Dify 配置

  • [ ] .env 已从示例文件复制
  • [ ] 访问域名已配置
  • [ ] SECRET_KEY 已修改
  • [ ] 数据库密码已修改
  • [ ] Redis 密码已修改
  • [ ] 文件存储方案已确认
  • [ ] 模型供应商已配置

安全配置

  • [ ] 已启用 HTTPS
  • [ ] 内部端口未暴露公网
  • [ ] 管理员密码足够复杂
  • [ ] API Key 妥善保存
  • [ ] 服务器防火墙配置合理

运维配置

  • [ ] 数据库备份已配置
  • [ ] 文件备份已配置
  • [ ] .env 已备份
  • [ ] 日志查看方式明确
  • [ ] 监控告警已配置
  • [ ] 升级流程已明确

二十一、单机部署与架构拆分建议

很多团队初期会选择单机部署,这是合理的,因为成本低、维护简单、上线快。但随着使用量增长,单机部署会遇到瓶颈。

适合单机部署的场景

  • 内部小团队使用;
  • 日访问量不高;
  • 知识库数据量不大;
  • 预算有限;
  • 技术团队人手较少。

建议拆分的场景

当出现以下情况时,可以考虑拆分:

  • 数据库 CPU 或磁盘占用较高;
  • Redis 经常出现连接异常;
  • 上传文件越来越多;
  • 知识库文档数量明显增加;
  • 多人同时使用响应变慢;
  • 服务不可接受长时间中断。

拆分顺序建议

一般可以按照以下顺序拆分:

  1. PostgreSQL 迁移到云数据库;
  2. 文件存储迁移到对象存储;
  3. Redis 迁移到云 Redis;
  4. 向量数据库独立部署;
  5. API、Worker 水平扩展;
  6. 使用 Kubernetes 或容器平台管理。

二十二、给零基础用户的实用建议

如果你是第一次部署生产环境,不建议一开始就追求复杂架构。你可以按以下路线学习:

  1. 先在本地或测试服务器跑通 Dify;
  2. 学会修改 .env
  3. 学会查看 Docker 日志;
  4. 学会配置域名和 HTTPS;
  5. 学会备份数据库和文件;
  6. 再考虑对象存储、云数据库和监控;
  7. 最后再学习 Kubernetes 等高级部署方式。

生产环境最重要的不是“部署得多高级”,而是:

  • 能稳定运行;
  • 出问题能定位;
  • 数据不会丢;
  • 密钥不会泄露;
  • 升级可以回滚;
  • 成本可控。

二十三、总结

Dify 是一个非常适合企业和开发者快速构建 AI 应用的平台。通过 Docker Compose,我们可以在一台 Ubuntu 服务器上较快完成生产环境部署。但生产环境和本地测试不同,除了“能跑起来”,还必须关注域名、HTTPS、安全、备份、日志、监控和升级。

对于零基础用户,推荐从单机部署开始,先掌握 Docker、环境变量、Nginx、HTTPS 和备份这些基础能力。等业务量增长后,再逐步将 PostgreSQL、Redis、向量数据库和文件存储拆分出去,形成更稳定的生产架构。

最后给出一句建议:上线前一定要备份,上线后一定要监控,升级前一定要看版本说明。 只要遵循这个原则,你的 Dify 生产环境就会更加稳定、安全、可维护。

目录结构
全文