#!/bin/sh # 回滚预案干跑:验证回滚前置条件齐备,并打印真实切换命令(不执行) # # 背景:Phase 4 上线时 wait4x.online 的 nginx 从 proxy_pass 18090(Halo) # 切到静态目录;任何时刻回滚 = 把 location 改回 18090。本脚本在 Phase 0 # 确认三要素存在,给人一条可复制的回滚路径。 set -e NGINX_DEFAULT=/etc/nginx/sites-available/default STAGING="$HOME/docker_apps/blog/www-staging" fail=0 check() { if eval "$2"; then echo " ok $1"; else echo " FAIL $1"; fail=1; fi } check "halo vhost 存在(回滚目标 upstream 可达配置)" \ "grep -q 'proxy_pass http://127.0.0.1:18090' $NGINX_DEFAULT" check "halo 容器存活(回滚有意义)" \ "docker inspect -f '{{.State.Status}}' halo-halo-1 | grep -q running" check "Halo 本机响应" \ "curl -sf http://127.0.0.1:18090 -o /dev/null" check "staging 占位目录就绪" \ "test -f $STAGING/index.html" cat <<'EOF' 回滚操作手册(人为执行,勿自动化): 1. 编辑 /etc/nginx/sites-available/default 中 wait4x.online 的 location /: proxy_pass http://127.0.0.1:18090; # 从 root 改回 2. nginx -t && systemctl reload nginx 3. ESA 控制台刷新缓存(或等待 TTL) 预期效果:秒级回到 Halo;静态文件目录保留不动,可再次前切。 EOF [ "$fail" = "0" ] && echo "rollback dry-run: all preconditions ok" || { echo "rollback dry-run: FAILURES above"; exit 1; }