掘金 人工智能 07月11日 10:49
dify项目结构说明与win11本地部署
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文分享了在Windows 11系统上部署Dify项目的经验,包括项目结构、中间件依赖、API和Web服务的配置与启动,以及遇到的问题和解决方案。文章详细介绍了使用uv管理Python环境,配置.env文件,进行数据库迁移,并解决了Web服务在Win11上启动失败的问题,最终成功运行。同时,文章还提到了Node.js和Pnpm的版本要求,以及缓存目录的修改建议。

🔑 项目结构:Dify项目包含api、web、sdks、docker等多个模块,为后续的开发和部署提供了清晰的组织结构。

⚙️ 环境配置:详细说明了在Win11上配置Dify开发环境的步骤,包括使用uv安装Python环境、配置.env文件、安装依赖、设置Python解释器以及执行数据库迁移等。

💻 Web服务启动:在Win11上启动Web服务时遇到问题,通过修改启动脚本,使用fs-extra解决跨操作系统差异性问题,最终成功启动Web服务。

后续会深度研究下dify,智能体的应用要更广泛一些。我也会根据自己的需求,在dify中中的功能进行增强。

项目结构

    api - 后端API服务web - 前端Web应用sdks - SDK库docker - Docker相关配置dev - 开发相关工具,主要是同步脚本等images - 项目说明的的图片资源

我先让codeBuddy帮我分析下这个工程,看下如何运行。

中间件依赖

dify的启动,一来一堆中间件

cd docker# 拷贝中间件的环境变量cp middleware.env.example middleware.env# 我在docker-compose.middleware.yaml 第一行增加name: 'dify-middleware'# 挂在PGDATA_HOST_VOLUMEREDIS_HOST_VOLUMEWEAVIATE_HOST_VOLUME# 启动docker compose -f docker-compose.middleware.yaml up -d

api项目

uv环境安装

从1.3开始dify的python环境使用uv管理了。

#安装uvpip install uv# 安装python 3.12uv python install 3.12

准备配置文件

cd dify/api# 复制出一个.envcp .\.env.example .env

替换SECRET_KEY

生成随机密钥并替换 .env 文件中的 SECRET_KEY 值

#替换秘钥,官方的是linux版本,我改成了win$key = [Convert]::ToBase64String((1..42 | ForEach-Object { Get-Random -Maximum 256 }))(Get-Content .env) -replace '^SECRET_KEY=.*', "SECRET_KEY=$key" | Set-Content temp_envMove-Item temp_env .env -Force

安装依赖

# 同步uv.lock中的一来到本地uv sync 

设置python interpreter

执行数据库迁移

执行数据库迁移到最新版本:

uv run flask db upgrade

启动api服务

# 在dify目录下执行该命令uv --directory api run  flask run --host 0.0.0.0 --port=5001 --debug# 等价于 进入api目录后执行uv run flask run --host 0.0.0.0 --port=5001 --debug

命令解释

启动worker服务

# linux 或macuv run celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace# win11uv run celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail,ops_trace --loglevel INFO

需要注意的是,在.env中LOG_TZ默认时区为 UTC,改成中国地区LOG_TZ=Asia/Shanghai

前端项目

dify要求前端的环境是:Node.js v22 + Pnpm v10

看了下我本地的,版本比官方的要低

PS C:\Users\yxkong> node -vv20.15.1PS C:\Users\yxkong> pnpm -v9.15.4

直接执行报:

pnpm install --frozen-lockfile  WARN  Unsupported engine: wanted: {"node":">=v22.11.0"} (current: {"node":"v20.15.1","pnpm":"9.15.4"}) Lockfile is up to date, resolution step is skipped Packages: +1781 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ╭───────────────────────────────────────────────────────────────────╮ │ │ │ Update available! 9.15.4 → 10.11.1. │ │ Changelog: https://github.com/pnpm/pnpm/releases/tag/v10.11.1 │ │ Run "pnpm add -g pnpm" to update. │ │ │ ╰───────────────────────────────────────────────────────────────────╯

先升级下,以前用mac的时候,很简单,直接执行下面的命令即可。

npm install -g n

在win上没法执行,直接从官网下载一个覆盖安装。nodejs.org/zh-cn/downl…

nodejs.org/en/download

pnpm安装升级到是简单。

# 升级 pnpm 到最新版npm install -g pnpm@latest# 验证版本pnpm -v10.11.1

建议大家把缓存目录都改下,要不然c盘越来越大。

安装依赖

pnpm install --frozen-lockfile

准备配置

在web目录下,直接从.env.example复制出一个.env文件,正常不用改

cp .env.example .env

构建web服务

直接执行pnpm build即可

(dify-api) PS E:\ai\code\dify\web> pnpm build> dify-web@1.4.1 build E:\ai\code\dify\web> next build   ▲ Next.js 15.2.3   - Environments: .env   Creating an optimized production build ... ✓ Compiled successfully   Skipping validation of types   Skipping linting ✓ Collecting page data ✓ Generating static pages (26/26) ✓ Collecting build traces ✓ Finalizing page optimization

启动web服务

在linux或mac中,启动直接执行pnpm start 即可,在win中报错

(dify-api) PS E:\ai\code\dify\web> pnpm start> dify-web@1.4.1 start E:\ai\code\dify\web> cp -r .next/static .next/standalone/.next/static && cp -r public .next/standalone/public && cross-env PORT=$npm_config_port HOSTNAME=$npm_config_host node .next/standalone/server.js      0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487AllocationBase 0x0, BaseAddress 0x71690000, RegionSize 0x80000, State 0x10000C:\Users\yxkong\scoop\apps\coreutils\current\bin\cp.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0 ELIFECYCLE  Command failed with exit code 1.

win11上无法执行,我直接让codebuddy给我创建了一个兼容模式

关键点:

cd web && pnpm add fs-extra@11 --save-exact
const fs = require('fs-extra');  const { spawn } = require('child_process');    async function main() {    try {      // 复制.next/static目录      await fs.copy('.next/static', '.next/standalone/.next/static');      console.log('Copied .next/static successfully');        // 复制public目录      await fs.copy('public', '.next/standalone/public');      console.log('Copied public directory successfully');        // 获取环境变量      const port = process.env.npm_config_port || process.env.PORT || 3000;      const hostname = process.env.npm_config_host || process.env.HOSTNAME || 'localhost';        // 启动服务器      const server = spawn('node', ['.next/standalone/server.js'], {        env: {          ...process.env,          PORT: port,          HOSTNAME: hostname        },        stdio: 'inherit'      });        server.on('error', (err) => {        console.error('Failed to start server:', err);        process.exit(1);      });      } catch (err) {      console.error('Error during startup:', err);      process.exit(1);    }  }    main();

如果启动失败,把node_modules删除,然后重新走一遍即可。

后记

系列文章

uv配置环境

dify应用

DeepSeek+dify 本地知识库:真的太香了
Deepseek+Dify本地知识库相关问题汇总
dify的sandbox机制,安全隔离限制
DeepSeek+dify 本地知识库:高级应用Agent+工作流
DeepSeek+dify知识库,查询数据库的两种方式(api+直连)
DeepSeek+dify 工作流应用,自然语言查询数据库信息并展示
聊聊dify权限验证的三种方案及实现
dify1.0.0版本升级及新功能预览
Dify 1.1.0史诗级更新!新增"灵魂功能"元数据,实测竟藏致命Bug?手把手教你避坑
【避坑血泪史】80次调试!我用Dify爬虫搭建个人知识库全记录
手撕Dify1.x插件报错!从配置到网络到Pip镜像,一条龙排雷实录
dify1.2.0升级,全新循环节点优化,长文写作案例
dify1.x无网环境安装插件
dify应用:另类的关键词检索
Dify 1.5.0 上线:这次调试功能,真的省了我一半时间
Dify × MCP 实战(一):用插件一分钟搞定MCP Server(含时间踩坑实践)
Dify × MCP 实战(二):发布工作流为 AI 工具服务,全流程配置 + Cherry 调用实战
# Dify × MCP 实战(三):结果别再堆字了!用 AntV 插件打造图表可视化工具
Dify插件实战

dify源码

dify项目结构说明与win11本地部署
Dify 深度拆解(二):后端架构设计与启动流程全景图
10分钟搞定企业级登录!Dify无缝集成LDAP实战指南
一文吃透Dify账户系统:多租户 + 多登录方式 + 权限模型全揭底

ragflow相关

DeepSeek+ragflow构建企业知识库:突然觉的dify不香了(1)
DeepSeek+ragflow构建企业知识库之工作流,突然觉的dify又香了
DeepSeek+ragflow构建企业知识库:高级应用篇,越折腾越觉得ragflow好玩
RAGFlow爬虫组件使用及ragflow vs dify 组件设计对比
从8550秒到608秒!RAGFlow最新版本让知识图谱生成效率狂飙,终于不用通宵等结果了
以为发现的ragflow的宝藏接口,其实是一个天坑、Chrome/Selenium版本地狱
NLTK三重降噪内幕!RAGFlow检索强悍竟是靠这三板斧
从代码逆向RAGFlow架构:藏在18张表里的AI知识库设计哲学
解剖RAGFlow!全网最硬核源码架构解析
深度拆解RAGFlow分片引擎!3大阶段+视觉增强,全网最硬核架构解析
深度拆解RAGFlow分片引擎之切片实现
RAGFlow核心引擎DeepDoc之PDF解析大起底:黑客级PDF解析术与致命漏洞
RAGFlow 0.18.0 实战解读:从 MCP 支持到插件配置的全流程揭秘
ragflow 0.19.0 图文混排功能支持

mcp

上线3周:告警减少70%!AI巡检分级报告实战(一)
MCP不像想象的那么简单,MCP+数据库,rag之外的另一种解决方案
上线3周:告警减少85%!纯AI驱动巡检通知实战(二)无硬编码方案曝光

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Dify Win11 部署 Web服务 uv
相关文章