离线覆盖安装脚本是最稳妥的强制回滚方式,适用于升级卡死、面板无法访问或内置bt16报错等场景,它跳过在线校验直接文件替换,不依赖旧版运行环境,且不删除网站数据、数据库及配置文件。

直接用离线覆盖安装脚本是最稳妥的强制回滚方式,尤其当升级卡死、面板无法访问或内置 bt 16 报错时。
为什么离线覆盖比 bt 16 更可靠
内置回滚依赖当前面板能正常加载模块并联网校验版本,而升级失败后常出现:ImportError、ModuleNotFoundError 或 Connection refused;离线方式跳过所有在线检查,只做文件级替换,不依赖旧版运行时环境。
- 适用于面板已完全崩溃、SSH 连接后执行
bt命令直接报段错误或空输出的场景 - 避免因网络中断、CDN 缓存导致下载到损坏包(官方 zip 包带 SHA256 校验)
- 覆盖过程不删除 /www/server/ 下任何网站数据、数据库或配置文件
手动下载并执行 update.sh 的完整步骤
注意:必须在 /root/bt_down/panel 目录下执行 update.sh,否则脚本会拒绝运行。
- 先停掉面板服务:
systemctl stop bt(若已僵死可跳过) - 创建并进入工作目录:
cd /root && mkdir -p bt_down && cd bt_down - 下载指定旧版包(推荐 8.0.2,已验证 UTF-8 渲染稳定):
wget https://download.bt.cn/install/update/LinuxPanel-8.0.2.zip - 解压并进入 panel 子目录:
unzip LinuxPanel-8.0.2.zip && cd panel - 执行强制覆盖:
bash update.sh(该脚本会自动备份原/www/server/panel并替换)
执行后必须做的三件事
覆盖完成不代表立即可用,遗漏任一环节都可能显示空白页或 502 错误。
- 清空浏览器缓存(尤其是 Service Worker 和 manifest),不能只 Ctrl+F5
- 检查面板进程是否起来:
ps aux | grep 'panel/main.py',若无输出需手动启动:systemctl start bt - 确认 Python 依赖未被破坏:
/www/server/panel/pyenv/bin/pip list | grep flask,如缺失则进/www/server/panel执行python tools.py panel
真正容易被忽略的是:新版升级脚本有时会把 /www/server/panel/class/common.py 的编码声明从 # -*- coding: utf-8 -*- 改成 utf8(少个短横),导致 Python 2.7 解析失败——离线覆盖虽重置了大部分文件,但这个文件若被用户自定义修改过,就不会被覆盖。遇到页面白屏且日志里有 SyntaxError: Non-UTF-8 code starting with '\xe5',就直接重写这行声明。

















