laixin-deploylisted
Install: claude install-skill pingxia710/laixin-pipeline
# 来信 · 生产发布卡
> **唯一原则:部署失败与部署成功,长得一模一样。**
> 服务照常 200、页面照常打开、日巡照常全绿 —— 这三件事在"部署成功"和"根本没部署上"两种情况下**完全一致**。⇒ **每一步都必须有能区分两者的判据**,⛔ 用"看起来正常"当判据。
>
> **本卡管命令、顺序、授权闸门**;**判据的理由与案底**在 `~/Obsidian/项目入口/来信平台/知识库/4-开发层/来信平台-运维手册.md` §四之二,**部署脚本细则**在仓库 `docs/deploy.md`。⛔ 三处互相复制正文,各引对方。
## 〇、授权:部署是**黄级**,⛔ 自动执行
阿里云项目 `AGENTS.md` 分级(绿=查状态自动做 / 黄=改动可逆先说再做 / 红=不做):
- **部署属黄级** ⇒ **动手前把「这次带多少变更 + 回滚代价」摆给创始人,得到明确「做」再动**;🔁 **2026-08-25 14:03:46 三档收窄(版本总纲 §一 第 6 条,创始人 2026-08-25 拍「具体这种小版本要怎么发你敲定就好了」)**:本条「当次『做』」只管**封盘版 `vX.Y`**;**热修 `vX.Y.z`** 立即上事后通报;**期中版 `vX.Y.z`** 按每工作日 17:00–18:00 节拍**规则预授权**,⛔ 逐次问——三档定义与工序见 version-flow 卡 §一 5-bis;创始人任何时候可喊停;
- ⚠️ **「创始人问了一个问题」≠「授权执行」**;「更新一下服务器」是意向,**具体那一次动手仍要当次确认**;
- **执行主体已裁定**(阿里云 log 2026-08-14 决策3):**AI 窗口**经本机代理直连,⛔ 推给创始人手敲(他不熟服务器)。
## 一、连接(实测可用,2026-08-19 复验)
```bash
ssh -J wyinmac-vps-gateway -i ~/.ssh/aliyun-laixin-ed25519 root@121.196.192.44
```
- 安全组 22 只放行代理出口 `67.230.165.28`(即 `wyinmac-vps-gateway`)⇒ **必须走 `-J`**,直连会被挡;
- 主机密钥已在 `known_hosts`;非交互加 `-o BatchMode=yes -o ConnectTimeout=15`。
**生产事实**:阿里云 ECS `i-bp16su7e8xjslqjkhgk3`(杭州)· Ubuntu 24.04 · **Python 3.12.3**(验收环境必须同 minor)· SQLite · 代码 `/opt/laixin`(属主 `laixin`)· 服务 `laixin-api` / `laixin-web` / `caddy`。
## 二、⛔ 三个"看起来成功"的陷阱(全部实撞过)
1. **服务器 origin 不是 GitHub,是本机裸仓 `/srv/git/laixin.git`** —— `deploy.sh` 只做 `git fetch origin` + `git pull --ff-only` ⇒ **不先推,脚本会一路成功而什么都没更新**;
2. **`/opt/laixin` 属主是 `laixin`** —— 以 root 跑 `git -C /opt/laixin ...` **直接报错** `fatal: detected dubious