马小龙 8ec8caa093 feat: establish product engineering delivery controls 2 周之前
..
app bcc0982d9b feat: establish cross-domain security governance 2 周之前
compose 8ec8caa093 feat: establish product engineering delivery controls 2 周之前
config a8a0a1c783 修改LLM大模型的使用,不用qwen,用deepseek v4。 3 月之前
database 38326506f0 feat: modernize platform and add datasource pools 1 月之前
environments 8ec8caa093 feat: establish product engineering delivery controls 2 周之前
migrations bcc0982d9b feat: establish cross-domain security governance 2 周之前
scripts 38326506f0 feat: modernize platform and add datasource pools 1 月之前
.env.production.example ec05999815 feat: add tamper-evident governance audit 3 周之前
CHECKLIST.md 8ec8caa093 feat: establish product engineering delivery controls 2 周之前
DEPLOYMENT_GUIDE.md 3f49a517a6 feat: add offline deployment and recovery workflow 3 周之前
MANIFEST.md 8ec8caa093 feat: establish product engineering delivery controls 2 周之前
README.md 3f49a517a6 feat: add offline deployment and recovery workflow 3 周之前
__init__.py a8a0a1c783 修改LLM大模型的使用,不用qwen,用deepseek v4。 3 月之前
alembic.ini 38326506f0 feat: modernize platform and add datasource pools 1 月之前
dataops.env bcc0982d9b feat: establish cross-domain security governance 2 周之前
deploy_dataops.sh 38326506f0 feat: modernize platform and add datasource pools 1 月之前
gunicorn_config.py 38326506f0 feat: modernize platform and add datasource pools 1 月之前
package_release.sh 38326506f0 feat: modernize platform and add datasource pools 1 月之前
requirements.txt 3f49a517a6 feat: add offline deployment and recovery workflow 3 周之前
sync_release.sh 38326506f0 feat: modernize platform and add datasource pools 1 月之前
wsgi.py a8a0a1c783 修改LLM大模型的使用,不用qwen,用deepseek v4。 3 月之前

README.md

DataOps Platform 发布包

本目录包含应用发布副本、配置模板、运维脚本与部署文档。

第一阶段示范版的标准交付方式已切换为 compose/README.md 所述的 Compose 离线包、升级前检查、 备份和恢复流程。下文 Supervisor 方式保留给既有单机环境兼容使用,不等同于 WP13 企业离线交付验收。


目录结构

deployment/
├── app/                         # Flask 应用源码(与仓库 app/ 同步)
├── database/                    # PostgreSQL 初始化/迁移 SQL
├── config/                      # Nginx / Supervisor 配置模板
│   ├── nginx-dataops-platform.conf
│   └── supervisor-dataops-platform.conf
├── scripts/                     # 运维脚本(启停、重启、诊断)
│   ├── dataops-common.sh        # 公共函数
│   ├── deploy_dataops.sh        # 已安装后的增量部署(可选)
│   ├── run_dataops.sh           # Supervisor 启动 Gunicorn
│   ├── start_dataops.sh
│   ├── stop_dataops.sh
│   └── restart_dataops.sh
├── dataops.env                  # 生产环境变量模板(首次部署复制到 /etc)
├── .env.production.example      # 环境变量说明副本
├── requirements.txt             # Python 依赖(固定版本)
├── wsgi.py                      # Gunicorn WSGI 入口
├── gunicorn_config.py           # Gunicorn 配置(含日志初始化)
├── deploy_dataops.sh            # ★ 一键部署入口
├── sync_release.sh              # 开发侧:从仓库同步最新代码到本目录
├── package_release.sh           # 开发侧:打包 tar.gz
├── compose/                     # WP13 Compose 离线交付、备份、恢复与回滚
├── README.md                    # 本文件(快速开始)
├── DEPLOYMENT_GUIDE.md          # 完整部署与运维手册
├── CHECKLIST.md                 # 部署前后检查清单
└── MANIFEST.md                  # 文件清单与版本说明

快速部署(3 步)

1. 上传到 Ubuntu 服务器

# 方式 A:直接上传 deployment/ 目录
scp -r deployment/ ubuntu@your-server:/tmp/dataops-platform

# 方式 B:使用打包文件(开发机先执行 package_release.sh)
scp dist/dataops-platform-release-*.tar.gz ubuntu@your-server:/tmp/
ssh ubuntu@your-server 'cd /tmp && tar -xzf dataops-platform-release-*.tar.gz'

2. 首次部署(生成环境变量文件)

cd /tmp/dataops-platform   # 或解压后的 dataops-platform 目录
chmod +x deploy_dataops.sh scripts/*.sh
sudo bash deploy_dataops.sh

脚本会安装 /etc/dataops-platform/dataops.env退出,提示编辑配置。

3. 填写配置后再次部署

sudo vim /etc/dataops-platform/dataops.env
# 必改: SECRET_KEY, RULE_GENERATION_RECEIPT_SECRET, DEEPSEEK_API_KEY, N8N_API_KEY
# 核对: DATABASE_URL, NEO4J_*, MINIO_*, API_BASE_URL

sudo bash deploy_dataops.sh

RULE_GENERATION_RECEIPT_SECRET 是 AI 规则解析回执的专用 HMAC 密钥,必须 独立于 SECRET_KEY 生成:

openssl rand -hex 32

将输出只写入 /etc/dataops-platform/dataops.env 或密钥管理系统,不要提交到 仓库。缺少该值时 /api/rules/interpret 会在调用大模型前失败,避免产生无效模型 费用。轮换会使未消费的十分钟回执失效:常规轮换应暂停新解析、等待回执消费或过期, 再统一更新并重启全部后端实例;紧急轮换后需重新解析未提交规则。

可选:同时配置 Nginx

sudo ENABLE_NGINX=1 \
  NGINX_SERVER_NAME=company.citupro.com \
  NGINX_LISTEN_PORT=18183 \
  bash deploy_dataops.sh

SSL 证书路径见 config/nginx-dataops-platform.conf,部署后按实际证书修改。


部署结果

项目 默认值
应用目录 /opt/dataops-platform
环境变量 /etc/dataops-platform/dataops.env
监听地址 0.0.0.0:5500(Gunicorn)
进程管理 Supervisor dataops-platform
应用日志 /opt/dataops-platform/logs/flask_production.log
Supervisor 日志 /var/log/supervisor/dataops-platform.log

日常运维

# 健康检查
curl http://127.0.0.1:5500/api/system/health

# 启停
sudo /opt/dataops-platform/scripts/start_dataops.sh
sudo /opt/dataops-platform/scripts/stop_dataops.sh
sudo /opt/dataops-platform/scripts/restart_dataops.sh

# 查看日志
tail -f /opt/dataops-platform/logs/flask_production.log
tail -f /var/log/supervisor/dataops-platform.log

开发侧:更新发布包

在仓库根目录执行:

bash deployment/sync_release.sh    # 同步 app/、database/、scripts/ 等
bash deployment/package_release.sh # 生成 dist/dataops-platform-release-YYYYMMDD.tar.gz

Compose 离线包应改用:

docker compose -f deploy/docker/docker-compose.yml build backend runner frontend
bash deployment/compose/package_offline.sh --version <发布版本>

详细文档


外部依赖(需提前安装)

服务 说明
Python 3.11 含 venv、pip
Supervisor 进程守护
PostgreSQL 14+ 关系数据库
Neo4j 5.x 图数据库
MinIO 对象存储
n8n 工作流(可选 API)
Nginx 反向代理(可选)
DeepSeek API LLM 翻译、DDL 解析等

脚本会自动安装 python3-venv(Ubuntu apt),其余服务需运维提前部署并保证网络可达。