宝塔8.x不能升9.0因架构重构:底层由python2.7+shell改为全go,配置路径、证书管理、sqlite数据库结构全部不兼容;必须重装9.0并手动迁移nginx配置、ssl证书、mysql socket等关键配置。

不能直接升级,必须重装宝塔 9.0 并手动迁移配置。宝塔官方明确不支持 8.x → 9.x 的在线升级,强行执行 bt 11 或类似命令会导致面板崩溃、网站 502、数据库连接中断,甚至丢失 Nginx 配置和 SSL 证书绑定状态。
为什么宝塔 8.0 不能升到 9.0
9.0 是架构级重构:底层从 Python 2.7 + Shell 混合切换为全 Go 编写,配置文件路径、数据库结构、服务管理方式全部变更。比如:
-
/www/server/panel/vhost/下的 Nginx 配置被拆分为/www/server/panel/vhost/nginx/和/www/server/panel/vhost/apache/两套独立目录 - SSL 证书不再存于
/www/server/panel/vhost/cert/,而是统一由新证书中心管理,旧路径证书不会自动导入 - 计划任务、FTP 账号、反向代理规则等全部存储在 SQLite 数据库中,8.x 的
panel.db与 9.x 不兼容,直接覆盖会报错database is locked或no such table: websites
必须保留的关键配置项清单
重装前务必导出以下内容,否则网站将无法访问或功能异常:
-
wp-config.php、config.php等程序核心配置(含数据库密码、密钥) - 所有站点的 Nginx 配置文件:
/www/server/panel/vhost/nginx/*.conf - SSL 证书私钥和 PEM 文件(路径:
/www/server/panel/vhost/cert/your-domain.com/下的fullchain.pem和privkey.pem) - 伪静态规则(如 WordPress 的
rewrite段)、301 重定向、防盗链配置——这些都嵌在 Nginx conf 里,不是单独文件 - MySQL root 密码(若未改过,默认是安装时设置的;可通过
cat /www/server/panel/data/default.pl查看)
安全重装 9.0 的实操步骤
不要卸载旧面板,而是并行部署再迁移,避免服务中断:
- 先在 8.0 面板中停用所有网站(站点 → 设置 → 关闭),防止迁移中写入数据
- 备份整个
/www目录(含/www/wwwroot、/www/server/mysql、/www/backup),用tar -zcf backup-8x.tar.gz /www打包,传到本地或临时目录 - 执行 9.0 官方安装命令:
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh(Ubuntu)或对应 CentOS 命令;安装过程会自动停掉 8.x 面板进程,但不删除/www - 安装完成后,登录 9.0 面板(端口仍是 8888),立刻修改默认密码,然后手动添加站点(域名、根目录路径必须和原来一致)
- 把之前备份的 Nginx conf 复制进
/www/server/panel/vhost/nginx/,再在面板中「网站」→「设置」→「配置文件」里粘贴替换;别直接重启 Nginx,先点「检查配置」,修复语法错误(9.0 对include路径更敏感) - SSL 证书需在面板「网站」→「SSL」→「其他证书」中手动上传 PEM + KEY,再点击「部署」;否则即使文件在磁盘上,面板也不认
最易被忽略的是 MySQL 权限和 socket 路径:9.0 默认使用 /tmp/mysql.sock,而 8.x 可能是 /www/server/data/mysql.sock,WordPress 连接会报 Can't connect to local MySQL server through socket。需要进「数据库」→「MySQL 配置」里核对 socket 行是否匹配,不匹配就改回来并重启 MySQL。











