面板登录页 500、bt 命令报错、升级后起不来……宝塔面板自身故障时,官方给出的兜底方案就是修复脚本 update_panel.sh:一条命令重新校验运行环境、覆盖安装面板程序并重启服务。
修复命令
curl https://download.bt.cn/install/update_panel.sh | bash
更稳妥的写法是先下载、看一眼再执行(-s 隐藏进度条,避免进度条混进输出):
curl -sSO https://download.bt.cn/install/update_panel.sh && bash update_panel.sh
直接 | bash 执行远程脚本前,建议确认网络环境可信;curl | bash 本身是把下载内容直接交给 shell 执行。
脚本实际做了什么
通读 update_panel.sh 源码,执行流程如下:
| 步骤 | 动作 |
|---|---|
| 1 | 环境检查:仅支持 64 位系统,CentOS 6 直接退出 |
| 2 | 选择下载节点(拉取并校验 public.sh 的 MD5) |
| 3 | 修复 Python 运行环境:校验 /www/server/panel/pyenv,缺 Python 3.7 或依赖则重装(优先用预编译包,失败则源码编译) |
| 4 | 调用官方接口获取当前最新面板版本号 |
| 5 | 下载 LinuxPanel-{版本号}.zip,覆盖解压到 /www/server/panel/ |
| 6 | 修复 /etc/init.d/bt 启动脚本、清理 .pyc、补齐 config.json 等配置 |
| 7 | 补装 pip 依赖(flask、gevent、PyMySQL 等) |
| 8 | 重启面板服务;已装 Nginx/Apache 时顺带重装流量统计组件 |
几点关键结论:
- 修复 = 覆盖安装最新版。版本号来自
http://www.bt.cn/api/panel/get_version,写稿时返回13.1.0,脚本不支持指定版本,也不能用来回滚到旧版。 - 网站和数据库数据不受影响。脚本只动面板程序目录、启动脚本和 Python 环境。
- 面板目录的自定义修改会被覆盖。改过面板源码、装过需要改面板文件的插件,先备份。
与 12.0 稳定版公测的关系
按宝塔的版本策略,稳定版用偶数版本号(如 12.0),正式版用奇数版本号(如 13.0、13.1)。12.0 稳定版目前处于公测阶段,仅向参与公测的用户开放,正式版用户暂勿升级;跨版本升级前必须创建完整快照并确认可回滚。详见宝塔面板 12.0 稳定版公测说明。
因此要注意:修复脚本装的是官方接口返回的当前发布版本(写稿时为 13.1.0),不会给你装 12.0 公测版。想提前体验 12.0,需按官方公告走全新安装或跨版本升级:
# 全新安装 12.0(推荐)
curl -sSO http://download.bt.cn/install/install12.sh && bash install12.sh
# 跨版本升级到 12.0(先确认快照可回滚)
curl -sSO http://download.bt.cn/install/update12.sh && bash update12.sh
使用注意事项
- 先备份:至少导出面板配置和网站数据库,有条件的做整机快照,方便出问题回滚。
- 确认故障在面板:网站打不开可能是 Nginx、PHP、DNS 的问题,
bt restart或重启对应服务即可,不必动修复脚本。 - 预期结果是升级:修复完面板就是最新版了,如果你依赖某个旧版行为,升级前先读版本更新日志。
- 下载卡住查本地网络:脚本从
download.bt.cn拉包,卡在下载环节多半是服务器 DNS 或出口网络问题,可改用公共 DNS 后重试。
总结
面板程序层面的故障,一条 curl https://download.bt.cn/install/update_panel.sh | bash 通常就能恢复——它重装 Python 环境、覆盖安装最新面板、修复启动脚本并重启。但它本质是”覆盖升级”而非”原地修复”:版本不可选、改动会被覆盖,用之前先备份,用之后接受最新版。