BiSheng本地后端服务部署及编译

21 阅读2分钟

本地后端服务部署及编译

感谢开源社区开发者 @HHxiaoFu 对此文档的贡献~

环境准备

1️⃣ 获取并拉取官方源码代码 main分支

代码仓库:github.com/dataelement…

2️⃣ 应用 MiniConda 准备 BiShengVENV 的虚拟环境

conda安装地址

# 准备一个 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 环境依赖管理操作

Poetry 的基础用法

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 目录是源码目录

  • Dockerfiledocker 编译配置

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点击绿色按钮即可

Q&A(以下问题在 0.3.1 版本已修复)