Ubuntu本地源码部署Dify(超详细,附可能遇到的问题及解决方案)
Dify本地源码部署主要涉及两部分:后端api部署和前端web部署
一、后端api部署
1.从github克隆 Dify 源代码到本地:
git clone https://github.com/langgenius/dify.git
2.启动 docker-compose 堆栈,后端需要一些中间件,包括 PostgreSQL、Redis 和 Weaviate,可以使用 一起启动.
cd ../docker
cp middleware.env.example middleware.env
docker compose -f docker-compose.middleware.yaml --profile weaviate -p dify up -d
注:在此之前如果之前用过docker部署过其他容器,最好查看一下docker状态,将其关闭,避免后面dify中的容器端口与之前的端口冲突。
3.配置api环境
cd ../api
cp .env.example .env
sed -i "/^SECRET_KEY=/cSECRET_KEY=$(openssl rand -base64 42)" .env
4.由于Dify使用的是poetry来管理所有依赖,因此还需要提前安装好poetry,然后激活环境并安装依赖。(我这里之前安装过依赖了,所以显示无依赖安装更新)
poetry env use 3.12
poetry shell
poetry install
注:这里在执行poetry install时,你大概率会遇到的一个问题,是所有依赖一直处于pending状态,卡住很久也没有downloading。原因是keyring在尝试访问系统密钥服务时发生时延。
解决方案:禁用keyring,就可以继续下载了。
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
5.运行 migrate,在首次启动之前,请将数据库迁移到最新版本。
poetry run python -m flask db upgrade
6.启动后端(注意启动完,不要关闭,可以另开一个终端去配置前端web环境,文末解释原因)
poetry run python -m flask run --host 0.0.0.0 --port=5001 --debug
二、Dify前端部署
在启动web服务之前,需要提前准备好一些环境: Node.js v18.x (LTS)和 NPM 版本 8.x.x
1.安装依赖项:
npm install
注:但由于官方镜像资源下载不下来,因此需要使用国内镜像,国内我试了最好的镜像是淘宝源镜像。
npm install --registry=https://registry.npmmirror.com
2.然后,配置环境变量。在当前目录中创建一个名为 的文件,并从 中复制内容。根据您的要求修改这些环境变量的值:
cp .env.example .env.local
3.最后,运行开发服务器:
npm run dev
三、将配置好的源码部署到本地服务器上
1.首先,构建用于生产的应用程序:
npm run build
2.启动服务器,就完成了Dify本地源码的部署了:
npm run start
3.最后只需要在浏览器输入http://localhost:3000 即可访问本地部署的Dify:
注:在部署后端api的时候,启动完后端不要关掉(poetry run python -m flask run --host 0.0.0.0 --port=5001 --debug),可以再开一个终端来配置前端,否则,最后启动项源码会发现一直在加载窗口进不去: