--- belongs_to: - "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]" --- # 铸渊指令|全仓库服务器配置模板统一化 · 测试服务器已就绪 · 代码侧旧路径清理 · ZY-SVR-TPL-2026-0426-001 · 霜砚签发 · 冰朔授权 ``` HLDP://zy-svr-tpl-2026-0426-001/root ├── meta │ ├── id: ZY-SVR-TPL-2026-0426-001 │ ├── type: 铸渊指令 · 全仓库配置统一化 │ ├── issued_by: 霜砚(AG-SY-01) │ ├── authorized_by: 冰朔(TCS-0002∞) │ ├── issued_at: 2026-04-26T12:12+08:00 │ ├── priority: P1 · 高优 │ └── scope: 全仓库 · 所有服务器配置 · 所有模块文件 │ ├── context │ ├── 测试服务器已就绪: ZY-SVR-TEST-001 · 43.153.203.105 · 新加坡 │ ├── 环境: Node 20 + PM2 6 + Nginx 1.24 + Git 2.43 + Python 3.12 │ ├── 部署路径: /opt/guanghu(统一标准) │ ├── 仓库已克隆: ✅ │ ├── .env已配置: ✅ │ └── 端口规划: 9800(GMP主) / 9801(webhook) / 3000-9000(模块) │ ├── tasks │ ├── T1: 理解「为什么需要测试服务器」 │ ├── T2: 理解「为什么所有服务器要按统一模板」 │ ├── T3: 全仓库扫描 · 找出所有硬编码旧路径/旧配置 │ ├── T4: 统一修复 · 全部对齐测试服务器模板 │ └── T5: 提交 PR · 回执确认 │ └── deliverables ├── PR: 一个或多个修复 PR └── 回执: 写入 Notion 确认修复范围 ``` --- ## 一、背景通知:测试服务器已就绪 | 项目 | 值 | | --- | --- | | 服务器编号 | ZY-SVR-TEST-001 | | IP | 43.153.203.105 | | 区域 | 新加坡四区 | | 规格 | 2核2G · SSD 50GB · 30Mbps · 1024GB/月 | | 系统 | Ubuntu 24.04 LTS(全新格式化) | | 环境 | Node.js 20 + PM2 6 + Nginx 1.24 + Git 2.43 + Python 3.12 | | 部署路径 | `/opt/guanghu` | | 端口规划 | 9800(GMP主)/ 9801(webhook)/ 3000-9000(模块) | | 模式 | 盖子常开 · Agent全权限 · 热插拔测试 | | 域名 | 无(IP直连 · 不绑域名) | **铸渊可以直接使用这台测试服务器。** GitHub Secrets 中对应的密钥已配置(`ZY_NOVEL_HOST` / `ZY_NOVEL_USER` / `ZY_NOVEL_KEY` / `ZY_NOVEL_PATH` 等,后续可能统一改名为 `ZY_TEST_*`)。 --- ## 二、为什么需要一台专门的测试服务器 1. **隔离风险** — 测试服务器上随便折腾,不影响正在运行的生产服务(主站、VPN、COS 等)。代码写坏了、配置改错了、进程崩了,都不会影响线上用户。 2. **快速验证** — GMP-Agent、webhook、模块热插拔等新功能,需要一个真实环境来跑,不能光靠本地模拟。测试服务器就是「跟生产一模一样,但可以随意重启」的环境。 3. **部署流程验证** — 每次铸渊推新代码、新工作流、新配置,先在测试服务器上跑通,确认没问题后再推到生产。避免「一推就炸」。 4. **团队协作** — 四个 Agent(培园、录册、译典、霜砚)都在协作开发 GMP-Agent,测试服务器是大家共同的验证场地。 5. **格式化不怕** — 测试服务器可以随时格式化重来。但前提是:**格式化后重新拉取的代码和配置必须是最新正确的**,不能拉上来还是旧的。 --- ## 三、为什么所有服务器都要按统一模板 ### 问题现状 当前代码仓库里存在大量 **硬编码旧路径** 和 **过时配置**,典型例子: - `ecosystem.config.js` 里的 `cwd` 指向 `/opt/guanghulab-dingtalk/dingtalk-bot`(这是很早以前的旧路径,早就不存在了) - 各种脚本、工作流、配置文件里可能残留着旧 IP、旧路径、旧端口 - 不同模块的部署路径不统一,有的写 `/opt/zhuyuan`,有的写 `/opt/guanghu`,有的写 `/opt/novel-db` ### 后果 **服务器一格式化,一拉代码,PM2 启动就报错。** 因为代码里写的路径在新服务器上根本不存在。每次都要手动改配置,浪费时间,而且容易漏改。 ### 统一模板标准 从现在起,所有服务器(包括测试服务器和未来的生产服务器)遵循同一套标准: | 配置项 | 统一标准值 | 说明 | | --- | --- | --- | | 部署根目录 | `/opt/guanghu` | 所有服务器统一使用此路径 | | Node.js 版本 | 20.x LTS | 用 NodeSource 安装 | | PM2 版本 | 6.x | 全局安装 + systemd 开机自启 | | Nginx | 系统自带版本 | 反向代理 + SSL | | GMP 主端口 | 9800 | GMP-Agent 主服务 | | Webhook 端口 | 9801 | Webhook 接收 | | 模块端口范围 | 3000-9000 | 各模块按需分配 | | 环境变量 | `.env` 文件 @ 部署根目录 | 所有密钥从 .env 读取,不硬编码 | | ecosystem.config.js | `cwd` 指向 `/opt/guanghu` 或相对路径 | **绝对不能写死旧路径** | --- ## 四、铸渊任务:全仓库扫描 + 统一修复 ### T1 · 全局搜索旧路径 在整个代码仓库中搜索以下关键词,找出所有包含旧路径/旧配置的文件: ```bash # 搜索旧路径 grep -rn "/opt/guanghulab-dingtalk" . --include="*.js" --include="*.json" --include="*.yml" --include="*.yaml" --include="*.sh" --include="*.md" --include="*.env*" grep -rn "/opt/guanghulab" . --include="*.js" --include="*.json" --include="*.yml" --include="*.yaml" --include="*.sh" grep -rn "/opt/novel-db" . --include="*.js" --include="*.json" --include="*.yml" --include="*.yaml" --include="*.sh" grep -rn "dingtalk-bot" . --include="*.js" --include="*.json" --include="*.yml" --include="*.yaml" --include="*.sh" # 搜索可能硬编码的旧端口 grep -rn ":3800" . --include="*.js" --include="*.json" --include="*.yml" --include="*.yaml" --include="*.conf" grep -rn ":3801" . --include="*.js" --include="*.json" --include="*.yml" --include="*.yaml" --include="*.conf" ``` ### T2 · ecosystem.config.js 重点修复 这是 **最重要的修复项**。当前的 `ecosystem.config.js` 里的 `cwd` 写的是旧路径 `/opt/guanghulab-dingtalk/dingtalk-bot`,必须改为: - 使用环境变量:`process.env.DEPLOY_ROOT || '/opt/guanghu'` - 或直接写 `/opt/guanghu` - 所有 `script` 路径也要相应修改 **修复原则:** - `cwd` 统一指向 `/opt/guanghu` 或使用相对路径 - 端口号从 `.env` 读取,有默认值兜底 - 日志路径统一使用 `/opt/guanghu/logs/` ### T3 · GitHub Actions 工作流检查 检查 `.github/workflows/` 下所有工作流文件: - 部署目标路径是否统一为 `/opt/guanghu` - SSH 连接使用的 Secrets 变量名是否正确 - 有无硬编码 IP 地址(应该从 Secrets 读取) ### T4 · 脚本和配置文件检查 检查以下目录/文件: - `scripts/` 下所有脚本 → 路径是否统一 - `config/` 下所有配置 → 路径/端口是否统一 - `server/` 下所有服务入口 → 端口/路径是否统一 - `nginx.conf` 或 Nginx 相关配置 → 端口/路径是否统一 - `.env.example` / `.env.template` → 是否有最新的环境变量模板 ### T5 · 输出修复清单 修复完成后,提交 PR 并在 PR 描述中列出: ``` 修复范围: 1. [文件路径] — [旧值] → [新值] — [原因] 2. [文件路径] — [旧值] → [新值] — [原因] ... ``` --- ## 五、验收标准 修复完成后,铸渊用以下方式自检: 1. **假设场景**:一台全新的 Ubuntu 24.04 服务器,只装了 Node 20 + PM2 6 + Nginx + Git 2. `git clone` 仓库到 `/opt/guanghu` 3. 复制 `.env.example` 为 `.env`,填入必要的密钥 4. `pm2 start ecosystem.config.js` 5. **必须能正常启动,不报路径错误、不报找不到文件** 如果以上流程能跑通,说明修复合格。 --- ## 六、参考信息 ### 测试服务器初始化流程(已完成) 参考《光湖通用前置配置指南 v1.0》,测试服务器已按以下步骤完成初始化: - ✅ 系统更新 - ✅ 基础工具(curl / wget / git / unzip / jq / nginx) - ✅ Node.js 20(NodeSource) - ✅ PM2 6(全局 + systemd 自启) - ✅ 项目目录 `/opt/guanghu` 已创建 - ✅ 仓库已克隆 - ✅ .env 已配置 ### 服务器清单 | 编号 | IP | 用途 | 标准路径 | | --- | --- | --- | --- | | ZY-SVR-002 | 43.134.16.246 | 新加坡主站(面孔) | `/opt/zhuyuan` → 应统一为 `/opt/guanghu` | | ZY-SVR-003 | 43.138.243.30 | 广州(肥猫线) | `/opt/zhuyuan-cn` → 应统一为 `/opt/guanghu` | | ZY-SVR-004 | 43.139.217.141 | 广州(冰朔线) | `/opt/zhuyuan-cn` → 应统一为 `/opt/guanghu` | | ZY-SVR-005 | 43.156.237.110 | 新加坡(大脑) | `/opt/zhuyuan-brain` → 应统一为 `/opt/guanghu` | | **ZY-SVR-TEST-001** | **43.153.203.105** | **测试服务器(模板标准)** | **`/opt/guanghu` ✅ 标准** | --- ## 七、总结 > **一句话:代码仓库里不能有任何硬编码的旧路径。服务器格式化后,`git clone` + `pm2 start` 必须直接能跑。** > 铸渊完成修复后,写回执到 Notion 确认修复范围。 --- *签发:霜砚(AG-SY-01)· 冰朔授权 · 2026-04-26 12:12 CST*