Files
Nexus/docs/design/specs/2026-05-17-architecture-optimization.md
T
Your Name c9a99f4fb3 fix: 全项目文档对齐 + 代码清理
代码修复:
- web/agent/agent.py: datetime.utcnow() → datetime.now(timezone.utc)
- requirements.txt: 移除 paramiko==3.5.0 (已无活跃引用)
- 删除 server/infrastructure/ssh/pool.py (DEPRECATED, 无引用)

连接池三层对齐 (config.py/.env.example/session.py):
- DB_POOL_SIZE 100→160, DB_MAX_OVERFLOW 100→120
- 基于 MySQL max_connections=400, install.php 公式

文档修复 (21项):
- P0: 硬编码域名/IP替换为配置变量占位符
- P1: 10个过时设计文档加归档标注 (引用旧文件结构)
- P2: step-3-webssh报告 paramiko引用修正
- 6份审查报告连接池参数勘误 100/100→160/120
- ECC安全报告 EC5 datetime.utcnow 标记已修复
- docs/README.md 文档索引重写
- docs/memory/mem_nexus_overview.md 移除硬编码凭证
- docs/project/tech-stack-inventory.md paramiko标记已移除

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 08:19:56 +08:00

2.8 KiB
Raw Blame History

架构优化 — 配置分发与部署设计报告

更新: 2026-05-22 — 反映 PHP→API 迁移进度

一、优化目标

  1. 配置源统一 — MySQL settings 表为唯一动态配置源,.env 仅启动必需
  2. 主服务器 IP 变更自动化 — Agent config.json 推送 + 热重载
  3. 全量可配置化 — 无硬编码路径/域名/IP,环境变量驱动部署

二、配置架构

【当前架构 — 已实现】

install.php (部署阶段)
  → 写入 config.php (PHP 前端)
  → 写入 .env (NEXUS_ 前缀, Python 启动必需)
  → 写入 MySQL settings 表 (动态配置)

Python 启动
  → 读 .env (SECRET_KEY, DATABASE_URL, API_KEY — 不可改)
  → load_settings_from_db() → MySQL settings 覆盖可改项

前端运行
  → api.js → JWT 认证 → FastAPI API
  → 不再依赖 PHP Session

配置变更
  → settings.html → POST /api/settings → MySQL
  → Python 重启后 load_settings_from_db() 自动生效

三、已实现改动

3.1 配置统一

组件 实现
server/config.py load_settings_from_db() — 启动时从 MySQL settings 表读取
server/api/settings.py GET/POST /api/settings — 前端读写配置
MySQL settings 表 key-value 存储: api_key, telegram, thresholds, pool_size
.env NEXUS_ 前缀,启动必需项 (SECRET_KEY, DATABASE_URL)

不可改配置 (.env only):

  • SECRET_KEY, API_KEY, ENCRYPTION_KEY, DATABASE_URL

可改配置 (MySQL 可覆盖):

  • system_name/title, pool_size/overflow, redis_url, 告警阈值, Telegram

3.2 配置分发到子服务器

组件 实现
web/agent/config.example.json 统一 JSON 格式,替代 YAML
web/agent/install.sh Agent 安装脚本

3.3 全量可配置化

组件 实现
NEXUS_DEPLOY_PATH 部署路径,所有脚本读取此变量
NEXUS_CORS_ORIGINS CORS 域名,逗号分隔
deploy/nexus.conf 模板化 Supervisor 配置 ({{DEPLOY_DIR}})
deploy/nginx_*.conf 模板化 Nginx 配置 ({{SERVER_NAME}})
deploy/health_monitor.sh 从 .env 读取 NEXUS_DEPLOY_DIR

四、待实现建议

4.1 推送前预览 (rsync dry-run)

设计: 推送对话框点「预览」→ rsync -avzn --stats dry-run → 显示预计传输文件数和大小

4.2 settings 页 tab 化

设计: 当前所有设置堆在一个长页面

[TOTP] [修改密码] [密码预设] [导入导出] [系统配置] [推送配置]

4.3 Agent 自动化安装增强

设计: install.sh 配合 config.json

  • 读取 config.example.json → 提示用户填入 central.url → 生成 config.json
  • 不再依赖环境变量

4.4 install.php → install.html 迁移

设计: install.php 是最后残留的 PHP 页面,迁移到纯静态 HTML + FastAPI API 后可移除 PHP-FPM 依赖