从失败的发布中恢复

LinuxBeginner
立即练习

介绍

Common Ground 又有一个待评估的网站候选版本。即使访客无法完成重要操作,发布命令仍可能成功。你的任务是识别两者的区别,并在必要时恢复已知正常的版本。

这是没有真实访客的一次性训练网站。你将刻意练习恢复;真实交付流程可以在候选版本到达访客之前,通过发布前检查将其拒绝。

这是全新的环境:无论上一实验做了什么,当前都在 Room A 运行 event-v1。你将准备 event-v3,测试真实用户路径,并在不编辑所提供网站文件的情况下恢复原服务。相同的 Workstation、Website 和 Topology 标签页已准备好。

准备恢复目标

本步骤中,你将先识别正常版本、独立安装候选,再更改网站。从 Website 开始。

明确恢复应达到的状态

首页上的 Linux Evening 位于 Room A,页脚标识为 event-v1。点击活动行,确认详情能够打开,再打开 Registration instructions。这些正常功能都是恢复后必须具备的。在 Website 中点击 COMMON GROUND 返回首页。

切换到 Workstation。终端已经位于 /home/labex/project/website-release。检查当前符号链接:

readlink current

输出为 releases/event-v1。确认保留版本的版本文件:

cat releases/event-v1/version.txt

输出为 event-v1。这里,这个目录就是明确的恢复目标。在不同系统中,“上一个版本”并不一定总是正确选择;本实验已确认这个版本能正确提供所需页面。

准备候选版本

列出提供的版本包:

bash release.sh list

环境包含 event-v1 和 event-v3。候选版本把地点改为 Community Hall。新名称或安装成功,都不能证明版本质量。

安装它,但不选择它:

bash release.sh install event-v3

提示会确认当前网站尚未变化。列出已安装版本:

ls releases

应该同时存在 event-v1 和 event-v3。保留两者不变:候选是要评估的版本,基线则是可以恢复的版本。

识别失败的发布

本步骤中,你将发布候选,并区分“选择成功”和“用户功能正常”。从 Workstation 开始。

观察成功的版本选择

选择候选版本:

bash release.sh deploy event-v3

辅助脚本报告 event-v3,并要求检查页面。命令完成了版本选择,但没有评估业务功能。

使用第一实验学过的 curl 选项检查首页状态:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/

返回 200。版本入口也正常:

curl -sS http://127.0.0.1:8081/version.txt

输出为 event-v3。这两项观察都不能说明活动链接正常。

找到访客可见的故障

切换到 Website。使用 COMMON GROUND 返回首页,再刷新。首页看起来完整,显示 Community Hall。点击 Linux Evening。

你看到的不是活动详情,而是 Let's get you back on track. 和 404 / A SMALL DETOUR。这是网站的缺失页面设计。即使外观精致,对所请求活动而言,HTTP 结果仍表示失败。

候选版本中真实缺失的活动页面

候选版本的活动链接指向 /events/container-evening.html。切回 Workstation,请求这个准确路径:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/events/container-evening.html

预期结果为 404。这是刻意观察的证据,不是需要修复或跳过的命令。没有启用 curl 的 HTTP 错误失败选项时,收到 404 后 curl 仍会正常结束:收到服务器响应与连接失败是两回事。

切换到 Topology。它仍可能显示 Homepage reachable,因为仅检查首页的健康检查成功了;必要的活动路径却不正常。验收决定应是拒绝此版本并恢复已知正常版,而不是停止网站或重写候选。

恢复并验证已知正常版本

本步骤中,你将恢复原网站,并确认访客可以再次使用它。从 Workstation 开始。

选择保留的版本

rollback 选择已经安装的版本,不会修复或重建失败候选。恢复先前确认的目标:

bash release.sh rollback event-v1

预期输出:

Selected event-v1. The server reports:
event-v1
Selection finished. Check the required pages before accepting this release.

检查符号链接:

readlink current

它选择 releases/event-v1。event-v3 目录仍然保存着,供日后调查;保留它不代表它仍在向访客提供服务。

检查恢复后的用户流程

切换到 Website。浏览器可能还停在候选版本缺失的 URL。点击 COMMON GROUND 返回首页,再刷新。网站应显示 Room A 和 event-v1。再次点击 Linux Evening:恢复后的链接现在会打开 /events/linux-evening.html。在该页中打开 Registration instructions,确认报名步骤可用。

恢复后的活动详情

再次访问仅属于候选的旧 URL,仍会得到 404;恢复会还原正常网站的真实链接,而不是创建所有不存在的 URL。

切回 Workstation,检查恢复后的路径:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/events/linux-evening.html
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/registration.html

三个结果都为 200。浏览器中的检查也已确认内容正确。

保留两个已安装版本:

ls releases

应该仍能找到 event-v1 和 event-v3。服务已恢复,候选缺陷留待后续开发任务处理。本练习只恢复静态网站文件,不承诺撤销数据库变更、用户提交,或原子化恢复整个浏览器会话。

总结

你观察到真实发布命令成功、用户路径却失效,随后拒绝候选并恢复完整的已知正常网站。你通过实际页面内容和 HTTP 响应共同验证了恢复。候选仍保留用于调查,恢复操作没有悄悄修复它。