Files
juzi/rednote/DEPLOYMENT-20261019.md
T

45 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Rednote 生产发布记录 · 2026-10-19
状态:已发布并通过上线检查。
- 入口:<https://1me.xajuzi.com/rednote/>;后台:<https://1me.xajuzi.com/rednote/admin.html>(沿用原 Basic Auth)。
- 发布版本:`20261019-225927-4af825a`;运行代码提交:`4af825a5e422c633c43dd0df3923ada1e6a8f760`。
- 发布包 SHA256:`c8d3cc8f9d68b7214eafc3a3c832c09854d07f6c3b3a9f53a6bdfb0397e4933f`;148个运行文件及1份哈希清单,线上逐文件校验一致。
- 目录:`/home/ubuntu/juzi-rednote/releases/20261019-225927-4af825a`;`current` 指向该版本。
- 服务:`juzi-rednote.service`,已启用开机启动,仅监听 `127.0.0.1:8081`;数据:`/home/ubuntu/juzi-rednote-data`。
- 凭据:`/etc/juzi/rednote.env`,root所有、权限600;只在服务器内部提取现有 Face++ 凭据,没有复制微信配置或下载密钥。
- Nginx及基线备份:`/etc/juzi-deploy-backup/rednote-20261019-225927-4af825a/`,含 `nginx-juzi.before.conf`、`baseline.json`、`installed.json`、`published.json`。
## 原入口保护
原服务目录 `/home/ubuntu/juzi` 没有 git pull、文件覆盖、数据迁移或服务重启,仍为 `fc9f2519bdc50595556b244cdecf695ae90ba9eb`,工作区干净。原进程PID始终为689641,自动重启次数0。旧systemd主文件及微信drop-in哈希一致。
新服务独立运行;实际检查其挂载命名空间中 `/home/ubuntu/juzi` 为只读。Nginx只在原HTTPS server中增加 `/rednote` 路由块,移除该块可还原原文件;配置检查通过后平滑reload。发布前Nginx文件SHA256:`6c21c06e22c953628049601adb4bb8726c22f45e16b4973988c36115beefb484`;发布后:`5d0aa501340566d6eb8a0cccef0944fb8eccaece3c1a5809b87a57d1490ee7bf`。
发布后原 `/state/` 页面、健康接口、微信授权配置、域名验证文件的内容哈希与发布前一致;微信登录开关保持启用。原后台仍要求鉴权,私有数据不能公网直读。
## 验证结果和边界
本地Rednote后端5项测试及浏览器集成通过,覆盖最近5份报告、真实共享页面的样本检测/历史重载、所有者隔离、后台API/照片/导出子路径、同域双入口隔离、限流和数据路径保护。淘宝16项测试、共享公式一致性检查,以及原H5游客隐私、微信授权与退出、报告持久化、异步侧脸4组回归通过。
原H5较旧的两个单元断言 `tone-dark-circle.js:13`、`factual-copy.js:9` 在发布前HEAD也不通过,属于既有期望值/文案差异。本次未修改相关评分、文案实现,没有为通过断言调整业务结论。
线上通过:
- 新入口HTTPS页面、静态资源、健康和账号配置;不展示微信登录,不开放微信/淘宝登录API。
- 未同意隐私前不创建身份;同意后Cookie为Secure、HttpOnly、SameSite=Lax、`Path=/rednote/`、30天。
- 关闭并重建浏览器上下文、单独重启新服务后,同一Cookie仍恢复原身份,档案缓存及历史入口正常。
- 清除身份的取消/确认、服务端会话撤销、旧Cookie重放失败;原入口仍显示微信登录、没有继承新身份。
- 新旧后台页面/API/导出未鉴权返回401;私有数据和服务器源码路径不可访问;跨域创建身份返回403。
- 上线浏览器检查无JS异常、无资源失败;新服务自动重启次数0,启动/检查日志无错误。仅为持久化检查主动重启过新服务一次,原服务未重启。
线上未调用收费检测API,自动化没有代替手机摄像头实测或真实微信账号授权验收。发布后请在目标手机/内置浏览器完成拍摄、真实报告生成和关闭重开后的历史查看,并从微信打开原 `/state/` 核对真实授权。验证只新增1个空浏览器身份,检查结束已撤销其会话,没有测试照片或报告写入线上。
## 回退
备份中的 `nginx-juzi.before.conf` 是新增路由前的完整配置。先核对当前配置仍为本次发布后的哈希;若此后还有其他配置变更,应仅移除本次 `BEGIN rednote ... END rednote` 块,保留后续变更。
在确认没有后续变更的前提下,先另存当前Nginx配置,再将 `nginx-juzi.before.conf` 安装回 `/etc/nginx/sites-available/juzi`。执行 `sudo nginx -t`,通过后执行 `sudo systemctl reload nginx`,并核对 `/state/` 健康;之后执行 `sudo systemctl disable --now juzi-rednote.service`。若配置检查失败,恢复刚另存的配置并再次检查,不reload失败配置。
保留新入口发布目录及 `/home/ubuntu/juzi-rednote-data`,不删除数据,不改原服务,不重启原Node进程。