shuangyan-notebook/第五域 · Fifth Domain/⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议/铸渊指令|全仓库服务器配置模板统一化 · 测试服务器已就绪 · 代码侧旧路径清理 · ZY-SVR- 0d70252ae1a14aa8bdeb1412d642c6fd.md
Guanghu Domestic Migration a27e87cb99 chore: import sanitized domestic snapshot for REPO-007
Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc

[SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
2026-07-17 15:59:55 +08:00

248 lines
9.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 确认修复范围
```
---
## 一、背景通知:测试服务器已就绪
<aside>
🖥️
**冰朔已将新加坡服务器(原小说下载器 ZY-SVR-006格式化转为 GMP 专用测试服务器。**
</aside>
| 项目 | 值 |
| --- | --- |
| 服务器编号 | 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` |
| 端口规划 | 9800GMP主/ 9801webhook/ 3000-9000模块 |
| 模式 | 盖子常开 · Agent全权限 · 热插拔测试 |
| 域名 | 无IP直连 · 不绑域名) |
**铸渊可以直接使用这台测试服务器。** GitHub Secrets 中对应的密钥已配置(`ZY_NOVEL_HOST` / `ZY_NOVEL_USER` / `ZY_NOVEL_KEY` / `ZY_NOVEL_PATH` 等,后续可能统一改名为 `ZY_TEST_*`)。
---
## 二、为什么需要一台专门的测试服务器
<aside>
💡
**核心原因:开发不能直接在生产服务器上试错。**
</aside>
1. **隔离风险** — 测试服务器上随便折腾不影响正在运行的生产服务主站、VPN、COS 等)。代码写坏了、配置改错了、进程崩了,都不会影响线上用户。
2. **快速验证** — GMP-Agent、webhook、模块热插拔等新功能需要一个真实环境来跑不能光靠本地模拟。测试服务器就是「跟生产一模一样但可以随意重启」的环境。
3. **部署流程验证** — 每次铸渊推新代码、新工作流、新配置,先在测试服务器上跑通,确认没问题后再推到生产。避免「一推就炸」。
4. **团队协作** — 四个 Agent培园、录册、译典、霜砚都在协作开发 GMP-Agent测试服务器是大家共同的验证场地。
5. **格式化不怕** — 测试服务器可以随时格式化重来。但前提是:**格式化后重新拉取的代码和配置必须是最新正确的**,不能拉上来还是旧的。
---
## 三、为什么所有服务器都要按统一模板
<aside>
🎯
**核心原则:任何一台服务器格式化后,拉完代码就能直接跑,不需要手动改任何配置文件。**
</aside>
### 问题现状
当前代码仓库里存在大量 **硬编码旧路径****过时配置**,典型例子:
- `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` 或相对路径 | **绝对不能写死旧路径** |
---
## 四、铸渊任务:全仓库扫描 + 统一修复
<aside>
**这是本指令的核心任务。铸渊必须完成以下全部检查和修复。**
</aside>
### 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 20NodeSource
- ✅ 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` ✅ 标准** |
<aside>
📌
**注意**:现有生产服务器的物理路径暂不改动(改动需要冰朔手动操作),但代码仓库里的配置文件必须支持通过环境变量灵活指定路径,并且默认值为 `/opt/guanghu`
</aside>
---
## 七、总结
> **一句话:代码仓库里不能有任何硬编码的旧路径。服务器格式化后,`git clone` + `pm2 start` 必须直接能跑。**
>
铸渊完成修复后,写回执到 Notion 确认修复范围。
---
*签发霜砚AG-SY-01· 冰朔授权 · 2026-04-26 12:12 CST*