Files
schoolNews/doc/部署.md
2025-11-28 15:49:32 +08:00

176 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 校园新闻系统部署
## 加载镜像
### 镜像目录结构
---docker 根目录
|---dify # dify的docker目录
|---dify 官方内容
|---schoolNews # schoolNews的docker目录
|---dify # dify工作流的2个yml
|---config # 前后端配置文件
|---init-db # 数据库标记
|---mysql # mysql配置
|---redis # redis配置
|---nginx # nginx配置
|---volumes # 数据卷
|---images # 镜像
|---docker-compose.yml # docker-compose配置
|---init-volumes.sh # 初始化数据卷
### 后端服务镜像
镜像来源由星洋智慧提供
超级管理员账号密码superadmin 123456
#### 镜像加载
```bash
# 递归查找指定目录下的所有镜像文件并加载 schoolNews修改镜像增加标签latest用于docker compose启动
find .docker/schoolNews/images -type f \( -name "*.tar" -o -name "*.tar.gz" -o -name "*.tgz" \) -exec sh -c '
docker load -i "$1"
# 获取刚导入的镜像名称和标签
IMAGE_INFO=$(docker images --format "{{.Repository}}:{{.Tag}}" | tail -n1)
if [ -n "$IMAGE_INFO" ]; then
# 分离仓库名和标签
REPO=$(echo "$IMAGE_INFO" | cut -d: -f1)
TAG=$(echo "$IMAGE_INFO" | cut -d: -f2)
# 只有当标签不是 latest 时才添加新标签
if [ "$TAG" != "latest" ]; then
docker tag "$IMAGE_INFO" "$REPO:latest"
echo "Tagged $IMAGE_INFO as $REPO:latest"
fi
fi
' sh {} \;
# 单独镜像加标签
docker tag school-news-xxx:yyyyMMdd_HHmmss school-news-xxx:latest
```
#### 服务启动
```bash
cd docker/schoolNews
docker-compose up -d
```
#### 服务停止
```bash
cd docker/schoolNews
docker-compose down
```
#### 服务重启
```bash
cd docker/schoolNews
docker-compose restart
```
### dify镜像启动
> 会进行镜像拉取
```bash
cd docker/dify
docker-compose up -d
sudo chown -R 1001:1001 ./volumes/app/storage # 新版dify用非root用户启动需要修改docker卷的权限
```
## 配置dify工作流
> dify登录url 本地ip:8000
### 1. 注册账号
![alt text](部署.assets/image.png)
### 2. 导入工作流
工作流的yaml文件在dify目录下
![alt text](部署.assets/image-1.png)
安装工作流所需插件。
插件说明:
1. 安思派:工作流联网搜索插件
2. 硅基流动: LLM插件。应该替换成本地部署的模型内容
![alt text](部署.assets/image-2.png)
APIKEY授权
![alt text](部署.assets/image-3.png)
### 3. 创建一个测试知识库开启apikey
> APIKEY作用
给后端服务提供访问dify知识库内容的key权限
![alt text](部署.assets/image-4.png)
![alt text](部署.assets/image-5.png)
![alt text](部署.assets/image-6.png)
保存好知识库的apikey通常以dataset开头。所有知识库共用。
### 4.动态知识库检索工作流
#### 测试
如图即正常
![alt text](部署.assets/image-9.png)
![alt text](部署.assets/image-10.png)
#### 发布
要同时发布为工具,供工作流使用
![alt text](部署.assets/image-11.png)
### 5. 修改思政小帮手工作流
#### 删除“动态知识库检索”节点,重新添加
![alt text](部署.assets/image-12.png)
![alt text](部署.assets/image-13.png)
#### 修改节点输入、输出相关节点的引用
修改的输入参数有3个第1个是对话变量的datasets。表示该词对话中使用了那些知识库。
第2个是工作流输入的query。表示用户输入的对话内容。
第3个是对话变量的dataset_apikey。表示知识库的apikey
![alt text](部署.assets/image-24.png)
![alt text](部署.assets/image-27.png)
![alt text](部署.assets/image-26.png)
![alt text](部署.assets/image-25.png)
#### 修改知识库处理节点的引用
直接引用“动态知识库检索”的输出内容text即可
![alt text](部署.assets/image-17.png)
#### 测试发布
正常对话即正确
![alt text](部署.assets/image-18.png)
#### 获取工作流apikey
> 该apikey用于前端进行对话指定使用该工作流
![alt text](部署.assets/image-19.png)
### 6. 配置后端dify配置
```sql
-- 更新dify.apiBaseUrl
UPDATE `school_news`.`tb_sys_config` SET `config_value` = '实际ip:8000' WHERE `config_key` = 'dify.apiBaseUrl';
-- 更新dify.apiKey
UPDATE `school_news`.`tb_sys_config` SET `config_value` = '工作流的apikey' WHERE `config_key` = 'dify.apiKey';
-- 更新dify.dify.knowledgeApiKey
UPDATE `school_news`.`tb_sys_config` SET `config_value` = '知识库的apikey' WHERE `config_key` = 'dify.dify.knowledgeApiKey';
-- 更新智能体配置的api_key。该api_key的编辑权限前端未开放
UPDATE `school_news`.`tb_ai_agent_config` SET `dify_api_key`='工作流的apikey' WHERE `id` = 'agent_default_001';
```
### 7. 重启后端服务
即可进行对话
![alt text](部署.assets/image-20.png)
## 系统配置
### 消息模块配置
#### 短信
申请阿里云的短信服务,配置到后端
![alt text](部署.assets/image-21.png)
#### 邮箱
开启邮箱服务
![alt text](部署.assets/image-22.png)