Dify 0.15.3版本 本地部署指南
目录
背景
一、单机部署机器配置最低要求
二、系统Python环境安装
安装需要的python依赖
使用pyenv官方安装脚本
安装poetry
三、中间件部署
PostgreSQL本地部署
添加PG官方仓库
安装pg 16
检查pg版本
修改密码为dify默认
创建数据库dify
安装pg vector插件
修改支持远程访问
Redis本地部署
Weaviate本地部署
四、配置npm环境
五、运行dify
下载源码,并切换到0.15.3的tag
切换到api目录,配置环境文件以及poetry依赖
运行API服务
运行worker服务
六、运行dify-sandbox
安装go环境
七、Rerank模型安装
安装Xinference
八、总结
Dify 0.15.3版本在Linux上的本地部署指南,涵盖单机部署机器配置、系统Python环境安装、中间件部署、npm环境配置、Dify及相关组件运行、Rerank模型安装等内容。关键要点包括:
-
单机部署机器配置:不同服务有不同的CPU核心和内存要求 。
-
系统Python环境安装:服务器需Python 3.12,利用pyenv安装,同时安装poetry并添加环境变量。
-
中间件部署:在安全内网环境部署PostgreSQL、Redis、Weaviate等中间件,需进行安装、配置密码、允许远程访问等操作。
-
配置npm环境:用nvm安装nodejs,安装npm并修改源。
-
运行Dify:下载源码,配置环境文件和依赖,执行数据库迁移,分别运行API、worker、web服务。
-
运行dify-sandbox:需root账号,安装go环境,克隆仓库,安装依赖,构建并启动服务器。
-
Rerank模型安装:安装Xinference,配置使用bge-reranker-v2-m3模型并启动。
背景
官方推荐的是docker部署,docker部署直接参考官方文档即可
Docker Compose 部署 | Dify
不过私有化有时需要本地部署,由于官网并没有给出本地部署的介绍,所以下面文档给出如何在linux上部署dify的详细指南:
一、单机部署机器配置最低要求
CPU核心 | 内存 | 部署服务 |
2 Core | 2 GB | dify-api |
2 Core | 2 GB | dify-worker |
1 Core | 512 MB | nginx |
1 Core | 2 GB | PostgreSQL |
1 Core | 1GB | Redis |
2 Core | 2 GB | Weaviate |
二、系统Python环境安装
服务器启动需要 Python 3.12
以下是使用debian 系相关系统,利用pyenv按照python 3.12的示例
安装需要的python依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
使用pyenv官方安装脚本
如果遇到代理问题,请开代理下载脚本,或者查看https://github.com/pyenv/pyenv进行安装
curl -fsSL https://pyenv.run | bash
设置pyenv的环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init - bash)"' >> ~/.profile
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init - bash)"' >> ~/.bash_profile
运行安装命令,指定安装的python版本
pyenv install 3.12.0
pyenv global 3.12.0
python --version
运行结果如下:
安装poetry
使用官网安装脚本安装,如遇到代理问题,请开代理
curl -sSL https://install.python-poetry.org | python3 -
添加环境变量
echo 'export PATH=/root/.local/bin:$PATH' >> ~/.bashrc
echo 'export PATH=/root/.local/bin:$PATH' >> ~/.profile
echo 'export PATH=/root/.local/bin:$PATH' >> ~/.bash_profile
验证安装
export PATH=/root/.local/bin:$PATH
poetry --version
三、中间件部署
中间件部署都默认要求是安全的内网环境,端口可以互相访问
PostgreSQL本地部署
pg由于是比较简单常见的中间件,这里简单介绍一下使用官方源安装的方式
添加PG官方仓库
sudo apt update && sudo apt install -y wget gnupg
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/postgresql.asc
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
安装pg 16
sudo apt update
sudo apt install -y postgresql-16 postgresql-contrib
检查pg版本
psql --version
修改密码为dify默认
#切换用户
sudo -i -u postgres
#修改密码
psql -c "ALTER USER postgres PASSWORD 'difyai123456';"
创建数据库dify
#注意当前用户是postgres
psql -c "CREATE DATABASE dify;"
安装pg vector插件
使用pgxn安装插件
sudo apt install -y pgxnclient
pgxn --version
sudo pgxn install vector
#注意当前用户是postgres
psql -d dify -c "CREATE EXTENSION vector;"
修改支持远程访问
编辑postgresql.conf
sudo vi /etc/postgresql/16/main/postgresql.conf
找到#listen_addresses = 'localhost',改为listen_addresses = '*'
编辑 pg_hba.conf
sudo vi /etc/postgresql/16/main/pg_hba.conf
找到
local all postgres peer
改为
local all postgres md5
文件末尾添加
host all all 0.0.0.0/0 md5
修改完成后重启
sudo systemctl restart postgresql
远程访问测试
Redis本地部署
redis由于是比较简单常见的中间件,这里就简单介绍一下
通过apt安装的方式
sudo apt install -y redis
redis-server --version
配置允许远程访问
执行下面的命令,修改redis.conf文件,
sudo vi /etc/redis/redis.conf
找到bind 127.0.0.1 ::1,改为bind 0.0.0.0,
找到protected-mode yes,改为protected-mode no,
找到requirepass foobared,改为requirepass difyai123456,修改密码为difyai123456
重启redis
sudo systemctl restart redis
测试
Weaviate本地部署
详细请参考
Weaviate 1.19(向量数据库)安装配置
四、配置npm环境
使用nvm安装nodejsh
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
配置环境变量后安装最新版本
#配置环境变量
source ~/.bashrc
#安装最新版本
nvm install --lts
# 安装npm
npm install -g yarn
# 修改源
npm config set registry https://registry.npmmirror.com
yarn config set registry https://registry.npmmirror.com
五、运行dify
下载源码,并切换到0.15.3的tag
git clone https://github.com/langgenius/dify.git
cd dify
git checkout tags/0.15.3 -b v0.15.3
git branch
切换到api目录,配置环境文件以及poetry依赖
复制环境变量配置文件
cp .env.example .env
生成随机密钥,并替换 .env 中 SECRET_KEY 的值
awk -v key="$(openssl rand -base64 42)" '/^SECRET_KEY=/ {sub(/=.*/, "=" key)} 1' .env > temp_env && mv temp_env .env
由于有些代码逻辑,前端是取后端返回的URL进行请求的,例如图标地址是后端给的地址,因此需要修改一下.env文件里面的各种http地址为具体的ip或者域名,如下图,根据自己部署的域名或者IP,将原来的127.0.0.1改成对应的地址,生产建议全域名。
在pyproject.toml文件末尾追加如下内容,使用国内poetry的依赖源
[[tool.poetry.source]]
name = "tuna"
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
priority = "supplemental"
[[tool.poetry.source]]
name = "douban"
url = "https://pypi.doubanio.com/simple/"
priority = "primary"
通过poetry安装python依赖
poetry env use 3.12
poetry lock
poetry install
有时候需要重复执行一下poetry install ,确保所有依赖都安装完毕
执行数据库迁移
poetry run bash
flask db upgrade
运行API服务
poetry run bash
# 生产运行时,不加--debug参数
flask run --host 0.0.0.0 --port=5001 --debug
运行worker服务
cd api
poetry run bash
celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO
运行web服务
进入到web目录,使用npm安装前端需要的依赖,然后修改环境文件
cd web
npm install
配置环境文件,在当前目录下创建文件 .env.local,并复制.env.example中的内容。根据需求修改这些环境变量的值
cp .env.example .env.local
同时需要修改.env.local文件内如下的两个地址的URL为机器IP或者对应域名
编译并运行
#构建代码
npm run build
#运行
npm run start
六、运行dify-sandbox
运行需要使用root账号,因为dify-sandbox启动时,会自动判断一些系统文件夹目录是否创建,不存在会自动创建。
安装go环境
需要安装1.22.x以上版本
sudo apt instlal golang
使用以下命令克隆仓库并进入项目目录:
git clone https://github.com/langgenius/dify-sandbox
cd dify-sandbox
运行以下命令安装必要的依赖:
./install.sh
运行以下命令构建沙箱二进制文件(根据架构选择 amd64 或 arm64):
./build/build_[amd64|arm64].sh
运行以下命令启动服务器:
./main
七、Rerank模型安装
安装Xinference
- 配置使用bge-reranker-v2-m3模型
https://zhuanlan.zhihu.com/p/691190576
Xinference 本地部署 Rerank 模型,提高检索结果准确性 - 专栏家
- 启动Xinference
conda activate xinference
export HF_ENDPOINT=https://hf-mirror.com
export XINFERENCE_MODEL_SRC=modelscope
xinference-local -H 0.0.0.0
- 启动模型
conda activate xinference
xinference launch --model-name bge-reranker-v2-m3 --model-type rerank
八、总结
Dify 0.15.3版本本地部署指南详细列出了在Linux上部署Dify所需的最低机器配置、Python环境安装、中间件部署(如PostgreSQL、Redis、Weaviate)、npm环境配置以及运行Dify服务的具体步骤。通过遵循这份指南,用户可以轻松地在本地环境中搭建起Dify,享受到其强大的文本处理和分析能力。
Dify作为一款先进的文本处理和分析工具,能够为企业和个人用户提供精准、高效的文本处理服务。通过本地部署,用户可以更灵活地定制和扩展Dify的功能,满足多样化的需求。因此,强烈推荐大家尝试按照这份指南部署Dify,探索并发挥其在文本处理和分析方面的卓越能力。
作者:道一云低代码
作者想说:喜欢本文请点点关注~