安装宝塔前必须创建系统快照,否则出事是时间问题;云服务器需勾选系统盘创建普通快照,物理机/虚拟机须用原生命令冻结状态;同时停关键服务、备份防火墙规则、禁用selinux,并在安装后导出环境快照与权限配置。

宝塔安装前必须做的系统快照
没做快照就装宝塔,等于开车不系安全带——出事不是概率问题,是时间问题。云服务器(阿里云/腾讯云)控制台里自带快照功能,但很多人点两下就跳过,结果 bt install 卡在依赖安装阶段,systemd 启动失败,连 SSH 都进不去。
- 阿里云 ECS:进入「实例详情 → 云盘 → 创建快照」,勾选「包含系统盘」,快照类型选「普通快照」(极速快照不保证一致性)
- 腾讯云 CVM:「云硬盘 → 快照 → 新建快照」,务必勾选「创建系统盘快照」,不要只备份数据盘
- 物理机或本地虚拟机(如 VirtualBox):用
vboxmanage snapshot take或virsh snapshot-create-as,别信“我手动备份了 /etc 和 /var”——/boot、/usr/lib/systemd、内核模块路径稍有不一致,grub就可能起不来
装宝塔前先冻结关键服务与配置
宝塔安装脚本会自动改 /etc/yum.repos.d/、重装 python3、覆盖 /etc/firewalld/zones/public.xml,如果你之前配过 fail2ban 或自定义 iptables 规则,大概率直接失联。
- 停掉非必要服务:
systemctl stop fail2ban docker nginx mysql(哪怕它们还没启,也执行 stop 防止宝塔冲突) - 备份原始防火墙规则:
iptables-save > /root/iptables-before-bt.rules,别只依赖宝塔的「防火墙插件」 - 禁用 SELinux 临时生效:
setenforce 0;永久禁用要改/etc/selinux/config里的SELINUX=disabled,否则宝塔面板后台打不开,报错Permission denied: '/www/server/panel'
宝塔安装后立刻导出环境快照(非控制台快照)
控制台快照只能恢复整机状态,但你真正需要的是「可迁移的运行环境」:PHP 版本、站点配置、SSL 证书路径、数据库用户权限。宝塔自带的「面板备份」只存 /www/server/panel,漏掉 /etc/my.cnf、/www/server/php 的编译参数、甚至 /root/.acme.sh 里的证书续签脚本。
- 用宝塔「计划任务」新建一个 Shell 脚本,每周自动打包:
tar -czf /www/backup/env-$(date +\%F).tar.gz /etc/my.cnf /etc/php-fpm.d/ /www/server/php/ /root/.acme.sh/ /www/wwwroot/ - 导出 MySQL 权限:用
mysqldump --all-databases --skip-lock-tables --no-data | grep "GRANT\|CREATE USER"单独保存授权语句 - 检查
/www/server/panel/vhost/下的nginx和apache配置是否含绝对路径硬编码(比如写死/www/wwwroot/demo.com),迁移时这类路径最容易 403 或 502
为什么重装宝塔比重装系统还危险
很多人以为「卸载宝塔再重装」很干净,但 bt 6 卸载脚本不会删 /www/server/mysql/data,也不会还原 /etc/fstab 里被它加进去的挂载项,更不会清理它悄悄写的 /etc/cron.d/bt。最常踩的坑是:重装后 mysql 启不动,报错 InnoDB: The system tablespace must be writable——其实是旧数据目录权限被宝塔脚本改成 www:www,而新 MySQL 进程以 mysql:mysql 身份跑。
- 彻底清理残留:卸载后手动删
/www、/var/log/wwwlogs、/etc/init.d/bt、/etc/cron.d/bt - 查进程残留:
ps aux | grep -E "(bt|panel|pytho[n]3)",别信bt 16显示的「已停止」 - 重装前确认 Python 环境:
which python3输出必须是/usr/bin/python3,如果指向/www/server/pyenv下的版本,宝塔安装会二次污染系统 Python
快照不是保险丝,是断路器。但断路器也得在短路发生前就装好——等 bt install 打印出第一行红色错误时,已经晚了。










