前情提要
dify版本:v0.14.2
python管理器:miniconda
系统:Ubuntu 22.04
环境创建
用Conda命令创建dify执行的环境
/~$ conda create -n dify_v0.14.2 python=3.12
# 激活环境
/~$ conda activate dify_v0.14.2
后端部署
dify的Github下载源码
/~$ git clone https://github.com/langgenius/dify.git
在部署环境之前要预部署PostgreSQL\Redis\Weaviate,如果本地没有预先部署,那就参考官方文档执行docker安装↓。
本示例参考官方文档步骤部署。
# 进入下载下来的dify源码目录
/dify-0.14.2$ cd docker
/dify-0.14.2/docker$ cp middleware.env.example middleware.env
/dify-0.14.2$/docker docker compose -f docker-compose.middleware.yaml up -d
执行结果
服务配置
#1. 进入后端服务目录
/dify-0.14.2$ cd api
#2. 备份配置文件
/dify-0.14.2/api$ cp .env.example .env
#3. 生成随机密钥:
#此条命令会在.env配置文件里的SECRET_KEY配置项后面追加一串随机符
/dify-0.14.2/api$ awk -v key="$(openssl rand -base64 42)" '/^SECRET_KEY=/ {sub(/=.*/, "=" key)} 1' .env > temp_env && mv temp_env .env
#4. 修改.env配置文件相关配置:
#例如PostgreSQL\Redis\Weaviate\Celery的相关连接配置,请根据实际的情况对应修改
服务依赖安装
dify的API服务依赖包使用Poerty管理
#安装配置poerty,一般安装pip时会有poetry,可用pip list查看,若没有再行安装,本示例使用1.8.5
/dify-0.14.2/api$ pip install poetry==1.8.5
#安装依赖,注意该命令的执行目录要在包含poetry的相关文件的目录下执行方可生效
/dify-0.14.2/api$ poetry env use 3.12
/dify-0.14.2/api$ poetry install
PS:使用poetry env use 3.12这条命令如果抛出以下异常:
解决方法:
- 执行pip list 看下是否有安装,没有的话pip install安装
- 执行which poetry 看下poetry安装目录,若是不在/usr/bin下那便带上对应路径去执行
- 如果还是报错,比如可能会出现msgpack等依赖包没有找到问题,那就重新安装poetry吧
数据库迁移
/dify-0.14.2/api$ poetry shell
/dify-0.14.2/api$ poetry run python -m flask db upgrade
启动API
/dify-0.14.2/api$ poetry run python -m flask run --host 0.0.0.0 --port=5001 --debug
启动Worker服务
#Linux/MacOS:
/api $ celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO
#Windows:
/api $ celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail,ops_trace --loglevel INFO
前端Web部署
环境:NodeJS 1.8.x(LTS)、NPM8.x+
- 进入web目录
/dify-0.14.2/$ cd web
- 备份配置文件
/dify-0.14.2/web$ cp .env.example .env
- 安装依赖包
/dify-0.14.2/web$ npm install
- 构建代码
/dify-0.14.2/web$ npm run build
- 启动web
/dify-0.14.2/web$ npm run start
PS:若是npm run start中cp命令出错了,删掉cp命令操作,手动拷贝文件到对应目录下即可。