294 lines
7.3 KiB
Markdown
294 lines
7.3 KiB
Markdown
# 完整部署指南
|
||
|
||
> 西安云美电子科技有限公司 - 企业知识库
|
||
> 版本:v1.0 | 创建时间:2026-06-06
|
||
|
||
---
|
||
|
||
## 部署架构概览
|
||
|
||
```
|
||
┌─────────────────────┐
|
||
│ 用户 (浏览器) │
|
||
└──────────┬──────────┘
|
||
│
|
||
┌──────────▼──────────┐
|
||
│ Nginx (反向代理) │ :80 / :443
|
||
│ SSL 终止 / 负载均衡 │
|
||
└──────────┬──────────┘
|
||
│
|
||
┌───────────────┼───────────────┐
|
||
│ │ │
|
||
┌──────▼──────┐ ┌─────▼─────┐ ┌──────▼──────┐
|
||
│ Dify Web │ │ Dify API │ │ SSRF Proxy │
|
||
│ (React SPA) │ │ (Flask) │ │ (Squid) │
|
||
│ :3000 │ │ :5001 │ │ :3128 │
|
||
└─────────────┘ └─────┬─────┘ └─────────────┘
|
||
│
|
||
┌────────────┼────────────┐
|
||
│ │ │
|
||
┌──────▼──────┐ ┌──▼────┐ ┌─────▼──────┐
|
||
│ PostgreSQL │ │ Redis │ │ Qdrant │
|
||
│ :5432 │ │ :6379 │ │ :6333 │
|
||
└─────────────┘ └───────┘ └────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 第一步:服务器准备
|
||
|
||
### 1.1 系统要求
|
||
|
||
- Ubuntu 22.04 LTS(推荐)
|
||
- 最低 4 核 CPU / 8 GB RAM / 50 GB SSD
|
||
- 推荐 8 核 CPU / 16 GB RAM / 100 GB SSD
|
||
|
||
### 1.2 安装 Docker
|
||
|
||
```bash
|
||
# 更新系统
|
||
sudo apt update && sudo apt upgrade -y
|
||
|
||
# 安装 Docker
|
||
curl -fsSL https://get.docker.com | sh
|
||
|
||
# 安装 Docker Compose(如未自带)
|
||
sudo apt install docker-compose-plugin -y
|
||
|
||
# 验证安装
|
||
docker --version
|
||
docker compose version
|
||
|
||
# 将当前用户加入 docker 组
|
||
sudo usermod -aG docker $USER
|
||
# 重新登录生效
|
||
```
|
||
|
||
---
|
||
|
||
## 第二步:部署 Dify
|
||
|
||
### 2.1 克隆项目
|
||
|
||
```bash
|
||
git clone http://git.xayunmei.com/yunmei/dify-app.git
|
||
cd dify-app
|
||
git checkout feature/dev
|
||
```
|
||
|
||
### 2.2 配置环境变量
|
||
|
||
```bash
|
||
cd docker
|
||
|
||
# 复制模板
|
||
cp .env.example .env
|
||
|
||
# 生成 SECRET_KEY
|
||
SECRET_KEY=$(openssl rand -hex 32)
|
||
echo "生成的 SECRET_KEY: $SECRET_KEY"
|
||
|
||
# 编辑 .env,填入实际值
|
||
nano .env
|
||
```
|
||
|
||
**必须修改的配置项**:
|
||
|
||
| 变量 | 说明 | 操作 |
|
||
|------|------|------|
|
||
| `SECRET_KEY` | 安全密钥 | 使用上面生成的值 |
|
||
| `POSTGRES_PASSWORD` | 数据库密码 | 设置强密码 |
|
||
| `REDIS_PASSWORD` | Redis 密码 | 设置强密码 |
|
||
| `DEEPSEEK_API_KEY` | DeepSeek API Key | 从 DeepSeek 平台获取 |
|
||
|
||
### 2.3 启动服务
|
||
|
||
```bash
|
||
# 拉取镜像
|
||
docker compose pull
|
||
|
||
# 启动所有服务
|
||
docker compose up -d
|
||
|
||
# 查看状态
|
||
docker compose ps
|
||
|
||
# 等待所有服务健康(约 30-60 秒)
|
||
docker compose ps --format "table {{.Name}}\t{{.Status}}"
|
||
```
|
||
|
||
### 2.4 验证部署
|
||
|
||
```bash
|
||
# 检查 API 服务
|
||
curl http://localhost:5001/health
|
||
|
||
# 检查 Web 服务
|
||
curl -I http://localhost:80
|
||
```
|
||
|
||
---
|
||
|
||
## 第三步:初始化 Dify
|
||
|
||
### 3.1 创建管理员账号
|
||
|
||
1. 浏览器访问 `http://<服务器IP>:80`
|
||
2. 首次访问进入设置向导
|
||
3. 填写邮箱和密码,创建管理员账号
|
||
4. 设置管理员姓名
|
||
|
||
### 3.2 配置模型提供者
|
||
|
||
1. 进入 Dify 控制台
|
||
2. 导航到 **设置 → 模型提供者**
|
||
3. 添加 **DeepSeek**:
|
||
- API Base: `https://api.deepseek.com`
|
||
- API Key: 填入实际的 DeepSeek API Key
|
||
4. 验证连接成功
|
||
|
||
### 3.3 创建知识库
|
||
|
||
按 `docs/knowledge-base-structure.md` 中的结构创建知识库:
|
||
|
||
| 知识库名称 | 说明 |
|
||
|-----------|------|
|
||
| KB-COMP-公司概况 | 公司简介、组织架构 |
|
||
| KB-PROD-产品技术 | 产品手册、技术规范 |
|
||
| KB-QUAL-质量管理 | 质量体系、检测标准 |
|
||
| KB-RULE-制度流程 | 管理制度、审批流程 |
|
||
| KB-TRAIN-培训学习 | 培训材料 |
|
||
| KB-PROJ-项目档案 | 项目文档 |
|
||
| KB-FAQ-常见问题 | FAQ |
|
||
|
||
**每个知识库的分段配置**:
|
||
- 分段模式:自动
|
||
- 最大分段长度:500 tokens
|
||
- 重叠长度:50 tokens
|
||
|
||
### 3.4 上传文档
|
||
|
||
1. 准备各部门的知识库文档(PDF/Word/Markdown)
|
||
2. 按分类上传到对应知识库
|
||
3. 等待索引完成
|
||
4. 测试检索效果
|
||
|
||
---
|
||
|
||
## 第四步:配置对话应用
|
||
|
||
### 4.1 创建聊天应用
|
||
|
||
1. Dify 控制台 → **创建应用 → 聊天助手**
|
||
2. 应用名称:**云美知识助手**
|
||
3. 导入 DSL 配置(可选):
|
||
- 应用设置 → 右上角 → **导入 DSL**
|
||
- 上传 `dsl/app-config.yaml`
|
||
4. 或手动配置(参考 `dsl/app-config.yaml` 中的参数)
|
||
|
||
### 4.2 配置提示词
|
||
|
||
复制 `prompts/system-prompt.md` 中的系统提示词到应用配置。
|
||
|
||
### 4.3 关联知识库
|
||
|
||
在应用的「知识库」设置中,关联已创建的所有知识库。
|
||
|
||
### 4.4 配置推荐问题
|
||
|
||
复制 `prompts/system-prompt.md` 中的推荐问题到应用配置。
|
||
|
||
### 4.5 测试应用
|
||
|
||
使用 Dify 内置的调试界面进行测试:
|
||
|
||
```
|
||
测试问题1:公司的组织架构是怎样的?
|
||
测试问题2:差旅报销的标准和流程是什么?
|
||
测试问题3:质量管理体系审核周期是多久?
|
||
```
|
||
|
||
对照 `tests/test-cases.md` 执行完整测试。
|
||
|
||
---
|
||
|
||
## 第五步:发布与接入
|
||
|
||
### 5.1 发布应用
|
||
|
||
1. 点击应用右上角 **发布**
|
||
2. 选择 **运行环境**(生产环境)
|
||
3. 确认发布
|
||
|
||
### 5.2 获取 API Key
|
||
|
||
1. 应用 → **访问 API**
|
||
2. 创建 API Key
|
||
3. 保存 Key(只显示一次)
|
||
|
||
### 5.3 接入企业微信(可选)
|
||
|
||
参考 `docs/api-integration.md` 中的企业微信集成示例。
|
||
|
||
### 5.4 配置 Nginx SSL(生产环境必做)
|
||
|
||
```bash
|
||
# 将 SSL 证书放入 nginx/ssl/ 目录
|
||
mkdir -p nginx/ssl
|
||
|
||
# 编辑 Nginx 配置,启用 HTTPS
|
||
# 修改 .env 中的 NGINX_SSL_PORT
|
||
```
|
||
|
||
---
|
||
|
||
## 日常运维
|
||
|
||
### 备份
|
||
|
||
```bash
|
||
# 数据库备份(建议设置 cron 每日执行)
|
||
docker compose exec db pg_dump -U postgres dify > /backup/dify_$(date +%Y%m%d).sql
|
||
|
||
# 向量库备份
|
||
docker compose exec qdrant curl -X POST http://localhost:6333/snapshots
|
||
```
|
||
|
||
### 更新
|
||
|
||
```bash
|
||
cd docker
|
||
docker compose pull
|
||
docker compose up -d
|
||
```
|
||
|
||
### 监控
|
||
|
||
```bash
|
||
# 查看服务状态
|
||
docker compose ps
|
||
|
||
# 查看日志
|
||
docker compose logs -f --tail=100 api
|
||
docker compose logs -f --tail=100 worker
|
||
|
||
# 查看资源占用
|
||
docker stats --no-stream
|
||
```
|
||
|
||
---
|
||
|
||
## 故障排查速查
|
||
|
||
| 现象 | 排查命令 | 常见原因 |
|
||
|------|---------|---------|
|
||
| 页面打不开 | `docker compose ps` | 服务未启动 |
|
||
| 模型不回复 | `docker compose logs api` | API Key 无效/过期 |
|
||
| 知识库不检索 | `docker compose logs worker` | Worker 异常/索引未完成 |
|
||
| 数据库连接失败 | `docker compose logs db` | 密码不一致 |
|
||
| 磁盘空间不足 | `df -h` | 日志/数据膨胀 |
|
||
|
||
---
|
||
|
||
_最后更新: 2026-06-06_
|