chore(docs): 文档库并入代码仓(R4 选 a)+ 索引/台账跟进
1) dsh-server-docs/ 从工作区(原 E:\...\aliyun-dsh-server\dsh-server-docs)**整体并入本仓**,
保留目录名 ⇒ 仓库内 dsh-server-docs/... 的相对引用天然继续有效;旧目录(含其 .git)已归档到
工作区 _中间产物_待清理/,未随本提交带入。
2) .gitattributes:新增 `dsh-server-docs/** -text` —— 原文档库是 `* -text` + autocrlf=false,
必须保持纯 LF,否则会被本仓的 CRLF 规则翻掉。
3) 活引用里的绝对路径已全部改到新位置(docs 的 INDEX / README / scripts / skills + 用户级 skills
+ ~/.workbuddy/settings.json 的 hooks);历史档案(04-调整方案/、archive/)按「只增不改」未动。
⚠️ hooks 路径改动需「完全重启会话」才生效(配置是会话启动快照)。
4) 交接单/T08:新增 §16「生产整体切换执行记录」(形态 / 落地动作 / **4 个只有真上线才暴露的真 bug** /
验收证据 / 回滚命令 / 残留项);台账 T08 行 → 已完成并归档;03-路线图 §二 登记 T08 收尾项。
5) 统一称谓:**「本机」只指跑 WorkBuddy 的开发机**,47 / 106 一律写「远程服务器」。
This commit is contained in:
1 parent
c70d5d860e
commit
5ad755116e
173 files changed
+27632
No files matched your search
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env bash
|
||||
# 切换 DSH 平台服务域名 → alotbuy.com(2026-09-10)
|
||||
# 幂等;带备份;drain 采用「按 pid 结束」而非 pkill -f(避免杀掉自身 ssh 会话)
|
||||
set -euo pipefail
|
||||
|
||||
NEW_BASE=alotbuy.com
|
||||
NEW_COOKIE=.alotbuy.com
|
||||
ENV=/etc/dshs.env
|
||||
TS=$(date +%Y%m%d-%H%M)
|
||||
|
||||
echo "=== 1) 备份 env ==="
|
||||
cp -a "$ENV" "$ENV.bak-$TS"
|
||||
echo " 备份: $ENV.bak-$TS"
|
||||
|
||||
echo "=== 2) 写入新域名 ==="
|
||||
sed -i "s|^DSHS_BASE_DOMAIN=.*|DSHS_BASE_DOMAIN=$NEW_BASE|" "$ENV"
|
||||
sed -i "s|^DSHS_COOKIE_DOMAIN=.*|DSHS_COOKIE_DOMAIN=$NEW_COOKIE|" "$ENV"
|
||||
grep -E 'BASE_DOMAIN|COOKIE_DOMAIN' "$ENV" | sed 's/^/ /'
|
||||
|
||||
echo "=== 3) drain:停编排器 → 结束残留实例/scope → 起编排器 ==="
|
||||
systemctl stop dshs
|
||||
sleep 2
|
||||
# 3a. 按 pid 结束 dsh 子进程(uid 形如 dsh-xxxx)
|
||||
for pid in $(ps -eo pid,user,args | awk '$2 ~ /^dsh-/ {print $1}'); do
|
||||
kill "$pid" 2>/dev/null || true
|
||||
done
|
||||
# 3b. 结束 bwrap 包装进程(用 grep 中括号技巧避免匹配自身)
|
||||
for pid in $(ps -eo pid,args | grep "[b]wrap --ro-bind" | awk '{print $1}'); do
|
||||
kill "$pid" 2>/dev/null || true
|
||||
done
|
||||
sleep 2
|
||||
# 3c. 收尾残留 scope
|
||||
systemctl list-units --type=scope --all --no-legend 'dsh-*' 2>/dev/null | awk '{print $1}' | while read -r u; do
|
||||
[ -n "$u" ] && systemctl stop "$u" 2>/dev/null || true
|
||||
done
|
||||
sleep 1
|
||||
echo " 残留实例数: $(ps -eo user,args | grep -c '[d]sh --profile' || true)"
|
||||
|
||||
echo "=== 4) 启动编排器 ==="
|
||||
systemctl start dshs
|
||||
sleep 3
|
||||
echo " 服务: $(systemctl is-active dshs) / enabled=$(systemctl is-enabled dshs)"
|
||||
echo " 编排器 pid: $(pgrep -f lib/cli.js | head -1)"
|
||||
|
||||
echo "=== 5) 自检 ==="
|
||||
curl -sk -o /dev/null -w " 源站 https://alotbuy.com/login.html → %{http_code}\n" \
|
||||
--resolve alotbuy.com:443:127.0.0.1 https://alotbuy.com/login.html
|
||||
curl -s -o /dev/null -w " 经 CF https://alotbuy.com/login.html → %{http_code}\n" -m 15 \
|
||||
https://alotbuy.com/login.html
|
||||
echo " 完成(旧域名 301 见 dsh.alotbuy.com.conf)"
|
||||
Reference in new issue
Block a user