6.3 KiB
6.3 KiB
Nexus 手动发布命令清单(2026-07-08)
适用场景:Codex 远程 SSH 审批不可用时,由人工在本机和线上服务器执行。
发布包已通过本地 Gate 和发布包扫描。
本地发布包
C:\Users\uzuma\Documents\Codex\2026-07-06\yuu\outputs\nexus-release-20260708.tar.gz
SHA256:
46299832fb78e8cc196f85cf1928f34eea4deee82dbc83b67883394f0359036b
方案 A:使用现有 deploy/deploy-production.sh(推荐)
前提:
- 本机能通过 SSH 访问线上 Host:
nexus - 或设置
NEXUS_SSH=user@host - 线上已有
/opt/nexus或/www/wwwroot/api.synaglobal.vip
在源码快照目录执行:
cd /c/Users/uzuma/Documents/Codex/2026-07-06/yuu/work/nexus_code_context/snapshots/nexus-source-20260707-112042
bash deploy/deploy-production.sh
如果不用 SSH config:
export NEXUS_SSH='root@你的线上服务器IP'
export NEXUS_DEPLOY_PATH='/opt/nexus'
bash deploy/deploy-production.sh
发布脚本会:
- 本地同步源码到线上。
- 排除
.venv-*、node_modules、缓存、误生成文件。 - Docker 模式下执行
nexus-1panel.sh upgrade --skip-git。 - 构建并上传旧
/app/。 - 构建并上传新
/app-v2/。 - Docker 模式下同步
web/app与web/app-v2到容器。 - 检查
/health、/app/、/app-v2/。
方案 B:发布 tar.gz 包到线上
1. 上传
Windows CMD / PowerShell:
scp C:\Users\uzuma\Documents\Codex\2026-07-06\yuu\outputs\nexus-release-20260708.tar.gz nexus:/tmp/nexus-release-20260708.tar.gz
2. 线上校验
cd /tmp
sha256sum nexus-release-20260708.tar.gz
必须等于:
46299832fb78e8cc196f85cf1928f34eea4deee82dbc83b67883394f0359036b
3. 线上备份
假设部署目录为 /opt/nexus:
sudo mkdir -p /opt/nexus-backups
sudo tar czf /opt/nexus-backups/nexus-before-20260708.tar.gz -C /opt nexus
3B. 使用服务器侧脚本自动应用发布包(推荐)
如果线上已存在当前项目的 deploy/apply-release-bundle.sh,或者你先把发布包解开到临时目录后使用新脚本,可以执行:
sudo bash /opt/nexus/deploy/apply-release-bundle.sh \
--tarball /tmp/nexus-release-20260708.tar.gz \
--sha256 46299832fb78e8cc196f85cf1928f34eea4deee82dbc83b67883394f0359036b \
--deploy-path /opt/nexus
如果脚本尚未在旧线上目录中,可以先临时解出脚本:
cd /tmp
tar xzf nexus-release-20260708.tar.gz nexus-release/deploy/apply-release-bundle.sh
sudo bash /tmp/nexus-release/deploy/apply-release-bundle.sh \
--tarball /tmp/nexus-release-20260708.tar.gz \
--sha256 46299832fb78e8cc196f85cf1928f34eea4deee82dbc83b67883394f0359036b \
--deploy-path /opt/nexus
这个脚本会自动:
- 校验 SHA256。
- 检查发布包内必须路径和禁止路径。
- 备份当前
/opt/nexus。 - rsync 覆盖代码,但保留
.env、docker/.env.prod、web/data。 - Docker 模式下执行
nexus-1panel.sh upgrade --skip-git。 - 同步
/app/和/app-v2/静态资源到容器。 - 验证本机
/health、/app/、/app-v2/。
4. 解包覆盖
sudo mkdir -p /opt/nexus
sudo tar xzf /tmp/nexus-release-20260708.tar.gz -C /tmp
sudo rsync -a --delete \
--exclude='.env' \
--exclude='docker/.env.prod' \
--exclude='web/data' \
/tmp/nexus-release/ /opt/nexus/
5. 重建/重启
Docker/1Panel 模式:
cd /opt/nexus
sudo env NEXUS_ROOT=/opt/nexus bash deploy/nexus-1panel.sh upgrade --skip-git
如果是 Supervisor 模式:
sudo supervisorctl restart nexus
6. Docker 容器内静态资源同步
Docker 模式建议执行:
cd /opt/nexus
sudo env NEXUS_ROOT=/opt/nexus bash deploy/sync_webapp_to_container.sh
方案 C:Python 发布辅助脚本(推荐替代手工 scp/ssh)
默认只上传并执行服务器侧 preflight,不会正式 apply:
cd /d C:\Users\uzuma\Documents\Codex\2026-07-06\yuu\work\nexus_code_context\snapshots\nexus-source-20260707-112042
.venv-py312-codex\Scripts\python.exe scripts\publish_release_bundle.py ^
--remote nexus ^
--tarball C:\Users\uzuma\Documents\Codex\2026-07-06\yuu\outputs\nexus-release-20260708.tar.gz ^
--sha256 46299832fb78e8cc196f85cf1928f34eea4deee82dbc83b67883394f0359036b
preflight 输出确认无误后,再加 --apply 正式发布:
.venv-py312-codex\Scripts\python.exe scripts\publish_release_bundle.py ^
--remote nexus ^
--tarball C:\Users\uzuma\Documents\Codex\2026-07-06\yuu\outputs\nexus-release-20260708.tar.gz ^
--sha256 46299832fb78e8cc196f85cf1928f34eea4deee82dbc83b67883394f0359036b ^
--apply
详见:Nexus-release-python-publisher-20260708.md。
发布后验证
本机执行:
cd /d C:\Users\uzuma\Documents\Codex\2026-07-06\yuu\work\nexus_code_context\snapshots\nexus-source-20260707-112042
.venv-py312-codex\Scripts\python.exe scripts\verify_online_release.py --base-url https://api.synaglobal.vip
线上执行:
curl -s https://api.synaglobal.vip/health
curl -I https://api.synaglobal.vip/app/
curl -I https://api.synaglobal.vip/app-v2/
期望:
/health => ok
/app/ => HTTP 200
/app-v2/ => HTTP 200
宝塔专项验证
发布后在 Nexus 后台验证:
- 打开
/app/旧后台,确认宝塔列表正常。 - 打开
/app-v2/新后台,确认页面可访问。 - 对同一台宝塔连续点击一键登录,冲突时应该返回 HTTP 409。
- 对新增宝塔执行一键登录,应触发 hardcoded_3600 检测/修复兜底。
- 多台宝塔同时打开后,2 小时刷新不应因为
task.pyhardcoded3600陆续掉线。
回滚
如果异常:
cd /opt
sudo mv nexus nexus-bad-20260708
sudo tar xzf /opt/nexus-backups/nexus-before-20260708.tar.gz -C /opt
cd /opt/nexus
sudo env NEXUS_ROOT=/opt/nexus bash deploy/nexus-1panel.sh upgrade --skip-git
Server preflight command
Before applying the release on the production host, run:
bash /tmp/nexus-release/deploy/preflight-release-host.sh \
--tarball /tmp/nexus-release-20260708.tar.gz \
--sha256 46299832fb78e8cc196f85cf1928f34eea4deee82dbc83b67883394f0359036b \
--deploy-path /opt/nexus
This checks required commands, checksum, release tar paths, deploy path, runtime hints, disk space, and current local endpoints before applying changes.