bisheng系列(三)- 本地部署(后端 1.2版本)

一、導讀


環境:Ubuntu 24.04、open Euler 23.03、Windows 11、WSL 2、Python 3.10 、bisheng 1.2.0

背景:需要bisheng二開商用,故而此處進行本地部署,便于后期調試開發

時間:20250612

說明:bisheng的1.2版本部署與1.1.1有些許不同,故另開一章

注意:本節基于下面章節的內容,如有疑問,請閱讀:

bisheng系列(一)- 本地部署(Docker)

bisheng系列(二)- 本地部署(前后端)

?

二、停止前后端的docker

bisheng共計9個容器,需要獨立代碼啟動前后端,則需要將前后端的容器停止

1、停止并刪除所有容器

命令:

docker-compose down

效果?

jack@Laptop-L14-gen4:~/bisheng-blog/bisheng/docker/bisheng-main/docker$ docker-compose down
Stopping bisheng-frontend  ... done
Stopping bisheng-backend   ... done
Stopping milvus-standalone ... done
Stopping bisheng-es        ... done
Stopping bisheng-office    ... done
Stopping milvus-etcd       ... done
Stopping bisheng-mysql     ... done
Stopping bisheng-redis     ... done
Stopping milvus-minio      ... done
Removing bisheng-frontend  ... done
Removing bisheng-backend   ... done
Removing milvus-standalone ... done
Removing bisheng-es        ... done
Removing bisheng-office    ... done
Removing milvus-etcd       ... done
Removing bisheng-mysql     ... done
Removing bisheng-redis     ... done
Removing milvus-minio      ... done
Removing network docker_default
jack@Laptop-L14-gen4:~/bisheng-blog/bisheng/docker/bisheng-main/docker$ docker ps -a
CONTAINER ID   IMAGE           COMMAND                  CREATED       STATUS                     PORTS                                                           NAMES
5257cf9b2426   qdrant/qdrant   "./entrypoint.sh"        3 weeks ago   Exited (255) 2 weeks ago   0.0.0.0:6333-6334->6333-6334/tcp, :::6333-6334->6333-6334/tcp   distracted_lamport
b28179c3b79b   qdrant/qdrant   "./entrypoint.sh"        3 weeks ago   Exited (255) 3 weeks ago   0.0.0.0:6333-6334->6333-6334/tcp, :::6333-6334->6333-6334/tcp   bold_beaver
b00d21f614f7   hello-world     "/hello"                 3 weeks ago   Exited (0) 3 weeks ago                                                                     objective_khayyam
114b2a816fae   ubuntu1:8080    "/bin/sh -c 'npm i &…"   7 weeks ago   Exited (255) 7 weeks ago   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                       light_house

通過上述命令說明,bisheng的9個容器停止并刪除成功

2、配置docker-compse

通過編輯docker-compose.yml文件,刪除前后端的啟動項,修改后內容如下:

services:mysql:container_name: bisheng-mysqlimage: mysql:8.0ports:- "3306:3306"environment:MYSQL_ROOT_PASSWORD: "1234"  # 數據庫密碼,如果修改需要同步修改bisheng/congfig/config.yaml配置database_url的mysql連接密碼MYSQL_DATABASE: bishengTZ: Asia/Shanghaivolumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/mysql/conf/my.cnf:/etc/mysql/my.cnf- ${DOCKER_VOLUME_DIRECTORY:-.}/mysql/data:/var/lib/mysqlhealthcheck:test: ["CMD-SHELL", "exit | mysql -u root -p$$MYSQL_ROOT_PASSWORD"]start_period: 30sinterval: 20stimeout: 10sretries: 4restart: on-failureredis:container_name: bisheng-redisimage: redis:7.0.4ports:- "6379:6379"environment:TZ: Asia/Shanghaivolumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/data/redis:/data- ${DOCKER_VOLUME_DIRECTORY:-.}/redis/redis.conf:/etc/redis.confcommand: redis-server /etc/redis.confhealthcheck:test: ["CMD-SHELL", 'redis-cli ping|grep -e "PONG\|NOAUTH"']interval: 10stimeout: 5sretries: 3restart: on-failureoffice:container_name: bisheng-officeimage: onlyoffice/documentserver:7.1.1ports:- "8701:80"environment:TZ: Asia/ShanghaiJWT_ENABLED: "false"volumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/office/bisheng:/var/www/onlyoffice/documentserver/sdkjs-plugins/bishengcommand: bash -c "supervisorctl restart all"restart: on-failureelasticsearch:container_name: bisheng-esimage: docker.io/bitnami/elasticsearch:8.12.0user: rootports:- "9200:9200"- "9300:9300"environment:TZ: Asia/Shanghaivolumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/data/es:/bitnami/elasticsearch/datarestart: on-failureetcd:container_name: milvus-etcdimage: quay.io/coreos/etcd:v3.5.5environment:ETCD_AUTO_COMPACTION_MODE: revisionETCD_AUTO_COMPACTION_RETENTION: "1000"ETCD_QUOTA_BACKEND_BYTES: "4294967296"ETCD_SNAPSHOT_COUNT: "50000"TZ: Asia/Shanghaivolumes:- ${DOCKER_VOLUME_DIRECTORY:-.}/data/milvus-etcd:/etcdcommand: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcdrestart: on-failurehealthcheck:test: ["CMD", "etcdctl", "endpoint", "health"]interval: 30stimeout: 20sretries: 3minio:container_name: milvus-minioimage: minio/minio:RELEASE.2023-03-20T20-16-18Zenvironment:MINIO_ACCESS_KEY: minioadminMINIO_SECRET_KEY: minioadminports:- "9100:9000"- "9101:9001"volumes:- /etc/localtime:/etc/localtime:ro- ${DOCKER_VOLUME_DIRECTORY:-.}/data/milvus-minio:/minio_datacommand: minio server /minio_data --console-address ":9001"restart: on-failurehealthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3milvus:container_name: milvus-standaloneimage: milvusdb/milvus:v2.3.3command: ["milvus", "run", "standalone"]security_opt:- seccomp:unconfinedenvironment:ETCD_ENDPOINTS: etcd:2379MINIO_ADDRESS: minio:9000volumes:- /etc/localtime:/etc/localtime:ro- ${DOCKER_VOLUME_DIRECTORY:-.}/data/milvus:/var/lib/milvusrestart: on-failurehealthcheck:test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]start_period: 90sinterval: 30stimeout: 20sretries: 3ports:- "19530:19530"- "9091:9091"depends_on:- etcd- minio

3、啟動其余容器

jack@Laptop-L14-gen4:~/bisheng-blog/bisheng/docker/bisheng-main/docker$ docker-compose up -d
Creating network "docker_default" with the default driver
Creating milvus-etcd    ... done
Creating bisheng-redis  ... done
Creating bisheng-mysql  ... done
Creating bisheng-office ... done
Creating milvus-minio   ... done
Creating bisheng-es     ... done
Creating milvus-standalone ... done

4、前后端代碼


前后端的代碼分別時:

后端:bisheng/src/backend

前端:bisheng/src/frontend

三、后端啟動


通過修改部分文件,使后端可以連接到相關的容器服務

后端在open Euler 23.03啟動,我使用vscode來修改相關文件

1、克隆源碼

git clone https://github.com/dataelement/bisheng.git

2、安裝相關環境

sudo yum -y install python3-pip python3-devel  gcc g++ 

3、安裝poetry

pip install poetry==1.8.2

4、項目環境

# 在當前項目根目錄下生成環境
poetry config virtualenvs.create true# 安裝環境所需的模塊
poetry install# 在openEuler環境需要該包
poetry add opencv-python-headless

?安裝后,看下安裝過程是否存在異常,如下為正常

...... - Installing types-pillow (9.5.0.6)- Installing types-pyyaml (6.0.12.20250516)- Installing types-requests (2.32.0.20250515)
......Writing lock fileInstalling the current project: bisheng (1.1.1)

?

5、配置文件

此處配置文件特指其余七個容器的連接配置

將/bisheng/docker/bisheng/config/config.yaml?復制到指定目錄下,并修改如下:

# 修改后的文件內容,刪除了注釋的內容database_url:"mysql+pymysql://root:gAAAAABlp4b4c59FeVGF_OQRVf6NOUIGdxq8246EBD-b0hdK_jVKRs1x4PoAn0A6C5S6IiFKmWn0Nm5eBUWu-7jxcqw6TiVjQA==@0.0.0.0:3306/bisheng?charset=utf8mb4"# 緩存配置  redis://[[username]:[password]]@localhost:6379/0
# 普通模式:
redis_url: "redis://0.0.0.0:6379/1"# celery的broken地址
celery_redis_url: "redis://0.0.0.0:6379/2"# 知識庫的milvus和es配置  支持使用 !env ${PATH} 填寫環境變量的值, 若環境變量不存在則會報錯
vector_stores:milvus:connection_args: '{"host":"0.0.0.0","port":"9530","user":"","password":"","secure":false}'is_partition: truepartition_suffix: "1"elasticsearch:url: 'http://0.0.0.0:9200'ssl_verify: '{"basic_auth": ("elastic", "elastic")}'# 對象存儲, 目前只支持minio
object_storage:type: miniominio:schema: falsecert_check: falseendpoint: '0.0.0.0:9100'sharepoint: '0.0.0.0:9100'access_key: minioadminsecret_key: minioadminenvironment:env: devuns_support: ['png','jpg','jpeg','bmp','doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'md', 'html', 'pdf', 'csv', 'tiff']# 可根據loguru的文檔配置不同 handlers
logger_conf:# 默認輸出到sys.stdout的日志級別, 大于等于此級別都會輸出level: DEBUG# 默認輸出格式format: '<level>[{time:YYYY-MM-DD HH:mm:ss.SSSSSS}] [{level.name} process-{process.id}-{thread.id} {name}:{line}]</level> - <level>trace={extra[trace_id]} {message}</level>'# 參考loguru.add()中的參數可以配置多個handlerhandlers:# 文件路徑,支持插入一些系統環境變量,若環境變量不存在則置空。例如 HOSTNAME: 主機名。后端會處理環境變量的替換- sink: "/home/jack/bisheng_11/backend/data/bisheng.log"# 日志級別level: INFO# 日志格式化函數,extra內支持trace_idformat: '<level>[{time:YYYY-MM-DD HH:mm:ss.SSSSSS}] [{level.name} process-{process.id}-{thread.id} {name}:{line}]</level> - <level>trace={extra[trace_id]} {message}</level>'# 每天的幾點進行切割rotation: "00:00"retention: "3 Days"enqueue: ture- sink: "/home/jack/bisheng_11/backend/data/statistic.log"level: INFO# 和原生不一樣,后端會將配置使用eval()執行轉為函數用來過濾特定日志級別。推薦lambdafilter: "lambda record: record['level'].name == 'INFO' and record['message'].startswith('k=s')"format: "[{time:YYYY-MM-DD HH:mm:ss.SSSSSS}]|{level}|BISHENG|{extra[trace_id]}||{process.id}|{thread.id}|||#EX_ERR:POS={name},line {line},ERR=500,EMSG={message}"rotation: "00:00"retention: "3 Days"enqueue: ture

修改目的是將鏈接修改為0.0.0.0:端口,由于之前使用docker配置可以連接,但是當前由于使用代碼直接啟動,無法識別http://mysql:3306這種鏈接,故而需要修改

日志路徑修改是為了保證權限的問題

編輯bisheng/src/backend/bisheng/api/services/assistant_agent.py,修改文件路徑

# 原內容async def record_chat_history(self, message: List[Any]):# 記錄助手的聊天歷史if not os.getenv('BISHENG_RECORD_HISTORY'):returntry:os.makedirs('/app/data/history', exist_ok=True)with open(f'/app/data/history/{self.assistant.id}_{time.time()}.json',# 修改后async def record_chat_history(self, message: List[Any]):# 記錄助手的聊天歷史if not os.getenv('BISHENG_RECORD_HISTORY'):returntry:os.makedirs('/home/jack/bisheng/src/backend/data/history', exist_ok=True)with open(f'/home/jack/bisheng/src/backend/data/history/{self.assistant.id}_{time.time()}.json',

處理fastapi_jwt_auth、langchain_openai的兼容性

patch -p1 < ./bisheng/patches/fastapi_jwt_auth.patch ./.venv/lib/python3.10/site-packages/fastapi_jwt_auth/config.pypatch -p1 < ./bisheng/patches/langchain_openai.patch ./.venv/lib/python3.10/site-packages/langchain_openai/chat_models/base.py

6、啟動項目

uvicorn bisheng.main:app --host 0.0.0.0 --port 7860 

成功如下:

.
.
.
INFO:     Started server process [64315]
INFO:     Waiting for application startup.
[2025-05-19 11:25:20.152105] [2025-05-19 11:25:20.151985] [DEBUG process-64315-139958058770496 bisheng.interface.utils:91] - trace=1 Setting up LLM caching with InMemoryCache                                                                                                                              
[2025-05-19 11:25:20.153851] [2025-05-19 11:25:20.153779] [INFO process-64315-139958058770496 bisheng.interface.utils:93] - trace=1 LLM caching setup with InMemoryCache                                                                                                                                    
[2025-05-19 11:25:20.189322] [2025-05-19 11:25:20.189129] [DEBUG process-64315-139958058770496 bisheng.database.service:59] - trace=1 Creating database and tables                                                                                                                                          
[2025-05-19 11:25:20.564080] [2025-05-19 11:25:20.563913] [DEBUG process-64315-139958058770496 bisheng.database.service:79] - trace=1 Database and tables created successfully                                                                                                                              
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:7860 (Press CTRL+C to quit)

四、前端啟動

略(參考上一節中的前端配置即可)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909279.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909279.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909279.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 PolarProxy+Proxifier 解密 TLS 流量

一、簡介 在分析惡意樣本或加密流量時,我們常常需要將 TLS 加密通信還原為明文。 本文介紹如何通過 PolarProxy 和Proxifier 解密 TLS 流量并保存為 pcap 文件,在 Wireshark 中進行進一步分析。 二、工具準備 ? PolarProxy(推薦 Windows x64 版本)? Proxifier(強制非瀏…

[技術積累]成熟的前端和后端開發框架

1、后端 1.1、低代碼開發框架 1.1.1、jeecg 官網&#xff1a;JEECG技術論壇 - 基于BPM的低代碼開發平臺 1.1.2、APIJSON github官網地址&#xff1a;https://github.com/APIJSON gitee官網地址&#xff1a;https://gitee.com/Tencent/APIJSON 官網地址&#xff1a;騰訊AP…

產品升級 | 新一代高性能數據采集平臺BRICK2 X11,助力ADAS與自動駕駛開發

隨著ADAS&#xff08;高級駕駛輔助系統&#xff09;和自動駕駛&#xff08;AD&#xff09;開發中對數據采集與處理的需求日益增長&#xff0c;高性能硬件的重要性愈發凸顯。 為此&#xff0c;康謀正式發布了其BRICK系列的最新產品——BRICK2 X11&#xff0c;作為BRICK2的直接升…

螞蟻集團法人變更:韓歆毅接任,公司治理的正常安排

企查查APP顯示&#xff0c;6月11日&#xff0c;螞蟻科技集團股份有限公司發生工商變更&#xff0c;井賢棟卸任法定代表人&#xff0c;由韓歆毅接任。同時&#xff0c;韓歆毅由董事、總經理變更為執行公司事務的董事、總經理。目前&#xff0c;井賢棟仍擔任該公司董事長職務。 接…

2025虛幻游戲逆向工程解包嘗試

2025虛幻游戲逆向工程解包 前言 在2025游戲模型提取攻略寫了&#xff0c;但是想要找的時候又忘了在哪篇文章中寫的&#xff0c;所以干脆專門寫一下。中間有許多坑。 一坑接一坑。 先說結論&#xff1a;用Umodel&#xff08;UV Viewer&#xff09;查看和導出模型。FModel雖然…

Qt學習及使用_第1部分_認識Qt---Qt開發基本流程

前言 學以致用,通過QT框架的學習,一邊實踐,一邊探索編程的方方面面. 參考書:<Qt 6 C開發指南>(以下稱"本書") 標識說明:概念用粗體傾斜.重點內容用(加粗黑體)---重點內容(紅字)---重點內容(加粗紅字), 本書原話內容用深藍色標識,比較重要的內容用加粗傾…

大模型的開發應用(十):對話風格微調項目(上):數據工程與模型選型

數據工程 1 項目介紹2 數據工程2.1 申請 API Key 并測試2.2 文本嵌入模型2.3 生成訓練集2.3.1 制作風格模板2.3.2 調用大模型獲取數據2.3.3 對大模型生成的數據進行質量過濾2.3.4 程序入口 2.4 數據轉換 3 模型選型3.1 候選模型與評估數據集3.2 模型評估 附錄&#xff08;對比不…

Jmeter壓測手冊:腳本配置、服務器環境搭建與運行

序 本文記錄了我在新公司的首次壓測遇到的一些問題以及解決方案。公司服務部署在國外&#xff0c;網絡延遲導致的壓不上去&#xff0c;需要本地調試腳本&#xff0c;然后用國外服務器壓測的過程。同時記錄了過程中遇到的一些問題&#xff0c;特別是Jmeter本身占用CPU資源&#…

立定跳遠--二分枚舉答案+cehck

P10909 [藍橋杯 2024 國 B] 立定跳遠 - 洛谷 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<int,int> pii; int n,m; int a[N]; int an; bool check(int l) {int pos0;int c1;int wm;for(int i1;i<n;i){if…

藍橋杯20112 不同的總分值

問題描述 在今年藍橋杯的決賽中&#xff0c;一共有 10 道題目&#xff0c;每道題目的分數依次為 5 分&#xff0c;5 分&#xff0c;10 分&#xff0c;10 分&#xff0c;15 分&#xff0c;15 分&#xff0c;20 分&#xff0c;20 分&#xff0c;25 分&#xff0c;25 分。 假設某…

[論文閱讀] 系統架構 | 零售 IT 中的微服務與實時處理:開源工具鏈與部署策略綜述

零售IT中的微服務與實時處理&#xff1a;開源工具鏈與部署策略綜述 論文信息 Microservices and Real-Time Processing in Retail IT: A Review of Open-Source Toolchains and Deployment Strategies Aaditaa Vashisht (Department of Information Science and Engineering, …

【面板數據】A股上市公司注冊地所在地數據集(1991-2023年)

數據簡介&#xff1a;上市公司注冊地所在地數據指企業在工商行政管理部門登記注冊的法定住所信息&#xff0c;涵蓋省、市、區三級行政區劃及詳細地址。該數據是公司法律身份的核心標識&#xff0c;直接影響稅務管轄、訴訟歸屬、政策適用及市場準入等關鍵環節。更是連接企業行為…

21、Create React App的使用

Create React App 是官方支持的創建單頁 React 應用程序的方法。提供了一個現代的構建設置&#xff0c;無需配置。它雖然只是一個包&#xff0c;但不建議全局安裝。如果本地安裝過可先卸載&#xff0c;這樣能保證每次創建項目時使用最新版本的功能。 開始使用 可以使用npx&…

CSS盒子 flex彈性布局

使用flex彈性布局頁面效果圖&#xff08;源代碼在文章末尾&#xff09;&#xff1a; 目錄 flex彈性布局 一、基本容器 二、設置主軸方向 三、設置主軸對齊方式 四、設置交叉軸上的對齊方式 flex彈性布局 一、基本容器 Flexbox 是 CSS3 引入的一種一維布局模型&#xff0…

數據結構與算法-線性表-線性表的應用

1 線性表 1.5 線性表的應用 1.5.1 線性表的合并 【算法步驟】 分別獲取 LA 表長 m 和 LB 表長 n 。從 LB 中第 1 個數據元素開始&#xff0c;循環 n 次執行以下操作&#xff1a; 從 LB 中查找第 i 個數據元素賦給 e &#xff1b;在 LA 中查找元素 e &#xff0c;如果不存在&…

流數據機器學習框架 CapyMOA

環境準備: pip install capymoa 使用 HoeffdingTree 對流數據做在線分類: from capymoa.streams import FileStream from capymoa.learners import HoeffdingTreeClassifier from capymoa.evaluation import ProgressiveEvaluator# 1. 構造流&#xff1a;假設 data/stream…

QEMU源碼全解析 —— 塊設備虛擬化(27)

接前一篇文章:QEMU源碼全解析 —— 塊設備虛擬化(26) 本文內容參考: 《趣談Linux操作系統》 —— 劉超,極客時間 《QEMU/KVM源碼解析與應用》 —— 李強,機械工業出版社 Virt

Cilium動手實驗室: 精通之旅---19.Golden Signals with Hubble and Grafana

Cilium動手實驗室: 精通之旅---19.Golden Signals with Hubble and Grafana 1. Lab 環境2. 部署測試應用2.1 7層可見性的網絡2.1.1 允許所有命名空間2.1.2 DNS 可見性2.1.3 L7-egress-visibility 2.2 檢查 Deployments2.3 在 Hubble UI 中查看 3. Grafana 選項卡3.1 Grafana 中…

常見文件系統格式有哪些

PART.01 常見文件系統格式有哪些 常見的文件系統格式有很多&#xff0c;通常根據使用場景&#xff08;Windows、Linux、macOS、移動設備、U盤、硬盤等&#xff09;有所不同。以下是一些主流和常見的文件系統格式及其特點&#xff1a; 一、Windows 常見文件系統格式 Digital …

React Native 彈窗組件優化實戰:解決 Modal 閃爍與動畫卡頓問題

&#x1f4cc; 前言 在移動端開發中&#xff0c;用戶對動畫的流暢性和過渡自然性有著極高的期待。最近我對一個使用 react-native-modal 實現的 Alert 彈窗組件進行了優化&#xff0c;成功解決了閃爍和卡頓問題&#xff0c;并顯著提升了用戶體驗。 本篇博客將帶你深入了解優化…