2025-11-26 16:03:06 +08:00
|
|
|
|
# 校园新闻系统部署
|
|
|
|
|
|
|
|
|
|
|
|
## 加载镜像
|
|
|
|
|
|
|
|
|
|
|
|
### 镜像目录结构
|
|
|
|
|
|
|
|
|
|
|
|
---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 # 初始化数据卷
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 后端服务镜像
|
|
|
|
|
|
镜像来源由星洋智慧提供
|
2025-11-26 16:04:44 +08:00
|
|
|
|
超级管理员账号密码:superadmin 123456
|
2025-11-26 16:03:06 +08:00
|
|
|
|
|
|
|
|
|
|
#### 镜像加载
|
|
|
|
|
|
```bash
|
2025-11-27 17:59:04 +08:00
|
|
|
|
# 递归查找指定目录下的所有镜像文件并加载 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
|
2025-11-26 16:03:06 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 服务启动
|
|
|
|
|
|
```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
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 配置dify工作流
|
|
|
|
|
|
> dify登录url 本地ip:8000
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 注册账号
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
### 2. 导入工作流
|
|
|
|
|
|
工作流的yaml文件在dify目录下
|
|
|
|
|
|

|
|
|
|
|
|
安装工作流所需插件。
|
|
|
|
|
|
|
|
|
|
|
|
插件说明:
|
|
|
|
|
|
1. 安思派:工作流联网搜索插件
|
|
|
|
|
|
2. 硅基流动: LLM插件。应该替换成本地部署的模型内容
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
APIKEY授权
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
### 3. 创建一个测试知识库开启apikey
|
|
|
|
|
|
> APIKEY作用:
|
|
|
|
|
|
给后端服务提供访问dify知识库内容的key权限
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
保存好知识库的apikey,通常以dataset开头。所有知识库共用。
|
|
|
|
|
|
|
|
|
|
|
|
### 4.修改动态知识库检索工作流
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
修改点有2个:
|
|
|
|
|
|
1. 修改http节点post请求的url内容。替换成实际的 ip:8000
|
|
|
|
|
|
2. 修改Authorization的值,替换为 Bearer + 空格 + 知识库的apikey
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
#### 测试
|
|
|
|
|
|
如图即正常
|
|
|
|
|
|

|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
#### 发布
|
|
|
|
|
|
要同时发布为工具,供工作流使用
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
### 5. 修改思政小帮手工作流
|
|
|
|
|
|
#### 删除“动态知识库检索”节点,重新添加
|
|
|
|
|
|

|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
#### 修改节点输入、输出相关节点的引用
|
|
|
|
|
|
修改的输入参数有2个,第1个是对话变量的datasets。表示该词对话中,使用了那些知识库。
|
|
|
|
|
|
第2个是对话变量的query。表示用户输入的对话内容。
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
#### 修改知识库处理节点的引用
|
|
|
|
|
|
直接引用“动态知识库检索”的输出内容,text即可
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
#### 测试发布
|
|
|
|
|
|
正常对话即正确
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
#### 获取工作流apikey
|
|
|
|
|
|
> 该apikey用于前端进行对话,指定使用该工作流
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
### 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. 重启后端服务
|
|
|
|
|
|
即可进行对话
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
## 系统配置
|
|
|
|
|
|
### 消息模块配置
|
|
|
|
|
|
#### 短信
|
|
|
|
|
|
申请阿里云的短信服务,配置到后端
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
#### 邮箱
|
|
|
|
|
|
开启邮箱服务
|
|
|
|
|
|

|