社区版dify部署
官方文档地址:https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/local-source-code
前言:
本文部署环境分为2种(其一通过Docker Compose部署——适合通过打包的镜像文件替换后进行环境部署,其二通过本地源码启动——适合开发环境使用)
操作系统:本文使用的windows10中文家庭版
环境准备
软件:Docker Desktop、VSCode
开发环境需求:Python3.11/3.12版本、node.js(v18以上)、NPM
Docker Desktop部署
官方下载路径:https://www.docker.com/products/docker-desktop/
dify源码部署启动方式
说明:源码启动分两个部分,第一部分由docker-compose.middleware.yaml文件进行配置,6大服务组件(postgres数据库、redis、weaviate、dify-sandbox、dify-plugin-daemon、squid)是通过docker 容器部署,也可以由本地已有的环境考虑是否都由docker生成容器服务。第二部分3大业务服务(api、web、worker)都由本地源码部署启动,需要对应环境和依赖。
源码下载git命令:git clone https://github.com/langgenius/dify.git
docker容器启动
1.通过cmd命令将源码git到本地目录下
2.进入docker目录打开cmd命令窗口
3.通过docker命令启动docker容器
进入docker目录
cd docker
复制配置文件
cp middleware.env.example middleware.env
启动配置文件
docker compose -f docker-compose.middleware.yaml up -d
4.查看Docker Desktop容器情况,也可通过cmd命令查看,这样组件服务就成功启动了
docker ps
docker Desktop查看
5.可通过数据库管理工具Navicat Premium 16等工具,对postgres数据库进行连接测试
api服务启动
说明:api服务为dify的后台服务,环境需要python3.12
python官方网址:https://www.python.org/
1.python3.12安装
通过官网下载python安装包,安装完成后,并查看系统环境变量
cmd命令查看python版本
2.打开api文件夹
cd api
3.复制环境变量配置文件
cp .env.example .env
4.生成随机密钥,并替换 .env 中 SECRET_KEY 的值(如不用命令可手动替换,未替换也并不影响服务启动)
awk -v key=“$(openssl rand -base64 42)” ‘/^SECRET_KEY=/ {sub(/=.*/, “=” key)} 1’ .env > temp_env && mv temp_env .env
5.poetry安装
可通过命令安装: pip install poetry
安装完成后,使用命令查看版本
6.使用poetry生成虚拟环境(这里用的是python3.12版本)
poetry env use 3.12
生成后会在api文件内出现一个名为.venv的文件夹
7.使用poetry拉去依赖
poetry install
- 执行数据库迁移,将数据库结构迁移至最新版本
进入虚拟场景:poetry shell
进行数据库迁移命令: flask db upgrade
注意:如果迁移失败,请检查python、poetry、pip、下载的依赖的版本,如果缺少某一个依赖可在当前cmd窗口通过命令下载 pip install 依赖名
9.启动API的服务
flask run --host 0.0.0.0 --port=5001 --debug
如果提示找不到import modules,可在当前cmd窗口通过命令下载 pip install 依赖名,下载好依赖后,再次通过api启动命令,可能会尝试十几次的下载依赖,请耐心尝试
成功结果如下:
web服务启动
说明:web服务是前端服务,统一存放在dify目录下web文件夹中,本文通过VSCode开发工具进行启动,所需环境node.jsV18以上及NPM
1.进入web目录
cd web
2.安装依赖
npm install
3.通过命令启动
npm run dev
4.启动结果如下
5.通过浏览器访问
http://localhost:3000
6.首次登录需要注册邮箱、账号名、密码(一定要记住邮箱号和密码)
邮箱号可以随便填,但注意格式,比如 admin@qq.com
账号名:admin
密码: admin123
worker服务启动
说明:worker服务是用于消费异步队列任务,如知识库文件导入、更新知识库文档等异步操作,并不影响登录测试及基础功能的使用
注意:在api目录下启动该命令
1.命令启动
Windows环境 命令:
cd api
celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generat
成功启动后,会在api文件夹内出现一个新修改内容
Docker Compose部署启动方式
说明:这种方式很简单,全部都是下载官方镜像,启动时产生docker容器服务
优点:极易部署,可以用于尝试使用dify功能
缺点:不便于开发
部署方式:可参考首页网站,dify官方文档
1.通过git命令拉取源码
git clone https://github.com/langgenius/dify.git
2.进入docker目录
cd docker
3.复制环境配置文件,也可手动复制
cp .env.example .env
4.cmd查看Docker Compose版本
Docker Compose --version
5.启动命令,根据版本选择
如果版本是 Docker Compose V2,使用以下命令:
docker compose up -d
如果版本是 Docker Compose V1,使用以下命令:
docker-compose up -d
6.查看容器状态(直接通过docker Desktop或者通过cmd命令查看)
docker compose ps
问题:
1.当web成功启动,在登录时后台接口无法调通,如图所示F12查询网络时,当login接口无法调通时,可能是因为redis服务未能生效,检查服务是否启动,端口是否占用,一般本地有redis的话,容器再启动一个,会造成端口冲突。
解决方式:docker Desktop中关闭redis服务,然后Ctrl+Shift+Esc,查看服务进程,把还在运行的本地redis进程结束进程,最后重新启动docker Desktop中redis服务
2.当cmd窗口成功启动api服务后后台日志提示没有密码,或者在迁入db数据时,提示没有密码,可能是本地的postgres数据库与容器数据库端口冲突
解决方式:通过数据库管理工具对数据库进行连接测试,如果连接不上,也可能是本地数据库服务在占用端口,可按照问题1的解决方式进行处理
话题:
小编从接触dify开始前后用了5天搭建和简单改造完成的,
1.我的windows10中文家庭版,已经好久没更新了,倒腾系统就弄了半天
2.docker镜像用自己热点下的,超级慢,时不时中断,倒腾两天
3.web服务,片刻搞定
4.docker compose部署与步骤二同步,但要改动源码,所以要源码部署业务服务
5.api服务,用了两天半,途中查了大量攻略和视频介绍
!!!各位小伙伴,你们的过程怎么样,可以在评论区留言,如有遇到的难题可以私信。