|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+# 完整部署指南
|
|
|
2
|
+
|
|
|
3
|
+> 西安云美电子科技有限公司 - 企业知识库
|
|
|
4
|
+> 版本:v1.0 | 创建时间:2026-06-06
|
|
|
5
|
+
|
|
|
6
|
+---
|
|
|
7
|
+
|
|
|
8
|
+## 部署架构概览
|
|
|
9
|
+
|
|
|
10
|
+```
|
|
|
11
|
+ ┌─────────────────────┐
|
|
|
12
|
+ │ 用户 (浏览器) │
|
|
|
13
|
+ └──────────┬──────────┘
|
|
|
14
|
+ │
|
|
|
15
|
+ ┌──────────▼──────────┐
|
|
|
16
|
+ │ Nginx (反向代理) │ :80 / :443
|
|
|
17
|
+ │ SSL 终止 / 负载均衡 │
|
|
|
18
|
+ └──────────┬──────────┘
|
|
|
19
|
+ │
|
|
|
20
|
+ ┌───────────────┼───────────────┐
|
|
|
21
|
+ │ │ │
|
|
|
22
|
+ ┌──────▼──────┐ ┌─────▼─────┐ ┌──────▼──────┐
|
|
|
23
|
+ │ Dify Web │ │ Dify API │ │ SSRF Proxy │
|
|
|
24
|
+ │ (React SPA) │ │ (Flask) │ │ (Squid) │
|
|
|
25
|
+ │ :3000 │ │ :5001 │ │ :3128 │
|
|
|
26
|
+ └─────────────┘ └─────┬─────┘ └─────────────┘
|
|
|
27
|
+ │
|
|
|
28
|
+ ┌────────────┼────────────┐
|
|
|
29
|
+ │ │ │
|
|
|
30
|
+ ┌──────▼──────┐ ┌──▼────┐ ┌─────▼──────┐
|
|
|
31
|
+ │ PostgreSQL │ │ Redis │ │ Qdrant │
|
|
|
32
|
+ │ :5432 │ │ :6379 │ │ :6333 │
|
|
|
33
|
+ └─────────────┘ └───────┘ └────────────┘
|
|
|
34
|
+```
|
|
|
35
|
+
|
|
|
36
|
+---
|
|
|
37
|
+
|
|
|
38
|
+## 第一步:服务器准备
|
|
|
39
|
+
|
|
|
40
|
+### 1.1 系统要求
|
|
|
41
|
+
|
|
|
42
|
+- Ubuntu 22.04 LTS(推荐)
|
|
|
43
|
+- 最低 4 核 CPU / 8 GB RAM / 50 GB SSD
|
|
|
44
|
+- 推荐 8 核 CPU / 16 GB RAM / 100 GB SSD
|
|
|
45
|
+
|
|
|
46
|
+### 1.2 安装 Docker
|
|
|
47
|
+
|
|
|
48
|
+```bash
|
|
|
49
|
+# 更新系统
|
|
|
50
|
+sudo apt update && sudo apt upgrade -y
|
|
|
51
|
+
|
|
|
52
|
+# 安装 Docker
|
|
|
53
|
+curl -fsSL https://get.docker.com | sh
|
|
|
54
|
+
|
|
|
55
|
+# 安装 Docker Compose(如未自带)
|
|
|
56
|
+sudo apt install docker-compose-plugin -y
|
|
|
57
|
+
|
|
|
58
|
+# 验证安装
|
|
|
59
|
+docker --version
|
|
|
60
|
+docker compose version
|
|
|
61
|
+
|
|
|
62
|
+# 将当前用户加入 docker 组
|
|
|
63
|
+sudo usermod -aG docker $USER
|
|
|
64
|
+# 重新登录生效
|
|
|
65
|
+```
|
|
|
66
|
+
|
|
|
67
|
+---
|
|
|
68
|
+
|
|
|
69
|
+## 第二步:部署 Dify
|
|
|
70
|
+
|
|
|
71
|
+### 2.1 克隆项目
|
|
|
72
|
+
|
|
|
73
|
+```bash
|
|
|
74
|
+git clone http://git.xayunmei.com/yunmei/dify-app.git
|
|
|
75
|
+cd dify-app
|
|
|
76
|
+git checkout feature/dev
|
|
|
77
|
+```
|
|
|
78
|
+
|
|
|
79
|
+### 2.2 配置环境变量
|
|
|
80
|
+
|
|
|
81
|
+```bash
|
|
|
82
|
+cd docker
|
|
|
83
|
+
|
|
|
84
|
+# 复制模板
|
|
|
85
|
+cp .env.example .env
|
|
|
86
|
+
|
|
|
87
|
+# 生成 SECRET_KEY
|
|
|
88
|
+SECRET_KEY=$(openssl rand -hex 32)
|
|
|
89
|
+echo "生成的 SECRET_KEY: $SECRET_KEY"
|
|
|
90
|
+
|
|
|
91
|
+# 编辑 .env,填入实际值
|
|
|
92
|
+nano .env
|
|
|
93
|
+```
|
|
|
94
|
+
|
|
|
95
|
+**必须修改的配置项**:
|
|
|
96
|
+
|
|
|
97
|
+| 变量 | 说明 | 操作 |
|
|
|
98
|
+|------|------|------|
|
|
|
99
|
+| `SECRET_KEY` | 安全密钥 | 使用上面生成的值 |
|
|
|
100
|
+| `POSTGRES_PASSWORD` | 数据库密码 | 设置强密码 |
|
|
|
101
|
+| `REDIS_PASSWORD` | Redis 密码 | 设置强密码 |
|
|
|
102
|
+| `DEEPSEEK_API_KEY` | DeepSeek API Key | 从 DeepSeek 平台获取 |
|
|
|
103
|
+
|
|
|
104
|
+### 2.3 启动服务
|
|
|
105
|
+
|
|
|
106
|
+```bash
|
|
|
107
|
+# 拉取镜像
|
|
|
108
|
+docker compose pull
|
|
|
109
|
+
|
|
|
110
|
+# 启动所有服务
|
|
|
111
|
+docker compose up -d
|
|
|
112
|
+
|
|
|
113
|
+# 查看状态
|
|
|
114
|
+docker compose ps
|
|
|
115
|
+
|
|
|
116
|
+# 等待所有服务健康(约 30-60 秒)
|
|
|
117
|
+docker compose ps --format "table {{.Name}}\t{{.Status}}"
|
|
|
118
|
+```
|
|
|
119
|
+
|
|
|
120
|
+### 2.4 验证部署
|
|
|
121
|
+
|
|
|
122
|
+```bash
|
|
|
123
|
+# 检查 API 服务
|
|
|
124
|
+curl http://localhost:5001/health
|
|
|
125
|
+
|
|
|
126
|
+# 检查 Web 服务
|
|
|
127
|
+curl -I http://localhost:80
|
|
|
128
|
+```
|
|
|
129
|
+
|
|
|
130
|
+---
|
|
|
131
|
+
|
|
|
132
|
+## 第三步:初始化 Dify
|
|
|
133
|
+
|
|
|
134
|
+### 3.1 创建管理员账号
|
|
|
135
|
+
|
|
|
136
|
+1. 浏览器访问 `http://<服务器IP>:80`
|
|
|
137
|
+2. 首次访问进入设置向导
|
|
|
138
|
+3. 填写邮箱和密码,创建管理员账号
|
|
|
139
|
+4. 设置管理员姓名
|
|
|
140
|
+
|
|
|
141
|
+### 3.2 配置模型提供者
|
|
|
142
|
+
|
|
|
143
|
+1. 进入 Dify 控制台
|
|
|
144
|
+2. 导航到 **设置 → 模型提供者**
|
|
|
145
|
+3. 添加 **DeepSeek**:
|
|
|
146
|
+ - API Base: `https://api.deepseek.com`
|
|
|
147
|
+ - API Key: 填入实际的 DeepSeek API Key
|
|
|
148
|
+4. 验证连接成功
|
|
|
149
|
+
|
|
|
150
|
+### 3.3 创建知识库
|
|
|
151
|
+
|
|
|
152
|
+按 `docs/knowledge-base-structure.md` 中的结构创建知识库:
|
|
|
153
|
+
|
|
|
154
|
+| 知识库名称 | 说明 |
|
|
|
155
|
+|-----------|------|
|
|
|
156
|
+| KB-COMP-公司概况 | 公司简介、组织架构 |
|
|
|
157
|
+| KB-PROD-产品技术 | 产品手册、技术规范 |
|
|
|
158
|
+| KB-QUAL-质量管理 | 质量体系、检测标准 |
|
|
|
159
|
+| KB-RULE-制度流程 | 管理制度、审批流程 |
|
|
|
160
|
+| KB-TRAIN-培训学习 | 培训材料 |
|
|
|
161
|
+| KB-PROJ-项目档案 | 项目文档 |
|
|
|
162
|
+| KB-FAQ-常见问题 | FAQ |
|
|
|
163
|
+
|
|
|
164
|
+**每个知识库的分段配置**:
|
|
|
165
|
+- 分段模式:自动
|
|
|
166
|
+- 最大分段长度:500 tokens
|
|
|
167
|
+- 重叠长度:50 tokens
|
|
|
168
|
+
|
|
|
169
|
+### 3.4 上传文档
|
|
|
170
|
+
|
|
|
171
|
+1. 准备各部门的知识库文档(PDF/Word/Markdown)
|
|
|
172
|
+2. 按分类上传到对应知识库
|
|
|
173
|
+3. 等待索引完成
|
|
|
174
|
+4. 测试检索效果
|
|
|
175
|
+
|
|
|
176
|
+---
|
|
|
177
|
+
|
|
|
178
|
+## 第四步:配置对话应用
|
|
|
179
|
+
|
|
|
180
|
+### 4.1 创建聊天应用
|
|
|
181
|
+
|
|
|
182
|
+1. Dify 控制台 → **创建应用 → 聊天助手**
|
|
|
183
|
+2. 应用名称:**云美知识助手**
|
|
|
184
|
+3. 导入 DSL 配置(可选):
|
|
|
185
|
+ - 应用设置 → 右上角 → **导入 DSL**
|
|
|
186
|
+ - 上传 `dsl/app-config.yaml`
|
|
|
187
|
+4. 或手动配置(参考 `dsl/app-config.yaml` 中的参数)
|
|
|
188
|
+
|
|
|
189
|
+### 4.2 配置提示词
|
|
|
190
|
+
|
|
|
191
|
+复制 `prompts/system-prompt.md` 中的系统提示词到应用配置。
|
|
|
192
|
+
|
|
|
193
|
+### 4.3 关联知识库
|
|
|
194
|
+
|
|
|
195
|
+在应用的「知识库」设置中,关联已创建的所有知识库。
|
|
|
196
|
+
|
|
|
197
|
+### 4.4 配置推荐问题
|
|
|
198
|
+
|
|
|
199
|
+复制 `prompts/system-prompt.md` 中的推荐问题到应用配置。
|
|
|
200
|
+
|
|
|
201
|
+### 4.5 测试应用
|
|
|
202
|
+
|
|
|
203
|
+使用 Dify 内置的调试界面进行测试:
|
|
|
204
|
+
|
|
|
205
|
+```
|
|
|
206
|
+测试问题1:公司的组织架构是怎样的?
|
|
|
207
|
+测试问题2:差旅报销的标准和流程是什么?
|
|
|
208
|
+测试问题3:质量管理体系审核周期是多久?
|
|
|
209
|
+```
|
|
|
210
|
+
|
|
|
211
|
+对照 `tests/test-cases.md` 执行完整测试。
|
|
|
212
|
+
|
|
|
213
|
+---
|
|
|
214
|
+
|
|
|
215
|
+## 第五步:发布与接入
|
|
|
216
|
+
|
|
|
217
|
+### 5.1 发布应用
|
|
|
218
|
+
|
|
|
219
|
+1. 点击应用右上角 **发布**
|
|
|
220
|
+2. 选择 **运行环境**(生产环境)
|
|
|
221
|
+3. 确认发布
|
|
|
222
|
+
|
|
|
223
|
+### 5.2 获取 API Key
|
|
|
224
|
+
|
|
|
225
|
+1. 应用 → **访问 API**
|
|
|
226
|
+2. 创建 API Key
|
|
|
227
|
+3. 保存 Key(只显示一次)
|
|
|
228
|
+
|
|
|
229
|
+### 5.3 接入企业微信(可选)
|
|
|
230
|
+
|
|
|
231
|
+参考 `docs/api-integration.md` 中的企业微信集成示例。
|
|
|
232
|
+
|
|
|
233
|
+### 5.4 配置 Nginx SSL(生产环境必做)
|
|
|
234
|
+
|
|
|
235
|
+```bash
|
|
|
236
|
+# 将 SSL 证书放入 nginx/ssl/ 目录
|
|
|
237
|
+mkdir -p nginx/ssl
|
|
|
238
|
+
|
|
|
239
|
+# 编辑 Nginx 配置,启用 HTTPS
|
|
|
240
|
+# 修改 .env 中的 NGINX_SSL_PORT
|
|
|
241
|
+```
|
|
|
242
|
+
|
|
|
243
|
+---
|
|
|
244
|
+
|
|
|
245
|
+## 日常运维
|
|
|
246
|
+
|
|
|
247
|
+### 备份
|
|
|
248
|
+
|
|
|
249
|
+```bash
|
|
|
250
|
+# 数据库备份(建议设置 cron 每日执行)
|
|
|
251
|
+docker compose exec db pg_dump -U postgres dify > /backup/dify_$(date +%Y%m%d).sql
|
|
|
252
|
+
|
|
|
253
|
+# 向量库备份
|
|
|
254
|
+docker compose exec qdrant curl -X POST http://localhost:6333/snapshots
|
|
|
255
|
+```
|
|
|
256
|
+
|
|
|
257
|
+### 更新
|
|
|
258
|
+
|
|
|
259
|
+```bash
|
|
|
260
|
+cd docker
|
|
|
261
|
+docker compose pull
|
|
|
262
|
+docker compose up -d
|
|
|
263
|
+```
|
|
|
264
|
+
|
|
|
265
|
+### 监控
|
|
|
266
|
+
|
|
|
267
|
+```bash
|
|
|
268
|
+# 查看服务状态
|
|
|
269
|
+docker compose ps
|
|
|
270
|
+
|
|
|
271
|
+# 查看日志
|
|
|
272
|
+docker compose logs -f --tail=100 api
|
|
|
273
|
+docker compose logs -f --tail=100 worker
|
|
|
274
|
+
|
|
|
275
|
+# 查看资源占用
|
|
|
276
|
+docker stats --no-stream
|
|
|
277
|
+```
|
|
|
278
|
+
|
|
|
279
|
+---
|
|
|
280
|
+
|
|
|
281
|
+## 故障排查速查
|
|
|
282
|
+
|
|
|
283
|
+| 现象 | 排查命令 | 常见原因 |
|
|
|
284
|
+|------|---------|---------|
|
|
|
285
|
+| 页面打不开 | `docker compose ps` | 服务未启动 |
|
|
|
286
|
+| 模型不回复 | `docker compose logs api` | API Key 无效/过期 |
|
|
|
287
|
+| 知识库不检索 | `docker compose logs worker` | Worker 异常/索引未完成 |
|
|
|
288
|
+| 数据库连接失败 | `docker compose logs db` | 密码不一致 |
|
|
|
289
|
+| 磁盘空间不足 | `df -h` | 日志/数据膨胀 |
|
|
|
290
|
+
|
|
|
291
|
+---
|
|
|
292
|
+
|
|
|
293
|
+_最后更新: 2026-06-06_
|