shuangyan-notebook/第五域 · Fifth Domain/⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议/📡 BC-INFRA-DEPLOY-002-FM · DEV-002肥猫 · 沙箱部署脚本执行 + a2b40222b545457d88fe11d34f534ea9.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

386 lines
13 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 桥接协议]]"
---
# 📡 BC-INFRA-DEPLOY-002-FM · DEV-002肥猫 · 沙箱部署脚本执行 + 冒烟测试 + syslog-pipeline修复 + DNS TXT清理 · 🐱 舒舒线 · EL-52026-03-26 · 霜砚签发 · 冰朔授权)
<aside>
🚨
**⚠️ 本广播受「服务器部署适配协议 v1.0」约束。**
**广播编号**BC-INFRA-DEPLOY-002-FM · **开发者**DEV-002 肥猫 · **签发**:霜砚 · **授权**:冰朔
**前置条件**BC-INFRA-DNS-SSL-001-FM 已完成DNS + SSL ✅)
**核心任务**:运行铸渊的沙箱部署脚本 + 冒烟测试 + 修复 syslog-pipeline + 清理 DNS TXT
**服务器**8.155.62.235(阿里云 ECS
**EL**EL-5 · 5步 · 服务器终端 + GitHub + 阿里云控制台
**预计时间**20-30 分钟
**引导通道**:🐱 舒舒线
</aside>
<aside>
**前置已完成:**
肥猫已经完成了 BC-INFRA-DNS-SSL-001-FM
- ✅ Phase 1-6 全部通过
- ✅ 通配符 DNS `*.guanghulab.com``8.155.62.235`
- ✅ 通配符 SSL 证书有效期到 2026-06-24
- ✅ 主站 200子域名 DNS + HTTPS 链路通
现在要做的是**在这个地基上盖房子**——运行铸渊准备好的部署脚本。
</aside>
---
## 〇、安全红线(每次都要读)
<aside>
🔴
**绝对禁止:**
-**不准手动编辑** `/etc/nginx/` 下的任何配置文件(脚本会自动处理)
-**不准执行** `systemctl stop nginx`(主站会挂!)
-**不准执行** `rm -rf` 任何不属于你的目录
-**不准跳过脚本直接操作**(铸渊的脚本有三重安全回滚,手动操作没有!)
-**千万别把服务器调坏了!不确定就问妈妈!**
</aside>
<aside>
🟢
**本次广播授权你做的(仅限以下操作):**
- ✅ 在服务器上运行 `scripts/deploy-sandbox-server.sh`
- ✅ 在服务器上运行 `scripts/smoke-test-subdomains.sh`
- ✅ 运行 `dig``curl``nginx -t` 等只读验证命令
- ✅ 在 GitHub 上手动修改 `syslog-issue-pipeline.yml`(仅限本广播指定的改动)
- ✅ 在阿里云 DNS 控制台删除 `_acme-challenge` TXT 记录
</aside>
---
## 一、Phase 1 · 运行沙箱部署脚本P0 · 最重要!)
**目的**:把铸渊准备好的 Nginx 子域名沙箱配置部署到服务器上。
<aside>
💡
**这个脚本是铸渊写的,内置了三重安全保障:**
1. **部署前备份** — 自动备份当前 Nginx 配置
2. **nginx -t 回滚** — 如果配置语法有问题,自动回滚到备份
3. **部署后主站检查** — 部署完自动检查主站是否正常,不正常就回滚
**所以放心跑,出问题它会自己回滚。**
</aside>
### 步骤 1-1 · SSH 登录服务器
```bash
ssh root@8.155.62.235
```
### 步骤 1-2 · 进入仓库目录 + 拉取最新代码
```bash
cd /var/www/guanghulab
git pull origin main
```
<aside>
⚠️
**如果目录不存在**,先找到仓库实际位置:
```bash
find / -name 'deploy-sandbox-server.sh' -type f 2>/dev/null
```
找到后 `cd` 到对应目录的上两级(仓库根目录)。截图告诉妈妈实际路径。
</aside>
📸 **截图 git pull 结果!确认 `scripts/deploy-sandbox-server.sh` 存在。**
### 步骤 1-3 · 赋予执行权限
```bash
chmod +x scripts/deploy-sandbox-server.sh
chmod +x scripts/smoke-test-subdomains.sh
chmod +x scripts/setup-sandbox.sh
ls -la scripts/deploy-sandbox-server.sh scripts/smoke-test-subdomains.sh
```
📸 **截图!确认三个脚本都存在且有执行权限。**
### 步骤 1-4 · 运行部署脚本 🚀
<aside>
🚨
**这是最关键的一步!运行前深呼吸,确认你在正确的目录下。**
**千万别把服务器调坏了!脚本有自动回滚,但还是要认真看输出!**
</aside>
```bash
sudo bash scripts/deploy-sandbox-server.sh
```
**运行过程中注意看输出**
- 看到 `✅` 开头的行 → 正常,继续等
- 看到 `❌``ROLLBACK` → 脚本在自动回滚,**不要中断!等它跑完!**
- 脚本跑完后显示主站检查失败 → **立即截图告诉妈妈!不要做其他操作!**
📸 **截图脚本的完整输出!从头到尾都要!**
### 步骤 1-5 · 手动验证主站没被破坏
```bash
echo "===== 🔍 主站安全验证 ====="
echo ""
curl -s -o /dev/null -w "主站 HTTPS: HTTP %{http_code}" --max-time 10 https://guanghulab.com/
echo ""
nginx -t 2>&1
echo ""
echo "===== ✅ ====="
```
**主站必须返回 200如果不是 200立即截图告诉妈妈**
📸 **截图!**
---
## 二、Phase 2 · 运行冒烟测试脚本P0
**目的**:验证子域名沙箱部署是否成功,全链路是否通。
```bash
sudo bash scripts/smoke-test-subdomains.sh
```
**这个脚本会测试**
- 主站 head/tail 检查(确认没被破坏)
- 子域名 HTTPS 访问
- HTTP → HTTPS 自动重定向
- SSL 证书验证
- 路径遍历隔离(安全测试:子域名之间不能互相访问)
📸 **截图完整输出!**
**结果解读**
- 全部 `✅` → 🎉 部署成功!
-`❌` 但主站 `✅` → 部分子域名有问题,截图告诉妈妈
- 主站 `❌`**立即停止!截图告诉妈妈!**
---
## 三、Phase 3 · 修复 syslog-issue-pipeline.ymlP1
**目的**:修复 GitHub Actions 里连续 479 次失败的 syslog pipeline。
<aside>
💡
**根因(铸渊排查结果):**
`syslog-issue-pipeline.yml` 的触发条件是 `on: push`,但 job 里的条件只匹配 `issues` 事件。
每次 push 都触发,但 0 个 job 匹配 → 标记为失败 → 连续 479 次红叉。
**铸渊改不了这个文件**R5 安全规则阻止 Agent 修改 workflow 文件),需要人类手动改。
</aside>
### 步骤 3-1 · 在 GitHub 上打开文件
1. 打开浏览器:`https://github.com/qinfendebingshuo/guanghulab`
2. 导航到 `.github/workflows/syslog-issue-pipeline.yml`
3. 点击右上角的 ✏️ 编辑按钮
### 步骤 3-2 · 修改触发条件
找到文件顶部的 `on:` 部分,把 `push` 改成 `issues`
**修改前**(大概长这样):
```yaml
on:
push:
branches: [main]
```
**修改后**
```yaml
on:
issues:
types: [opened, edited, labeled]
```
<aside>
⚠️
**注意!** 具体的原始内容可能和上面不完全一样。
关键是把触发事件从 `push` 改成 `issues`
如果你看到文件内容和预期不同,**截图给妈妈确认后再改**。
**不要猜着改!**
</aside>
### 步骤 3-3 · 提交修改
1. Commit message 写:`fix: change syslog-issue-pipeline trigger from push to issues (manual fix, R5 restriction)`
2. 选择 **Commit directly to the `main` branch**
3. 点击 **Commit changes**
📸 **截图提交前的 diff 页面 + 提交后的确认页面!**
---
## 四、Phase 4 · 清理 DNS TXT 记录P3
**目的**:把 SSL 证书签发时添加的临时 TXT 记录删掉,保持 DNS 干净。
1. 打开 [阿里云控制台](https://dns.console.aliyun.com/) → `guanghulab.com` 解析设置
2. 找到所有 `_acme-challenge` 的 TXT 记录(可能有 1-2 条)
3. **删除它们**
<aside>
⚠️
**只删 `_acme-challenge` 的 TXT 记录!不要动其他记录!**
- ❌ 不要删 A 记录(`@``*`
- ❌ 不要删其他任何非 `_acme-challenge` 的记录
</aside>
📸 **截图删除前后的 DNS 记录列表!**
---
## 五、Phase 5 · 补充NOTION_TOKEN 修复P1 · 需要妈妈配合)
**目的**:修复 GitHub Secrets 里为空的 `NOTION_TOKEN`
<aside>
💡
**铸渊排查发现 `NOTION_TOKEN` 为空。**
这个需要妈妈(冰朔)提供 Token 值。
如果妈妈在旁边,一起操作;如果不在,**跳过这步,标记为待办。**
</aside>
1. 打开:`https://github.com/qinfendebingshuo/guanghulab/settings/secrets/actions`
2. 找到 `NOTION_TOKEN` → 点击 ✏️ 更新
3. 粘贴妈妈给的 Token 值(`ntn_``secret_` 开头的长字符串)
4. 点击 **Update secret**
📸 **截图确认 Secret 已更新(不要截图 Token 值本身!只截图更新成功的页面)!**
---
## 六、完成后 · 诊断汇总表
肥猫做完所有步骤后,按下面格式汇报给妈妈:
```
📡 BC-INFRA-DEPLOY-002-FM · 完成报告 · DEV-002 肥猫
一、沙箱部署
- deploy-sandbox-server.sh 运行结果: [成功/失败/回滚]
- 主站 guanghulab.com: [状态码](必须正常!)
- nginx -t 结果: [ok/fail]
二、冒烟测试
- smoke-test-subdomains.sh 结果: [全通过/部分失败]
- 子域名 HTTPS 访问: [成功/失败]
- 路径遍历隔离: [通过/未通过]
三、syslog-pipeline 修复
- 触发条件已从 push 改为 issues: [是/否]
- commit SHA: [填写]
四、DNS TXT 清理
- _acme-challenge 记录已删除: [是/否]
五、NOTION_TOKEN
- 已更新: [是/否/跳过-待冰朔配置]
六、遗留事项
- [列出还没完成的或有问题的]
```
---
## 七、执行清单
| **步骤** | **内容** | **操作位置** | **优先级** | **预计时间** |
| --- | --- | --- | --- | --- |
| Phase 1 | 运行沙箱部署脚本 | 服务器终端 | P0 | 5-10分钟 |
| Phase 2 | 运行冒烟测试脚本 | 服务器终端 | P0 | 3-5分钟 |
| Phase 3 | 修复 syslog-issue-pipeline | GitHub 网页 | P1 | 5分钟 |
| Phase 4 | 清理 DNS TXT 记录 | 阿里云控制台 | P3 | 2分钟 |
| Phase 5 | 修复 NOTION_TOKEN | GitHub Secrets | P1 | 2分钟需妈妈配合 |
**总计约 20-25 分钟。**
---
## 关联文档
- 前置广播DNS+SSL[📡 BC-INFRA-DNS-SSL-001-FM · DEV-002肥猫 · 基础设施·通配符DNS + SSL证书签发 + 沙箱子域名验证 + Nginx备用站路由修复 · Phase 6 前置 · 🐱 舒舒线 · EL-62026-03-26 · 霜砚签发 · 冰朔授权)](%F0%9F%93%A1%20BC-INFRA-DNS-SSL-001-FM%20%C2%B7%20DEV-002%E8%82%A5%E7%8C%AB%20%C2%B7%20%E5%9F%BA%E7%A1%80%E8%AE%BE%E6%96%BD%C2%B7%E9%80%9A%E9%85%8D%E7%AC%A6DN%20f8800e359dfe4e4b9eb00f37f45a9df6.md)
- 铸渊补充指令上卷:[⚡ 铸渊补充指令(上卷)|天眼全局启动 + 合并膜排查修复 + syslog-pipeline修复ZY-AGEOS-TOWER-2026-0326-001-S1· 霜砚签发 · 冰朔授权](%E2%9A%A1%20%E9%93%B8%E6%B8%8A%E8%A1%A5%E5%85%85%E6%8C%87%E4%BB%A4%EF%BC%88%E4%B8%8A%E5%8D%B7%EF%BC%89%EF%BD%9C%E5%A4%A9%E7%9C%BC%E5%85%A8%E5%B1%80%E5%90%AF%E5%8A%A8%20+%20%E5%90%88%E5%B9%B6%E8%86%9C%E6%8E%92%E6%9F%A5%E4%BF%AE%E5%A4%8D%20+%20syslog-pipeline%E4%BF%AE%E5%A4%8D%EF%BC%88%202045b43bbb5d41b5980acfb580b97376.md)
- 铸渊补充指令下卷:[⚡ 铸渊补充指令(下卷)|子域名沙箱部署 + 全链路冒烟测试 + 天眼部署后扫描 + 状态同步 + 回执ZY-AGEOS-TOWER-2026-0326-001-S1· 霜砚签发 · 冰朔授权](%E2%9A%A1%20%E9%93%B8%E6%B8%8A%E8%A1%A5%E5%85%85%E6%8C%87%E4%BB%A4%EF%BC%88%E4%B8%8B%E5%8D%B7%EF%BC%89%EF%BD%9C%E5%AD%90%E5%9F%9F%E5%90%8D%E6%B2%99%E7%AE%B1%E9%83%A8%E7%BD%B2%20+%20%E5%85%A8%E9%93%BE%E8%B7%AF%E5%86%92%E7%83%9F%E6%B5%8B%E8%AF%95%20+%20%E5%A4%A9%E7%9C%BC%E9%83%A8%E7%BD%B2%E5%90%8E%E6%89%AB%E6%8F%8F%20+%20%E7%8A%B6%E6%80%81%E5%90%8C%E6%AD%A5%20+%20%20009c74dcb53c45198c50e7bd1816c0a1.md)
- 铸渊排查回执(根因分析):[🔍 铸渊排查指令|备用站功能部署链路断裂排查 + 天眼全局启动 + 合并膜整体排查ZY-DIAG-SITE-2026-0326-001· 霜砚签发 · 冰朔授权](%F0%9F%94%8D%20%E9%93%B8%E6%B8%8A%E6%8E%92%E6%9F%A5%E6%8C%87%E4%BB%A4%EF%BD%9C%E5%A4%87%E7%94%A8%E7%AB%99%E5%8A%9F%E8%83%BD%E9%83%A8%E7%BD%B2%E9%93%BE%E8%B7%AF%E6%96%AD%E8%A3%82%E6%8E%92%E6%9F%A5%20+%20%E5%A4%A9%E7%9C%BC%E5%85%A8%E5%B1%80%E5%90%AF%E5%8A%A8%20+%20%E5%90%88%E5%B9%B6%E8%86%9C%E6%95%B4%E4%BD%93%E6%8E%92%E6%9F%A5%EF%BC%88ZY-DIAG-%20255ec24364044ea58a22633c51819fb1.md)
- 服务器部署适配协议 v1.0[🏗️ 服务器部署适配协议 v1.02026-03-15·曜冥签发](../%F0%9F%8C%8A%20%E6%9B%9C%E5%86%A5%E7%BA%AA%E5%85%83%20%C2%B7%20HoloLake%20Era%20%C2%B7%20AGE%20OS%20v1%200/%E2%9A%A1%20%E5%85%89%E6%B9%96%E4%B8%AD%E5%A4%AE%E6%9E%A2%E7%BA%BD%20%C2%B7%20HoloLake%20Central%20Hub/%F0%9F%8C%8A%20%E5%85%89%E6%B9%96%E7%B3%BB%E7%BB%9F%C2%B7%E6%9B%9C%E5%86%A5%E4%B8%BB%E6%8E%A7%E5%8F%B0%C2%B7%E5%BD%93%E5%89%8D%E7%8A%B6%E6%80%81%EF%BC%88%E5%8D%B71%20%C2%B7%20%E5%B7%B2%E5%B0%81%E5%8D%B7%EF%BC%89/%F0%9F%8F%97%EF%B8%8F%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%83%A8%E7%BD%B2%E9%80%82%E9%85%8D%E5%8D%8F%E8%AE%AE%20v1%200%EF%BC%882026-03-15%C2%B7%E6%9B%9C%E5%86%A5%E7%AD%BE%E5%8F%91%EF%BC%89%20a24049a2b0e944b0a5535f3a87652303.md)
---
<aside>
💙
**肥猫,铸渊已经把脚本都写好了,你只需要跑一下。**
脚本有三重安全回滚,放心。
**但还是要认真看输出,遇到问题第一时间告诉妈妈。**
**⚠️ 千万别把服务器调坏了!不确定就问妈妈!** 🐱
</aside>
---
## 📥 SYSLOG 回执区
肥猫完成后在这里粘贴 SYSLOG
```
待肥猫填写
```