本地后端服务部署及编译
感谢开源社区开发者 @HHxiaoFu 对此文档的贡献~
环境准备
1️⃣ 获取并拉取官方源码代码 main分支
2️⃣ 应用 MiniConda 准备
BiShengVENV的虚拟环境
# 准备一个 python 版本 3.10.14 的基础 MiniConda 环境
$conda create --name BiShengVENV python==3.10.14
conda配置(Win):C:\Users{用户名}.condarc
channels:
#镜像
- defaults
envs_dirs:
#环境目录
- D:\software\conda\envs
3️⃣ 在 MiniConda 的环境中安装 Poetry 用于当前虚拟环境 Python 环境依赖管理操作
4️⃣ 准备 BiSHENG 所需的
mysql和 ****redis环境
这里很基础就不再赘述了,记得mysql 创建完成之后,最好再创建一个 bisheng 的用户,方便与其他系统隔离。
5️⃣ 准备一个能科学上网的梯子~
使用 PyCharm 打开后端源码并设置独立环境
bisheng_backend 后端目录结构
# src 目录下 目录结构
|--- backend
| |--- Dockerfile
| |--- README.md
| |--- bisheng
| |--- poetry.lock
| |--- pyporject.toml
-
pyproject.toml是 poetry 管理 Python 依赖的配置文件,新增依赖可以在此文件里增加。 -
poetry.lock是配合pyproject.toml,通过poetry lock生成的固定依赖版本的文件,如果lock文件不改变,保证每次编译的依赖不会改变 -
bisheng目录是源码目录 -
Dockerfile是docker编译配置
1️⃣ 利用 PyCharm ---> File ---> Open 打开
src/backend
**打开后端源文件并设置
Python Interpreter
开始使用 Poetry 安装环境依赖
在环境准备时已经创建好了对应的
BiSHENGVENV的 MiniConda 虚拟环境 ,同时在该虚拟环境中已经安装好了Poetry环境依赖包管理工具
1️⃣ 进入 MiniConda 中之前创建好的
**BiSHENGVENV**虚拟环境
查看当前系统中的环境依赖
$ conda info --envs
进入 BiSHENGVENV 虚拟环境
$ conda activate BiShengVENV
检查是否安装 Poetry ,没有安装请安装
# 查看是否安装了 Poetry , 如果安装了则会显示版本号
$ poetry --version
Poetry (version 1.8.3)
# 安装 Poetry
$ pip install poetry
检查是否安装 Poetry** ,没有安装请安装**
使用 poetry ``install 安装环境依赖 ,期间可能还会因为网络原因报错,这里可能需要多 install 几次,因为会很慢,当然你可以改用镜像源,但是这里并没有演示,毕竟能科学上网最好还是原汁原味的比较好
poetry install
当你出现下述内容时,则安装完成啦
如果你先进行了 **
poetry install**则会因为生成的lock而出现下述的情况,请使用下述命令清下缓存
$ poetry lock --no-update
修改 pyproject.toml文件,使得 poetry install 能正常跑起来。
出现:error:microsoft visual c++ 14.0 or greater is required解决办法
启动报错:patch第三方的fastapi_jwt_auth库中的代码,以保证和pydantic:v2版本兼容
# 使用方式1: bash patch_code.sh conda环境名
# 脚本将尝试进入conda环境
# 使用方式2: bash patch_code.sh
# 不使用conda环境,请确认执行脚本前,已经进入项目python环境中
添加 config 文件启动后端服务
后端的配置文件在 E:\PythonVEnv\bisheng-main\docker\bisheng\config 中,是 docker 里面的嗷~
改写成之前自己装好的 database_url 地址和 redis_url 地址 , 修改配置文件中的milvus、es、minio的配置
# 数据库配置, 当前加密串的密码是1234,
# 密码加密参考 https://dataelem.feishu.cn/wiki/BSCcwKd4Yiot3IkOEC8cxGW7nPc#Gxitd1xEeof1TzxdhINcGS6JnXd
database_url:
"mysql+pymysql://root:gAAAAABlp4b4c59FeVGF_OQRVf6NOUIGdxq8246EBD-b0hdK_jVKRs1x4PoAn0A6C5S6IiFKmWn0Nm5eBUWu-7jxcqw6TiVjQA==@mysql:3306/bisheng?charset=utf8mb4"
# 缓存配置 redis://[[username]:[password]]@localhost:6379/0
# 普通模式:
redis_url: "redis://redis:6379/1"
# 集群模式或者哨兵模式(只能选其一):
# redis_url:
# mode: "cluster"
# startup_nodes:
# - {"host": "192.168.106.115", "port": 6002}
# password: encrypt(gAAAAABlp4b4c59FeVGF_OQRVf6NOUIGdxq8246EBD-b0hdK_jVKRs1x4PoAn0A6C5S6IiFKmWn0Nm5eBUWu-7jxcqw6TiVjQA==)
# #sentinel
# mode: "sentinel"
# sentinel_hosts: [("redis", 6379)]
# sentinel_master: "mymaster"
# sentinel_password: encrypt(gAAAAABlp4b4c59FeVGF_OQRVf6NOUIGdxq8246EBD-b0hdK_jVKRs1x4PoAn0A6C5S6IiFKmWn0Nm5eBUWu-7jxcqw6TiVjQA==)
# db: 1
# 知识库的向量库配置 支持使用 !env ${PATH} 填写环境变量的值, 若环境变量不存在则会报错
vector_stores:
milvus:
connection_args: '{"host":"127.0.0.1","port":"19530","user":"","password":"","secure":false}'
is_partition: true
partition_suffix: '1'
elasticsearch:
url: 'http://127.0.0.1:9200'
ssl_verify: '{"basic_auth": ("elastic", "elastic")}'
# 对象存储, 目前只支持minio
object_storage:
type: minio
minio:
schema: false
cert_check: false
endpoint: '127.0.0.1:9000'
sharepoint: '127.0.0.1:9000'
access_key: minioadmin
secret_key: minioadmin
environment:
env: dev
uns_support: ['png','jpg','jpeg','bmp','doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'md', 'html', 'pdf', 'csv', 'tiff']
然后点击 main.py 进行当前文件启动
启动celery进程来运行工作流
# windows系统需要加上-P solo参数。linux可忽略
# 如修改了配置文件里对应的celery的队列,自行修改—Q后面的队列名称
celery -A bisheng.worker.main worker -l info -P solo -Q workflow_celery,knowledge_celery
使用 Vs Code打开后端源码并设置独立环境(Cursor相同)
1.按照上面的方式安装conda poetry 配置虚拟环境,下载依赖
2.用vscode打开backend文件夹
3.Ctrl+Shift+P 点击Python: Select Interpreter选择刚才配置好的虚拟环境
4.Ctrl+Shift+D 点击 create a launch.json file添加debug功能
{
"version" : "0.2.0",
"configurations" : [
{
"name" : "Python Debugger: FastAPI",
"type" : "debugpy",
"request" : "launch",
"module" : "uvicorn",
"args" : [
"bisheng.main:app",
"--reload",
"--host",
"0.0.0.0",
"--port",
"7860"
],
"jinja" : true,
"justMyCode" : false,
"cwd" : "${workspaceFolder}/bisheng"
}
]
}
5.Ctrl+Shift+D点击绿色按钮即可