Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
386 lines
13 KiB
Markdown
386 lines
13 KiB
Markdown
---
|
||
belongs_to:
|
||
- "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]"
|
||
---
|
||
# 📡 BC-INFRA-DEPLOY-002-FM · DEV-002肥猫 · 沙箱部署脚本执行 + 冒烟测试 + syslog-pipeline修复 + DNS TXT清理 · 🐱 舒舒线 · EL-5(2026-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.yml(P1)
|
||
|
||
**目的**:修复 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-6(2026-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.0(2026-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:
|
||
|
||
```
|
||
待肥猫填写
|
||
``` |