feat(config): 添加离线部署和前后端分离配置支持
- 新增 config.yaml 配置文件,包含数据库、模型、Redis等完整配置项 - 添加 package-lock.json 锁定依赖版本 - 创建 README_OFFLINE_DEPLOY.md 离线部署指南文档 - 创建 README_SEPARATE.md 前后端分离启动说明文档 - 添加 start_backend.sh 后端服务启动脚本 - 添加 start_frontend.sh 前端服务启动脚本 - 配置 Docker 离线镜像构建和运行说明 - 提供完整的系统要求和故障排除指南v3.2
parent
4bbef59df8
commit
d327de5f0f
|
|
@ -0,0 +1,129 @@
|
||||||
|
# MaxKB 离线部署指南
|
||||||
|
|
||||||
|
本文档介绍如何将 MaxKB 项目打包成 Docker 镜像并在本地环境中离线部署。
|
||||||
|
|
||||||
|
## 准备工作
|
||||||
|
|
||||||
|
1. 确保目标机器上已安装 Docker
|
||||||
|
2. 准备好 MaxKB 项目的完整代码包
|
||||||
|
|
||||||
|
## 构建离线镜像
|
||||||
|
|
||||||
|
### 方法一:直接从源码构建
|
||||||
|
|
||||||
|
1. 克隆或下载 MaxKB 项目源码到本地:
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/your-repo/maxkb.git
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 进入项目目录并构建镜像:
|
||||||
|
```bash
|
||||||
|
cd maxkb
|
||||||
|
docker build -f installer/Dockerfile-offline -t maxkb-offline:v2.0 .
|
||||||
|
```
|
||||||
|
|
||||||
|
### 方法二:预构建镜像导出/导入
|
||||||
|
|
||||||
|
如果您已经有构建好的镜像,可以导出为 tar 文件进行传输:
|
||||||
|
|
||||||
|
1. 在联网环境中导出镜像:
|
||||||
|
```bash
|
||||||
|
docker save -o maxkb-offline-v2.0.tar maxkb-offline:v2.0
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 将 tar 文件传输到目标机器后导入:
|
||||||
|
```bash
|
||||||
|
docker load -i maxkb-offline-v2.0.tar
|
||||||
|
```
|
||||||
|
|
||||||
|
## 运行容器
|
||||||
|
|
||||||
|
使用以下命令运行 MaxKB 容器:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d \
|
||||||
|
--name maxkb \
|
||||||
|
-p 8080:8080 \
|
||||||
|
-v /opt/maxkb/data:/opt/maxkb/data \
|
||||||
|
-v /opt/maxkb/logs:/opt/maxkb/logs \
|
||||||
|
maxkb-offline:v2.0
|
||||||
|
```
|
||||||
|
|
||||||
|
### 自定义配置
|
||||||
|
|
||||||
|
如果需要自定义数据库或其他配置,可以通过挂载配置文件实现:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 创建配置文件
|
||||||
|
mkdir -p /opt/maxkb/conf
|
||||||
|
cp config.yaml /opt/maxkb/conf/config.yml
|
||||||
|
|
||||||
|
# 修改配置文件中的数据库和其他设置
|
||||||
|
|
||||||
|
# 运行容器并挂载配置
|
||||||
|
docker run -d \
|
||||||
|
--name maxkb \
|
||||||
|
-p 8080:8080 \
|
||||||
|
-v /opt/maxkb/data:/opt/maxkb/data \
|
||||||
|
-v /opt/maxkb/logs:/opt/maxkb/logs \
|
||||||
|
-v /opt/maxkb/conf:/opt/maxkb/conf \
|
||||||
|
maxkb-offline:v2.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## 访问应用
|
||||||
|
|
||||||
|
容器启动后,可以通过以下地址访问 MaxKB:
|
||||||
|
|
||||||
|
- 用户界面: http://localhost:8080/admin
|
||||||
|
- 对话界面: http://localhost:8080/chat
|
||||||
|
- API 文档: http://localhost:8080/api/doc
|
||||||
|
|
||||||
|
## 数据持久化
|
||||||
|
|
||||||
|
默认情况下,应用数据保存在以下目录中:
|
||||||
|
|
||||||
|
- 数据库数据: `/opt/maxkb/data`
|
||||||
|
- 日志文件: `/opt/maxkb/logs`
|
||||||
|
- 配置文件: `/opt/maxkb/conf`
|
||||||
|
|
||||||
|
请确保这些目录在宿主机上有适当的读写权限。
|
||||||
|
|
||||||
|
## 故障排除
|
||||||
|
|
||||||
|
### 查看容器日志
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker logs -f maxkb
|
||||||
|
```
|
||||||
|
|
||||||
|
### 进入容器调试
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it maxkb bash
|
||||||
|
```
|
||||||
|
|
||||||
|
### 停止和删除容器
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 停止容器
|
||||||
|
docker stop maxkb
|
||||||
|
|
||||||
|
# 删除容器
|
||||||
|
docker rm maxkb
|
||||||
|
|
||||||
|
# 删除镜像
|
||||||
|
docker rmi maxkb-offline:v2.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## 系统要求
|
||||||
|
|
||||||
|
- Docker 18.09 或更高版本
|
||||||
|
- 至少 4GB 内存
|
||||||
|
- 至少 2 核 CPU
|
||||||
|
- 至少 10GB 可用磁盘空间
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
1. 首次启动可能需要几分钟来初始化数据库和服务
|
||||||
|
2. 默认管理员账户信息请参考官方文档
|
||||||
|
3. 生产环境部署建议使用外部数据库以提高稳定性
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
# 前后端分离启动说明
|
||||||
|
|
||||||
|
本文档介绍如何将项目的前端和后端分别独立启动。
|
||||||
|
|
||||||
|
## 前后端分离启动
|
||||||
|
|
||||||
|
### 启动后端服务
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./start_backend.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
或者直接运行:
|
||||||
|
```bash
|
||||||
|
python main.py start all
|
||||||
|
```
|
||||||
|
|
||||||
|
后端服务默认运行在 `http://localhost:8080`
|
||||||
|
|
||||||
|
### 启动前端服务
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./start_frontend.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
或者进入 ui 目录分别启动:
|
||||||
|
```bash
|
||||||
|
cd ui
|
||||||
|
npm run dev # 启动管理界面,运行在 http://localhost:3000
|
||||||
|
npm run chat # 启动聊天界面,运行在 http://localhost:3001
|
||||||
|
```
|
||||||
|
|
||||||
|
### 访问应用
|
||||||
|
|
||||||
|
- 管理界面: http://localhost:3000
|
||||||
|
- 聊天界面: http://localhost:3001
|
||||||
|
- 后端 API: http://localhost:8080
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
1. 首次运行前请确保已经安装了所有依赖:
|
||||||
|
```bash
|
||||||
|
pip install -r pyproject.toml
|
||||||
|
cd ui && npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 前后端分离模式下,前端通过代理配置连接后端服务,请确保后端服务在前端访问时处于运行状态。
|
||||||
|
|
||||||
|
3. 如果需要更改默认端口,请相应地更新以下配置:
|
||||||
|
- 后端端口:修改 main.py 中的 runserver 参数
|
||||||
|
- 前端管理界面端口:修改 ui/env/.env 文件中的 VITE_APP_PORT
|
||||||
|
- 前端聊天界面端口:修改 ui/env/.env.chat 文件中的 VITE_APP_PORT
|
||||||
|
|
||||||
|
4. 已经修复了跨域问题,现在可以正常登录。
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
# MaxKB 配置文件
|
||||||
|
# 数据库相关配置
|
||||||
|
DB_NAME: maxkb
|
||||||
|
DB_HOST: 127.0.0.1
|
||||||
|
DB_PORT: 5432
|
||||||
|
DB_USER: postgres
|
||||||
|
DB_PASSWORD: 199628
|
||||||
|
DB_ENGINE: dj_db_conn_pool.backends.postgresql
|
||||||
|
DB_MAX_OVERFLOW: 80
|
||||||
|
|
||||||
|
# 本地模型配置
|
||||||
|
LOCAL_MODEL_HOST: 127.0.0.1
|
||||||
|
LOCAL_MODEL_PORT: 11636
|
||||||
|
LOCAL_MODEL_PROTOCOL: http
|
||||||
|
LOCAL_MODEL_HOST_WORKER: 1
|
||||||
|
|
||||||
|
# 嵌入模型配置
|
||||||
|
EMBEDDING_MODEL_PATH: /opt/maxkb-app/model/base
|
||||||
|
EMBEDDING_MODEL_NAME: text2vec-base-chinese
|
||||||
|
|
||||||
|
# 语言配置
|
||||||
|
LANGUAGE_CODE: zh-CN
|
||||||
|
TIME_ZONE: Asia/Shanghai
|
||||||
|
DEBUG: false
|
||||||
|
|
||||||
|
# Redis 配置
|
||||||
|
REDIS_HOST: 127.0.0.1
|
||||||
|
REDIS_PORT: 6379
|
||||||
|
REDIS_PASSWORD: 199628@tlw
|
||||||
|
REDIS_DB: 0
|
||||||
|
REDIS_MAX_CONNECTIONS: 100
|
||||||
|
|
||||||
|
# 日志级别
|
||||||
|
LOG_LEVEL: INFO
|
||||||
|
|
||||||
|
# 管理后台和聊天界面路径配置
|
||||||
|
ADMIN_PATH: /admin
|
||||||
|
CHAT_PATH: /chat
|
||||||
|
|
||||||
|
# 会话超时时间(秒)
|
||||||
|
SESSION_TIMEOUT: 28800
|
||||||
|
|
||||||
|
# 沙盒Python包路径
|
||||||
|
SANDBOX_PYTHON_PACKAGE_PATHS: /opt/py3/lib/python3.11/site-packages,/opt/maxkb-app/sandbox/python-packages,/opt/maxkb/python-packages
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"name": "MaxKB",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 启动后端服务
|
||||||
|
echo "Starting backend service..."
|
||||||
|
python main.py start all
|
||||||
|
|
||||||
|
echo "Backend service started."
|
||||||
|
echo "Backend API will be available at http://localhost:8080"
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 启动前端管理界面
|
||||||
|
echo "Starting frontend admin interface..."
|
||||||
|
cd ui && npm run dev &
|
||||||
|
|
||||||
|
# 启动前端聊天界面
|
||||||
|
echo "Starting frontend chat interface..."
|
||||||
|
cd ui && npm run chat &
|
||||||
|
|
||||||
|
echo "Frontend interfaces started."
|
||||||
|
echo "Admin interface will be available at http://localhost:3000"
|
||||||
|
echo "Chat interface will be available at http://localhost:3001"
|
||||||
|
echo "Make sure the backend service is running at http://localhost:8080"
|
||||||
|
echo "Press Ctrl+C to stop both interfaces."
|
||||||
|
|
||||||
|
# 等待所有后台任务完成
|
||||||
|
wait
|
||||||
Loading…
Reference in New Issue