宝塔面板 常用运维指令手册
宝塔面板 常用运维指令手册
适用版本:Linux 面板 9.x / 10.x / 11.x / 12.x / 13.x(当前 13.1.0 正式版) 宿主系统:CentOS 7/8、RHEL 8/9、Rocky/Alma、Ubuntu 20.04/22.04/24.04、Debian 11/12/13、openEuler、麒麟、统信、龙芯 loongarch64 约定:
#root 或 sudo,$普通用户,<xxx>为占位符,面板根目录固定为/www(不可改)。 差异标注:> **版本差异**标注 13.x 新增/迁移的菜单与行为,> **坑**标注高频误操作。 更新时间:2026-11(版本事实核对至 2026-11-05)
目录
- 版本与产品形态
- 安装部署
- 目录结构与运行机制
- bt 命令全集
- 面板配置与登录救援
- 软件商店与运行环境
- 网站管理
- 数据库管理
- FTP、文件与终端
- 计划任务与日志切割
- Docker 模块
- 防火墙与系统安全
- 备份、恢复与迁移
- 监控、日志与进程
- 升级、降级与修复
- 多机与节点管理
- AI 助手与 MCP
- 卸载与残留清理
- 故障速查
- 安全基线与危险操作红线
- 附录
1. 版本与产品形态
1.1 产品族
| 名称 | 定位 | 备注 |
|---|---|---|
| 宝塔 Linux 面板 | 国内主力,Python 后端 | 本手册主体 |
| 宝塔 Windows 面板 | Windows Server 版 | 目录与服务体系完全不同,勿混用命令 |
| aaPanel | 国际版 | 同一血脉,无强制绑定账号,界面/命令大体互通 |
| 堡塔应用管理器 / 插件 | WAF、防篡改、负载均衡、一键迁移等 | 部分为付费插件 |
| 专业版 / 企业版 | 插件与多机能力 | 功能边界随版本变化 |
1.2 版本线(2026-11)
| 版本 | 关键事实 |
|---|---|
| 9.x / 10.x | 存量机器仍多,Python 虚拟环境在 /www/server/panel/pyenv |
| 11.x | 大量在跑;论坛里 11.7.0 升 13 失败是常见工单 |
| 12.0 | 2026-09 起稳定版公测,仅对公测用户开放;官方明确"正式版用户暂勿升级,优先全新安装,跨版本升级必须先做完整服务器快照" |
| 13.0.0 正式版 | AI 工具接入面板 MCP;Python 可稳定升级至 3.13;手机号一键注册绑定;一键导入其他面板的备份文件;证书申请支持选算法;面板空闲休眠自动释放资源;节点管理页面重构;优化龙芯等国产系统;修复 Docker 日志切割、免费证书列表、终端 Ctrl+C 等;下架「安全 → 恶意 IP 自动封禁」功能 |
| 13.1.0 正式版 | 企业级安全中心(多台服务器风险一屏掌握);网站快速拨测;AI 模块支持聊天生成文档块 / md+html 实时预览 / 网页检查;AI 终端可选模型;文件管理器 Markdown 实时预览;邮局兼容 Dovecot 2.4;兼容 Tomcat 11;左侧栏新增「系统」,SSH 管理与系统防火墙迁移至此;BT-Task 深度优化;修复 Docker 反向代理状态与配置文件不同步、面板 SSL 续签、Node.js 项目启动方案等 |
版本差异:13.1.0 之后找「系统防火墙」和「SSH 管理」要去左侧新的**「系统」**菜单,不在原来的「安全」里。照老截图找菜单会以为功能被删了。
1.3 与 1Panel 的根本差别
宝塔是原生安装:nginx、PHP、MySQL 直接装到 /www/server/<软件>/<版本>/,多版本靠目录区分;1Panel 是容器化:一应用一个 Compose 项目。由此带来:
| 维度 | 宝塔 | 1Panel |
|---|---|---|
| 服务管理 | systemctl / /etc/init.d/* |
docker compose |
| 配置文件 | /www/server/nginx/conf/、/www/server/panel/vhost/ |
/opt/1panel/www/ + OpenResty 容器 |
| 升级风险 | 编译安装升级可能覆盖自定义模块 | 换镜像 tag,数据目录不变 |
| 排障工具 | 直接 ps/strace/lsof 宿主进程 |
要进容器 |
| 卸载 | 面板删了,软件与服务还在跑 | 面板删了,容器还在跑 |
| 资源占用 | 低(无 Docker 开销) | 略高 |
选型的实质是"要不要 Docker 这层抽象"。已有大量传统 PHP 站点、需要精细调 nginx 模块的团队用宝塔更顺;需要多版本隔离、应用批量交付、和 K8s 生态对齐的用 1Panel。
2. 安装部署
2.1 前置条件(比 1Panel 更苛刻)
宝塔官方强调纯净系统:装过 nginx / MySQL / PHP / 其他面板的机器容易冲突。
# 1) 系统与架构
cat /etc/os-release
uname -m
# 2) 是否已有 Web/DB 服务
ss -tunlp | grep -E ':80 |:443 |:3306|:888 '
rpm -qa | grep -E 'nginx|httpd|mysql|mariadb|php' | head -20 # RHEL 系
dpkg -l | grep -E 'nginx|apache2|mysql|php' | head -20 # Debian 系
# 3) 是否已有其他面板
ls -d /www /opt/1panel /etc/init.d/bt 2>/dev/null
# 4) 分区:/www 会吃掉绝大多数空间
df -h / /www
坑:
/www是硬编码路径,安装脚本不会问你装到哪。/只给 40 GB、数据盘挂在/data的机器,装完 MySQL 数据目录仍在/www/server/data,很快撑爆根分区。上生产前先做 LVM 或把/www挂到独立数据盘,装完再改要停服迁移。
2.2 在线安装
# CentOS / RHEL 系(官方通用脚本)
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh
# Ubuntu / Debian
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
# 通用国际入口
curl -sSO https://download.bt.cn/install/install_panel.sh && bash install_panel.sh
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
官方在 2026-09-21 用 311 个节点对
install12.sh做过拨测,309 个成功、平均 112.6 ms。脚本卡在下载环节时,问题多半在服务器自身 DNS/网络,先写公共 DNS 再重试,不要急着判定"宝塔挂了"。
安装结束后终端打印:
外网面板地址: http://<IP>:8888/<安全入口>
内网面板地址: http://<内网IP>:8888/<安全入口>
username: xxxxxxxx
password: xxxxxxxx
立刻把这三行存进密码库。忘了用 bt 14 取回。
2.3 安装后第一轮检查
/etc/init.d/bt status
bt 14
cat /www/server/panel/data/port.pl
cat /www/server/panel/data/admin_path.pl 2>/dev/null # 安全入口
ss -tunlp | grep <面板端口>
systemctl status bt
journalctl -u bt -n 50 --no-pager 2>/dev/null
云服务器还要在控制台安全组放行面板端口(默认 8888,部分版本随机)。国内云厂商的安全组是独立于系统防火墙的一层。
2.4 离线 / 内网模式
# 开启面板离线模式(不再请求云端,内网/涉密环境用)
echo "True" > /www/server/panel/data/not_network.pl
bt restart
# 关闭离线模式
rm -f /www/server/panel/data/not_network.pl
bt restart
# 关闭面板静态文件加速(CDN 不可达时,界面加载慢/白屏)
rm -rf /www/server/panel/plugin/static_cdn/ && bt restart
离线模式下软件商店、在线升级、License 校验、云端备份都不可用,需要提前准备离线安装包与本地插件包。
2.5 国产系统适配
13.0.0 起专门优化了龙芯 / loongarch64 等国产系统,移除了部分无效依赖。麒麟、统信、openEuler 上注意:
- 先确认自带防火墙与 SELinux/kysec 状态,安装脚本会关掉一些东西,等保场景要复核。
- 部分编译安装组件在 ARM/龙芯上需要源码编译,时间很长,优先用"极速安装"(预编译包)。
- Python 3.13 是 13.0 起的可选升级项,内存占用更高,2 GB 以下机器别升。
3. 目录结构与运行机制
3.1 路径速查
| 路径 | 内容 | 备份优先级 |
|---|---|---|
/www/server/panel/ |
面板程序本体(Python) | 中 |
/www/server/panel/pyenv/ |
面板自带 Python 虚拟环境 | 中 |
/www/server/panel/data/ |
面板 DB、端口、安全入口、SSL、白名单 | 最高 |
/www/server/panel/vhost/ |
nginx/apache 站点配置、重写、证书引用 | 最高 |
/www/server/panel/logs/ |
面板日志 | 低 |
/www/server/panel/plugin/ |
插件目录 | 高(付费插件授权) |
/www/server/nginx/ |
nginx 程序与 conf/ |
高 |
/www/server/<php版本>/ |
PHP 各版本(如 php/74/) |
中 |
/www/server/mysql/ |
MySQL 程序 | 中 |
/www/server/data/ |
MySQL 数据目录 | 最高 |
/www/wwwroot/<站点>/ |
网站文件 | 最高 |
/www/wwwlogs/<站点>.log |
网站访问/错误日志 | 低(但要留审计) |
/www/backup/ |
面板备份(site / database / panel) | 最高(需异地) |
/www/server/panel/data/port.pl |
面板端口 | 高 |
/www/server/panel/data/admin_path.pl |
安全入口 | 高 |
/www/server/panel/data/default.db 等 |
面板 SQLite 库 | 最高 |
/etc/init.d/bt |
面板服务脚本 | 中 |
/tmp/panelBoot.pl |
面板启动日志 | 排障 |
~/.bt_panel / /root/.bt_panel |
部分版本凭据 | 高 |
3.2 进程模型
ps -ef | grep -E 'BT-Panel|BT-Task|bt-' | grep -v grep
| 进程 | 作用 |
|---|---|
BT-Panel |
面板 Web 服务(Python + gunicorn/自实现) |
BT-Task |
后台任务队列(安装软件、备份、计划任务、证书续签) |
nginx / mysqld / php-fpm |
业务服务,与面板进程独立 |
坑:面板打不开 ≠ 网站挂了。
BT-Panel挂掉时 nginx 照常提供页面,只是没法管理。重启面板不会影响网站;但重启 nginx 会。13.1.0 深度优化了 BT-Task 的资源占用,老版本上 BT-Task 卡死会表现为"面板能开,但装软件/备份一直转圈"。
3.3 服务管理(两套入口)
# 新版本
systemctl status|start|stop|restart bt
# 全版本通用(老版本 5.x 只有这个)
/etc/init.d/bt status|start|stop|restart
# 业务服务
/etc/init.d/nginx restart
/etc/init.d/mysqld restart
/etc/init.d/php-fpm-74 restart
systemctl restart nginx mysqld
4. bt 命令全集
SSH 里敲 bt 出交互菜单,输入编号执行;也可以 bt <编号> 一步到位(非交互脚本里很好用)。
4.1 编号对照表(13.x 菜单)
| 编号 | 功能 | 类别 | 典型场景 |
|---|---|---|---|
bt 1 |
重启面板服务 | 服务 | 面板打不开第一步 |
bt 2 |
停止面板服务 | 服务 | 维护、下线 |
bt 3 |
启动面板服务 | 服务 | 面板被关掉 |
bt 4 |
重载面板服务(不中断) | 服务 | 改配置后 |
bt 5 |
修改面板密码 | 账号 | 忘记密码 |
bt 6 |
修改面板用户名 | 账号 | 账号泄露 |
bt 7 |
强制修改 MySQL root 密码 | 账号 | 数据库密码丢失 |
bt 8 |
修改面板端口 | 访问 | 改端口 |
bt 9 |
清除面板缓存 | 维护 | 界面异常、改配置不生效 |
bt 10 |
清除登录限制 | 救援 | 登录失败次数锁定 |
bt 11 |
设置是否开启 IP + User-Agent 验证 | 安全 | 收紧/放松登录校验 |
bt 12 |
取消域名绑定限制 | 救援 | 换域名后进不去 |
bt 13 |
取消 IP 访问限制 | 救援 | 白名单把自己挡了 |
bt 14 |
查看面板默认信息 | 救援 | 忘记地址/账号/密码/安全入口 |
bt 15 |
清理系统垃圾 | 维护 | 磁盘告警 |
bt 16 |
修复面板(装当前版本最新 bug 修复包) | 救援 | 升级中断、面板异常 |
bt 17 |
设置日志切割是否压缩(开关,默认开) | 维护 | 日志磁盘治理 |
bt 18 |
设置是否自动备份面板(开关,默认开) | 维护 | 关闭/开启面板自备份 |
bt 19 |
关闭面板登录地区限制 | 救援 | 出差/换线路进不去 |
bt 22 |
显示面板错误日志 | 排障 | 定位启动失败 |
bt 23 |
关闭 BasicAuth 认证 | 救援 | 反代加过 BasicAuth 导致双层认证 |
bt 24 |
关闭动态口令认证(2FA) | 救援 | 手机丢失 / MFA 码不对 |
bt 25 |
设置是否保存文件历史副本(开关) | 维护 | 控制 /www 占用 |
bt 26 |
关闭面板 SSL | 救援 | 自签证书/协议用错进不去 |
bt 28 |
修改面板安全入口 | 访问 | 安全入口泄露 |
bt 29 |
取消访问设备验证 | 救援 | 换设备被挡 |
bt 30 |
取消访问 UA 验证 | 救援 | 换浏览器被挡 |
bt 32 |
开启/关闭 80、443 端口访问面板 | 访问 | 想用域名直接访问面板 |
bt 34 |
更新面板到最新版本 | 升级 | 面板登不上时升级 |
bt 35 |
btcli 命令行管理工具 | 扩展 | 进入另一套 CLI |
bt 36 |
磁盘空间清理工具 | 维护 | 精细清理 |
bt 99 |
切换英文界面 | 其他 | 国际版 |
bt 0 |
取消 | — | — |
版本差异 / 坑:官网
bt.cn/btcode.html那张老命令表把"重启/停止/启动"和编号 1/2/3 错位排版了(bt被写成重启、bt 1被写成停止)。以bt交互菜单和 docs.bt.cn 为准:bt不带参数是打开菜单,bt 1是重启、bt 2停止、bt 3启动。写自动化脚本前先bt看一眼当前版本的菜单。
4.2 高频组合
# 场景 A:完全进不去面板
bt 14 # 先拿完整地址
bt 1 # 重启
bt 22 # 还不行看错误日志
bt 16 # 修复(重装当前版本修复包)
cat /tmp/panelBoot.pl # 看启动日志
# 场景 B:忘记密码 + 用户名 + 安全入口
bt 5 # 改密码
bt 6 # 改用户名
bt 14 # 打印全部
# 场景 C:SSL 配置错,浏览器进不去
bt 26 # 关面板 SSL,回 http
# 场景 D:安全入口 / 白名单 / 2FA / 设备验证连环锁
bt 28 # 重设安全入口
bt 13 # 取消 IP 限制
bt 24 # 关动态口令
bt 29 # 取消设备验证
bt 30 # 取消 UA 验证
bt 10 # 清登录限制
# 场景 E:升级失败/面板文件异常
bt 16
bt 34 # 更新到最新
安全提醒:场景 D 是把自己一层层解锁,用完必须进面板重新逐项开启,并在操作记录里留痕。
bt 13尤其危险——等于把 IP 白名单整条删掉。
4.3 老版本 / 无编号环境
/etc/init.d/bt stop|start|restart
cat /www/server/panel/data/port.pl
# 关闭面板静态加速 / 离线模式(见 2.4)
rm -rf /www/server/panel/plugin/static_cdn/ && bt restart
5. 面板配置与登录救援
5.1 访问控制的八道闸门
宝塔的登录保护是叠加式的,出问题时先判断卡在哪一道:
| 层 | 配置项 | 命令行兜底 |
|---|---|---|
| 1 | 端口 | bt 8 |
| 2 | 安全入口(URL 路径) | bt 28 |
| 3 | 面板 SSL / 协议 | bt 26 |
| 4 | 用户名 / 密码 | bt 5 bt 6 |
| 5 | 登录失败次数锁定 | bt 10 |
| 6 | IP 白名单 / 地区限制 | bt 13 bt 19 |
| 7 | 动态口令 / BasicAuth | bt 24 bt 23 |
| 8 | 设备验证 / UA 验证 | bt 29 bt 30 |
| 9 | 域名绑定 | bt 12 |
面板默认 SSL 用自签证书。浏览器提示"连接不安全"说明服务是通的,不是故障;要么下载并信任该证书,要么
bt 26关掉。开了 SSL 就必须用 https 访问,关了就必须用 http,协议写错是最常见的"面板打不开"。
5.2 面板打不开的四层排查
# 第一层:端口与地址
bt 14
cat /www/server/panel/data/port.pl
ss -tunlp | grep <面板端口>
# 第二层:防火墙 + 云安全组
firewall-cmd --list-ports ; ufw status
# 云控制台:安全组入站规则
# 第三层:服务
/etc/init.d/bt status
bt 1
bt 22
bt 16
# 第四层:SSL 与协议
bt 26
curl -k -I http://127.0.0.1:<端口>/<安全入口>
curl -k -I https://127.0.0.1:<端口>/<安全入口>
5.3 反向代理面板
location / {
proxy_pass http://127.0.0.1:<面板端口>;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 600s;
client_max_body_size 512m;
}
反代时不要重写掉安全入口路径;缺 WebSocket 头会导致终端、日志实时刷新失效。
bt 32可以开 80/443 访问面板,但生产上更推荐保持面板独立高位端口 + 反代 + IP 白名单。
6. 软件商店与运行环境
6.1 安装方式的区别
| 方式 | 原理 | 速度 | 适用 |
|---|---|---|---|
| 极速安装 | 下载厂商预编译二进制 | 快 | 绝大多数场景 |
| 编译安装 | 现场 ./configure && make |
慢(数十分钟) | 需要自定义模块、特殊 CPU 架构 |
| 插件安装 | 装到 /www/server/panel/plugin/ |
快 | WAF、防篡改、监控等 |
# 软件安装后的位置与版本
ls /www/server/
ls /www/server/php/ # 多版本 PHP 共存
/www/server/nginx/sbin/nginx -v
/www/server/mysql/bin/mysql -V
/usr/bin/php -v ; /www/server/php/74/bin/php -v
坑:PHP 多版本是"每站点选版本",命令行
php -v指向的可能不是站点用的那个。排障一定用完整路径/www/server/php/<版本>/bin/php -v,或看站点配置里的fastcgi_pass。
6.2 服务脚本
ls /etc/init.d/ | grep -E 'nginx|httpd|mysql|php|redis|memcached|pure-ftpd'
/etc/init.d/nginx {start|stop|restart|reload|configtest}
/etc/init.d/mysqld {start|stop|restart}
/etc/init.d/php-fpm-74 {start|stop|restart|reload}
/etc/init.d/redis {start|stop|restart}
6.3 软件商店装不上 / 卡住的排查
# 1) 面板到下载节点通不通
curl -I --connect-timeout 5 https://download.bt.cn/
# 2) BT-Task 是否卡死
ps -ef | grep BT-Task | grep -v grep
bt 1
# 3) 磁盘与内存
df -h /www /tmp
free -m
# 4) 安装日志
ls -lt /tmp/ | head -20
tail -f /www/server/panel/logs/install.log 2>/dev/null
官方给的顺序是:点更新没反应、商店装不上 → 先
bt 16修复面板 → 再bt 34更新。不要一上来就重装系统。
7. 网站管理
7.1 配置文件落点
ls -la /www/server/panel/vhost/nginx/ # 每站点一个 .conf
ls -la /www/server/panel/vhost/rewrite/ # 伪静态规则
ls -la /www/server/panel/vhost/cert/ # 站点证书
cat /www/server/panel/vhost/nginx/<站点>.conf
/www/server/nginx/sbin/nginx -t # 改完必测
/etc/init.d/nginx reload
坑:面板生成的 vhost 文件里带"请勿手工修改"的注释不是摆设,面板后续操作会重写。要加自定义配置,用面板的「配置文件」编辑器或放进
include的独立文件,别直接改主 vhost。
7.2 站点常见操作
# 站点根目录与权限
ls -la /www/wwwroot/<站点>/
chown -R www:www /www/wwwroot/<站点>/
find /www/wwwroot/<站点>/ -type d -exec chmod 755 {} \;
find /www/wwwroot/<站点>/ -type f -exec chmod 644 {} \;
# 日志
tail -f /www/wwwlogs/<站点>.log
tail -f /www/wwwlogs/<站点>.error.log
# 大日志排查
du -sh /www/wwwlogs/* | sort -h | tail -10
7.3 502 / 504 的定位链
# 1) PHP-FPM 活着吗
ps -ef | grep php-fpm | grep -v grep
ss -lxp | grep php-cgi.sock
# 2) nginx 错误日志
tail -100 /www/wwwlogs/<站点>.error.log
# 3) 反代目标通不通
curl -I http://127.0.0.1:<后端端口>/
# 4) 防火墙 / SELinux
getenforce
常见原因:PHP-FPM 挂了或进程数打满(pm.max_children)、socket 路径不匹配、反代目标端口错、SELinux 拦截、后端超时。
7.4 SSL 证书
# 面板「网站 → SSL → Let's Encrypt」,13.0 起支持选择证书算法
# 手动校验
openssl x509 -in /www/server/panel/vhost/cert/<站点>/fullchain.pem -noout -dates
curl -vI https://<域名> 2>&1 | grep -A5 'SSL connection'
13.0.0 修复了"证书部分签发异常"和"免费证书列表异常",13.1.0 修复了"面板 SSL 续签异常"。证书续签依赖 80 端口(http-01)或 DNS API;别为了安全把 80 全关了,否则三个月后证书集体过期。
8. 数据库管理
8.1 数据与配置
ls -la /www/server/data/ # MySQL 数据目录
cat /etc/my.cnf
/www/server/mysql/bin/mysql -uroot -p -e "SELECT VERSION();"
8.2 忘记 root 密码
bt 7 # 官方一键强制修改 MySQL root 密码
如果 bt 7 不生效(不同 MySQL 版本行为不同),走标准 skip-grant-tables 流程:
systemctl stop mysqld 2>/dev/null || /etc/init.d/mysqld stop
mysqld_safe --skip-grant-tables --user=mysql &
mysql -uroot
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '<新强密码>';
-- MySQL 5.7 用:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('<新强密码>');
FLUSH PRIVILEGES;
mysqladmin -uroot -p shutdown
systemctl start mysqld 2>/dev/null || /etc/init.d/mysqld start
bt 7会同步更新面板里登记的 root 密码。手工改库之后要回面板「数据库 → root 密码」同步,否则面板的备份、phpMyAdmin 会连不上。
8.3 备份与恢复
# 逻辑备份(推荐,与面板备份互补)
/www/server/mysql/bin/mysqldump -uroot -p'<pwd>' --all-databases \
--single-transaction --routines --triggers | gzip > /root/db-$(date +%F).sql.gz
# 恢复
zcat /root/db-2026-11-05.sql.gz | /www/server/mysql/bin/mysql -uroot -p'<pwd>'
# 面板自动备份位置
ls -lh /www/backup/database/
更细的复制、binlog PITR、参数调优见 MySQL / MariaDB 分册。面板只是包了一层 UI 与定时备份。
8.4 远程访问
四处都要改:MySQL 用户 host 授权、面板「数据库 → 权限」设所有人/指定 IP、系统防火墙放行 3306、云安全组放行。生产环境不要开 root@% 到公网。
9. FTP、文件与终端
# FTP 服务(pure-ftpd)
/etc/init.d/pure-ftpd status|restart
cat /www/server/pure-ftpd/etc/pure-ftpd.conf | grep -E 'PassivePortRange|ForcePassiveIP'
# 文件管理器改动落点就是 /www/wwwroot,命令行完全等价
# 面板终端依赖 WebSocket,反代配置见 5.3
13.0.0 修复了"终端无法通过 Ctrl+C 退出及部分命令无法使用"的问题;13.1.0 的 AI 终端支持模型选择。长期任务仍建议 SSH + tmux,别依赖面板终端。
10. 计划任务与日志切割
10.1 面板计划任务
# 面板任务最终落在 root 的 crontab
crontab -l
# 任务日志
ls -lt /www/server/panel/logs/ | head
任务类型:备份网站 / 备份数据库 / 日志切割 / 释放内存 / 访问 URL / 执行 Shell 脚本 / 同步时间。
坑:面板里的 Shell 脚本任务以 root 执行,而且很多人把脚本写在
/www下、面板升级或站点删除时会被一起清掉。脚本放/usr/local/sbin/并在任务里用绝对路径。
10.2 日志切割
bt 17 # 开关"日志切割是否压缩"(执行一次翻转状态)
ls -lh /www/wwwlogs/*.log | sort -k5 -h | tail -10
# 面板的切割脚本
ls -la /www/server/panel/script/ | grep -i log
磁盘 100% 时先切日志而不是先删数据:
bt 15清垃圾 +bt 36磁盘清理工具。MySQL 在数据目录满时会直接拒写。
11. Docker 模块
宝塔从 7.x 起内置 Docker 管理(容器/镜像/网络/卷/Compose/编排模板),但它只是 Docker API 的一层 UI,与 1Panel 的"一切皆容器"是两回事。
11.1 命令行等价操作
docker ps -a --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'
docker images
docker network ls
docker volume ls
docker stats --no-stream
docker system df -v
docker compose ls
11.2 与面板相关的已知问题(13.x 修复项)
| 现象 | 版本 | 说明 |
|---|---|---|
| Docker 日志切割异常 | 13.0.0 已修复 | 旧版本切割后容器日志为空或继续膨胀 |
| Docker 反向代理状态与配置文件不同步 | 13.1.0 已修复 | 面板显示"已启用",nginx 配置里其实没有 |
| 容器端口与防火墙规则冲突 | 长期 | Docker 走 DOCKER 链,面板防火墙放行/关闭不一定生效 |
网站反代到容器写成 127.0.0.1 |
用户配置问题 | 宝塔的 nginx 是宿主进程,127.0.0.1:<映射端口> 在这里是对的(与 1Panel 容器化 OpenResty 相反!) |
这是两套面板最容易混淆的一点:宝塔 nginx 在宿主机上,反代容器写
http://127.0.0.1:8080没问题;1Panel 的 OpenResty 在容器里,127.0.0.1指它自己,必须写宿主 IP。迁移站点时这条不改就是全站 502。
11.3 Compose 项目位置
find /www -name docker-compose.yml 2>/dev/null | head -20
# 面板「Docker → 容器编排」创建的项目通常在
ls -la /www/server/panel/data/compose/ 2>/dev/null
面板创建的 Compose 项目,命令行
docker compose down -v删掉卷后面板状态可能残留;删除优先在面板里操作。
12. 防火墙与系统安全
12.1 菜单位置变化
版本差异:13.1.0 起左侧栏新增「系统」,SSH 管理和系统防火墙从「安全」迁移到「系统」。13.0.0 起「安全 → 恶意 IP 自动封禁」功能已下架,别再按老文档找它。
12.2 命令行
# RHEL 系
firewall-cmd --state
firewall-cmd --list-all
firewall-cmd --permanent --add-port=8888/tcp && firewall-cmd --reload
# Debian 系
ufw status verbose
ufw allow 8888/tcp
# 端口实测
ss -tunlp | grep <port>
iptables -L DOCKER-USER -n -v
nmap -Pn -p <port> <公网IP>
12.3 SSH 管理
面板「系统 → SSH 管理」可改端口、禁密码登录、改 root 登录策略。改之前:
# 保留一个当前 SSH 会话不要断,另开一个验证
cp /etc/ssh/sshd_config /root/sshd_config.bak
sshd -t
# 改端口后同步:firewalld 放行 + SELinux 端口标签
semanage port -a -t ssh_port_t -p tcp <新端口> # SELinux 环境
firewall-cmd --permanent --add-port=<新端口>/tcp && firewall-cmd --reload
systemctl restart sshd
坑:改 SSH 端口漏了 SELinux 标签或防火墙,重启 sshd 的那一刻就是失联。远程操作必须有带外/云控制台兜底。
12.4 面板自身安全
- 改默认端口(
bt 8)+ 安全入口(bt 28) - 面板 SSL 换成受信任证书(自签仅应急)
- 开 IP 白名单 / 地区限制 / 双因素
- 定期检查「面板操作日志」
- 不要开启
bt 32(用 80/443 访问面板)暴露在公网,除非有 WAF 与白名单
13. 备份、恢复与迁移
13.1 面板备份体系
| 类型 | 位置 | 内容 |
|---|---|---|
| 网站备份 | /www/backup/site/ |
站点文件 + 关联数据库(可选) |
| 数据库备份 | /www/backup/database/ |
SQL 导出 |
| 面板备份 | /www/backup/panel/ |
面板配置(bt 18 控制自动备份开关) |
| 计划任务备份 | 可配第三方存储 | 对象存储 / FTP / 远程 |
ls -lh /www/backup/site/ | tail -10
ls -lh /www/backup/database/ | tail -10
/www/backup在本机,机器故障/被入侵时一起没。必须配异地备份(对象存储、FTP、rsync 到另一台机器),并定期做一次真实恢复演练。
13.2 命令行全量兜底
tar czf /root/bt-wwwroot-$(date +%F).tgz /www/wwwroot
tar czf /root/bt-vhost-$(date +%F).tgz /www/server/panel/vhost
tar czf /root/bt-paneldata-$(date +%F).tgz /www/server/panel/data
/www/server/mysql/bin/mysqldump -uroot -p'<pwd>' --all-databases \
--single-transaction --routines --triggers | gzip > /root/bt-db-$(date +%F).sql.gz
crontab -l > /root/bt-crontab-$(date +%F).txt
13.3 迁移到新服务器
# 方式一:官方「一键迁移」插件(面板 → 软件商店),按插件指引填新旧服务器
# 方式二:手工迁移(更可控)
# 新机:装同版本宝塔(务必同版本,跨大版本配置格式可能变)
# 传文件
scp /root/bt-*.tgz root@<新机>:/root/
# 新机解包(注意先停 nginx/mysql,避免数据目录被写)
tar xzf /root/bt-wwwroot-*.tgz -C /
tar xzf /root/bt-vhost-*.tgz -C /
zcat /root/bt-db-*.sql.gz | /www/server/mysql/bin/mysql -uroot -p'<pwd>'
/www/server/nginx/sbin/nginx -t && /etc/init.d/nginx reload
# 重新申请/导入证书、核对伪静态与反代、恢复 crontab
版本差异:13.0.0 起支持一键导入其他面板的备份文件(如从 1Panel / aaPanel 迁过来)。导入前仍要核对站点配置里的路径、PHP 版本、反代目标,跨面板的目录体系不一样,不能指望 100% 自动适配。
13.4 迁移检查清单
- 新机
/www分区容量 ≥ 旧机已用量 × 1.5 - 同版本面板、同版本 nginx / PHP / MySQL
- 数据库备份在测试机还原验证过
- 站点文件权限
www:www - 证书重新申请或完整导入(含私钥)
- 伪静态 / 反代 / 防盗链 / WAF 规则
- crontab、计划任务、日志切割
- 防火墙规则与云安全组
- DNS TTL 提前调 300,切换后旧机保留 72 小时
14. 监控、日志与进程
# 面板日志
tail -f /www/server/panel/logs/error.log 2>/dev/null
tail -f /www/server/panel/logs/request.log 2>/dev/null
cat /tmp/panelBoot.pl
# bt 22 输出的是面板错误日志摘要
bt 22
# 系统层
top -bn1 | head -20
free -m
df -h /www /tmp
iostat -x 1 3
# 磁盘大文件
du -sh /www/* 2>/dev/null | sort -h | tail -10
du -sh /www/wwwlogs/* | sort -h | tail -10
13.1.0 上了「企业级安全中心」与「网站快速拨测」,适合多机风险汇总与站点可用性排查;单机排障仍以命令行日志为准。
15. 升级、降级与修复
15.1 两条升级路径
# 方式一(推荐):登录面板 → 首页右上角「更新」→ 立即更新
# 方式二(面板登不上):
bt 34 # 按提示选择更新源
官方说明:升级面板不影响网站与数据库数据,面板故障时数据也仍在。但这句话不等于"不需要备份"。
15.2 升级前必做
# 1) 完整服务器快照(云平台)—— 跨大版本升级的硬性要求
# 2) 面板配置 + 站点 + 数据库备份(见 13.2)
# 3) 记录当前版本与自定义改动
cat /www/server/panel/data/version.pl 2>/dev/null
/www/server/nginx/sbin/nginx -V 2>&1 | tail -3 # 编译参数 / 自定义模块
ls /www/server/panel/plugin/ # 已装插件
15.3 稳定版 vs 正式版
- 宝塔用版本号奇偶区分发布通道(偶数稳定、奇数正式,具体以面板内显示为准)。
- 12.0 曾长期处于"稳定版公测",官方明确正式版用户暂勿升级、优先全新安装、跨版本升级必须快照。看到新版本号先确认发布通道再动。
- 升级到一半失败 →
bt 16修复 → 仍不行 → 在面板首页「更新」里选之前的稳定版重装/降级。
15.4 Python 3.13
13.0.0 起支持把面板运行环境稳定升级到 Python 3.13,运行更快但内存占用更高。2 GB 及以下机器不要升;升之前确认所有第三方插件兼容,否则插件会静默失效。
15.5 升级失败排查
curl -I --connect-timeout 5 https://download.bt.cn/ # 常见报错:获取最新版本失败
cat /etc/resolv.conf
bt 16
bt 34
bt 22
cat /tmp/panelBoot.pl
论坛里 11.7.0 升 13 失败的典型报错是
ERROR:获取最新版本失败,请检查网络连接,根因多为服务器 DNS 解析到不可达节点。改公共 DNS 后重试,不是面板 bug。
16. 多机与节点管理
- 13.0.0 重构了节点管理页面,优化交互与展示。
- 13.1.0 的「企业级安全中心」把多台服务器风险汇总到一屏。
- 多机能力通常需要专业版/企业版授权,节点与被控端之间要保证时间同步与端口可达。
timedatectl
chronyc sources 2>/dev/null
ss -tunlp | grep <节点端口>
17. AI 助手与 MCP
| 版本 | 能力 |
|---|---|
| 13.0.0 | AI 工具接入面板 MCP,服务器管理更规范;AI 助手超大粘贴文本自动转附件;面板专属客服 |
| 13.1.0 | AI 助手深度升级;聊天内容生成文档块、md/html 实时预览、文件预览下载、网页检查能力;AI 终端可选模型 |
| 13.0.0 起 | 加强高风险操作拦截、优化上下文压缩 |
安全红线:把 MCP / AI 助手接到面板,等于给了一个能用自然语言触发 root 级操作的入口。生产环境应当:限制可调用工具集、只对特定账号开放、保留完整操作审计、把
rm/ 服务重启 / 防火墙变更列为需人工二次确认。别把 AI 助手的 API Key 和面板管理员密码放同一台可公网访问的管理机上。
18. 卸载与残留清理
18.1 官方卸载脚本(推荐)
# 先备份!见 13.2
wget -O bt-uninstall.sh http://download.bt.cn/install/bt-uninstall.sh
sh bt-uninstall.sh
18.2 手工卸载(老版本 / 脚本不可用)
# ★ 下面只删面板,不动网站与数据库数据
/etc/init.d/bt stop
chkconfig --del bt 2>/dev/null
systemctl disable bt 2>/dev/null
rm -f /etc/init.d/bt
rm -f /usr/bin/bt
rm -rf /www/server/panel
systemctl daemon-reload
官网
bt.cn/btcode.html给的就是这一串。它只删/www/server/panel,nginx / MySQL / PHP //www/wwwroot//www/backup全都还在,这正是"卸载面板不丢数据"的含义。别用rm -rf /www,那会把业务一起清掉。
18.3 彻底清理(确认整机不再使用)
# ★★ 不可逆,逐条确认
/etc/init.d/nginx stop ; /etc/init.d/mysqld stop ; /etc/init.d/php-fpm-* stop
systemctl stop bt 2>/dev/null
# 面板相关残留
rm -f /etc/init.d/bt /usr/bin/bt
rm -rf /www/server/panel /www/server/panel/pyenv
# 业务软件(确认数据已迁走)
# rm -rf /www/server /www/wwwroot /www/wwwlogs /www/backup
# 计划任务、防火墙规则、SSH 改动
crontab -l | grep -i -E 'bt|panel'
firewall-cmd --list-all
ufw status
18.4 残留验证
ps -ef | grep -E 'BT-Panel|BT-Task' | grep -v grep
ls -d /www/server/panel 2>/dev/null
ls -l /etc/init.d/bt /usr/bin/bt 2>/dev/null
crontab -l | grep -i -E 'bt|panel'
ss -tunlp | grep <原面板端口>
systemctl list-units --all | grep -i bt
19. 故障速查
| 现象 | 优先排查 | 动作 |
|---|---|---|
| 面板 404 | 安全入口 | bt 14 拿完整地址;bt 28 重设入口 |
| 面板打不开 | 端口→防火墙→服务→SSL | bt 14 → ss -tunlp → bt 1 → bt 22 → bt 16 |
| 提示连接不安全 | 自签证书 / 协议错 | 信任证书或 bt 26;https/http 对齐 |
| 忘记密码 | 账号 | bt 5、bt 6、bt 14 |
| 登录次数锁定 | 登录限制 | bt 10 |
| 换 IP/地区后进不去 | 白名单/地区 | bt 13、bt 19、bt 29、bt 30 |
| 2FA 码不对 | 动态口令 | bt 24 |
| 界面白屏/改配置不生效 | 缓存 / CDN | bt 9;离线删 static_cdn/ 后 bt restart |
| 装软件一直转圈 | BT-Task 卡死 / 网络 | bt 1;curl -I download.bt.cn;查 /tmp 安装日志 |
| 升级报"获取最新版本失败" | DNS / 网络 | 改公共 DNS;bt 16 → bt 34 |
| 升级后功能异常 | 面板文件损坏 | bt 16 修复;必要时面板内降级 |
| 网站 502 | PHP-FPM / 反代 | 看 /www/wwwlogs/*.error.log;`ps -ef |
| 网站 403 | 权限 / SELinux | chown -R www:www;getenforce |
| SSL 续签失败 | 80 端口 / DNS API | 13.1.0 已修面板 SSL 续签;确认 80 可达 |
| MySQL 连不上 | 数据目录满 / root 密码 | df -h /www;bt 7 |
| 磁盘 100% | 日志 / 备份 | bt 15、bt 36、du -sh /www/wwwlogs/* |
| Docker 面板状态与实际不符 | 13.1.0 前 bug | 升级到 13.1.0+,以 docker ps 为准 |
| 反代容器 502(从 1Panel 迁来) | 反代目标写成宿主 IP | 宝塔 nginx 在宿主机,应写 127.0.0.1 |
19.1 五分钟定位脚本
#!/usr/bin/env bash
echo "===== 面板信息 ====="; bt 14 2>/dev/null || cat /www/server/panel/data/port.pl
echo "===== 服务 ====="; /etc/init.d/bt status 2>/dev/null
ps -ef | grep -E 'BT-Panel|BT-Task' | grep -v grep
echo "===== 磁盘 ====="; df -h / /www /tmp
echo "===== 内存 ====="; free -m
echo "===== 监听 ====="; ss -tunlp | grep -E ':80 |:443 |:3306'
echo "===== 业务进程 ====="; ps -ef | grep -E 'nginx|mysqld|php-fpm' | grep -v grep | head
echo "===== 站点错误日志 ====="; tail -n 30 /www/wwwlogs/*.error.log 2>/dev/null | tail -40
echo "===== 大日志 ====="; du -sh /www/wwwlogs/* 2>/dev/null | sort -h | tail -5
echo "===== 面板错误 ====="; bt 22 2>/dev/null | tail -30
20. 安全基线与危险操作红线
20.1 基线清单
- 面板端口非默认、安全入口启用、面板 SSL 用受信任证书
- 面板仅对管理网段开放(云安全组 + 系统防火墙双层)
- 开双因素、登录失败锁定、IP 白名单
- 面板操作日志与网站访问日志保留 ≥ 180 天
-
/www挂在独立分区/数据盘,磁盘告警阈值 80% - 异地备份已配,恢复演练通过
- MySQL 不开
root@%公网;FTP 用被动模式 + 端口范围限制 - 第三方插件来源可信、授权与版本记录在册
- 定期升级面板与运行环境(PHP / nginx / MySQL 的 CVE 同样致命)
- AI/MCP 入口限账号、留审计、高风险操作需二次确认
- SSH 改端口时同步 SELinux + 防火墙 + 保留带外通道
20.2 危险命令红线
| 命令 | 后果 |
|---|---|
rm -rf /www |
网站、数据库、备份、日志全没了 |
rm -rf /www/server/data |
MySQL 数据目录 |
bt 26 / bt 13 / bt 24 用完不恢复 |
面板失去防护,公网裸奔 |
bt 32 无白名单开 80/443 访问面板 |
面板直接暴露公网 |
bt 7 后不回面板同步密码 |
面板备份 / phpMyAdmin 连不上 |
直接改 /www/server/panel/vhost/nginx/*.conf |
面板重写,改动丢失 |
| 关 80 端口"为了安全" | Let's Encrypt 续签全失败 |
docker compose down -v(在宝塔 Docker 模块下) |
删业务卷 |
| 远程重启 sshd 未验证新端口 | 失联 |
20.3 权限本质
面板以 root 运行,文件管理器、终端、Shell 计划任务都是 root。面板账号泄露 = 服务器失守。历史上宝塔多次出现过高危漏洞(未授权访问、数据库泄露类),所以:
- 面板不暴露公网,用 VPN / 跳板机 / 云堡垒机访问。
- 关注官方安全公告,补丁版本第一时间升。
- 定期检查
/www/server/panel/data/下是否有异常文件、计划任务里是否有陌生脚本。
21. 附录
21.1 bt 编号速查(打印版)
bt 交互菜单 bt 1 重启面板 bt 2 停止面板
bt 3 启动面板 bt 4 重载面板 bt 5 改密码
bt 6 改用户名 bt 7 改 MySQL 密码 bt 8 改端口
bt 9 清缓存 bt 10 清登录限制 bt 11 IP+UA 验证
bt 12 取消域名绑定 bt 13 取消 IP 限制 bt 14 ★默认信息
bt 15 清系统垃圾 bt 16 ★修复面板 bt 17 日志压缩开关
bt 18 面板自备份开关 bt 19 关地区限制 bt 22 ★错误日志
bt 23 关 BasicAuth bt 24 关动态口令 bt 25 文件副本开关
bt 26 关面板 SSL bt 28 改安全入口 bt 29 取消设备验证
bt 30 取消 UA 验证 bt 32 80/443 访问面板 bt 34 ★更新面板
bt 35 btcli CLI bt 36 磁盘清理 bt 99 切英文
21.2 路径速查
| 需求 | 路径 / 命令 |
|---|---|
| 面板端口 | /www/server/panel/data/port.pl |
| 安全入口 | /www/server/panel/data/admin_path.pl |
| 站点配置 | /www/server/panel/vhost/nginx/<站点>.conf |
| 伪静态 | /www/server/panel/vhost/rewrite/ |
| 站点证书 | /www/server/panel/vhost/cert/ |
| 网站文件 | /www/wwwroot/<站点>/ |
| 网站日志 | /www/wwwlogs/<站点>.log |
| MySQL 数据 | /www/server/data/ |
| 备份 | /www/backup/ |
| 面板日志 | /www/server/panel/logs/、/tmp/panelBoot.pl |
| 面板服务 | /etc/init.d/bt、systemctl status bt |
21.3 与其他手册的配合
| 遇到这类问题 | 翻哪份 |
|---|---|
| Docker 原理、Compose、镜像加速 | Docker 常用运维指令手册 |
| MySQL 复制/PITR、Redis、PG | 对应数据库分册 |
| nginx 配置语法、反代与 WebSocket | 运维工具手册 12-隧道与高可用/nginx.md |
| firewalld / SELinux / sshd | CentOS 手册、国产操作系统手册 |
| 1Panel 的容器化路径与目录体系 | 1Panel 常用运维指令手册 |
| 两套面板选型与迁移对照 | 国内容器平台与运维面板总览 |
| 容器平台整体分层 | 容器平台常规运维指令手册 |
维护建议:宝塔的编号菜单、插件功能边界、付费能力随版本变化较快,本文以 13.1.0 菜单为基准。落地时把面板端口、安全入口、备份目标、SSH 端口替换为团队实际值并写入 CMDB;所有救援类
bt命令执行后必须补一轮安全配置复核。