|
|
2 тижнів тому | |
|---|---|---|
| .. | ||
| app | 2 тижнів тому | |
| compose | 3 тижнів тому | |
| config | 3 місяців тому | |
| database | 1 місяць тому | |
| migrations | 2 тижнів тому | |
| scripts | 1 місяць тому | |
| .env.production.example | 3 тижнів тому | |
| CHECKLIST.md | 3 тижнів тому | |
| DEPLOYMENT_GUIDE.md | 3 тижнів тому | |
| MANIFEST.md | 3 тижнів тому | |
| README.md | 3 тижнів тому | |
| __init__.py | 3 місяців тому | |
| alembic.ini | 1 місяць тому | |
| dataops.env | 2 тижнів тому | |
| deploy_dataops.sh | 1 місяць тому | |
| gunicorn_config.py | 1 місяць тому | |
| package_release.sh | 1 місяць тому | |
| requirements.txt | 3 тижнів тому | |
| sync_release.sh | 1 місяць тому | |
| wsgi.py | 3 місяців тому | |
本目录包含应用发布副本、配置模板、运维脚本与部署文档。
第一阶段示范版的标准交付方式已切换为
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 # 文件清单与版本说明
# 方式 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'
cd /tmp/dataops-platform # 或解压后的 dataops-platform 目录
chmod +x deploy_dataops.sh scripts/*.sh
sudo bash deploy_dataops.sh
脚本会安装 /etc/dataops-platform/dataops.env 并 退出,提示编辑配置。
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 会在调用大模型前失败,避免产生无效模型
费用。轮换会使未消费的十分钟回执失效:常规轮换应暂停新解析、等待回执消费或过期,
再统一更新并重启全部后端实例;紧急轮换后需重新解析未提交规则。
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),其余服务需运维提前部署并保证网络可达。