连续复制
一键复制
一键打包

宝塔面板一键优化补丁

介绍

自用的宝塔面板一键优化补丁,主要有以下优化项目:

  1. 去除宝塔面板强制绑定账号

  2. 去除各种删除操作时的计算题与延时等待

  3. 去除创建网站自动创建的垃圾文件(index.html、404.html、.htaccess)

  4. 关闭未绑定域名提示页面,防止有人访问未绑定域名直接看出来是用的宝塔面板

  5. 关闭活动推荐与在线客服

  6. 去除自动校验文件与上报信息定时任务

  7. 去除面板日志与网站绑定域名上报

使用说明

适用于宝塔 Linux 面板 7.7 版本的命令 :

国外GitHub源:

wget -O optimize.sh https://raw.githubusercontent.com/it-iou/bt_clean/master/optimize.sh && bash optimize.sh

国内Gitee源:

wget -O optimize.sh https://gitee.com/itiou/bt_clean/raw/master/optimize.sh && bash optimize.sh

一键升(降)级到宝塔7.7版本命令:

国外GitHub源:

curl https://raw.githubusercontent.com/it-iou/bt_clean/master/update6.sh|bash

国内Gitee源:

curl https://gitee.com/itiou/bt_clean/raw/master/update6.sh|bash

适用于宝塔 Linux 面板 >=7.9 版本的命令:

国外GitHub源:

wget -O optimize.sh https://raw.githubusercontent.com/it-iou/bt_clean/master/optimize_new.sh && bash optimize.sh

国内Gitee源:

wget -O optimize.sh https://gitee.com/itiou/bt_clean/raw/master/optimize_new.sh && bash optimize.sh

适用于宝塔国际版 aaPanel 的命令:

国外GitHub源:

wget -O optimize.sh https://raw.githubusercontent.com/it-iou/bt_clean/master/optimize_aapanel.sh && bash optimize.sh

国内Gitee源:

wget -O optimize.sh https://gitee.com/itiou/bt_clean/raw/master/optimize_aapanel.sh && bash optimize.sh

适用于宝塔 Windows 面板的命令:

国外GitHub源:

wget -O optimize.sh https://raw.githubusercontent.com/it-iou/bt_clean/master/optimize.py -O C:/optimize.py && "C:\Program Files\python\python.exe" C:/optimize.py

国内Gitee源:

wget https://gitee.com/itiou/bt_clean/raw/master/optimize.py -O C:/optimize.py && "C:\Program Files\python\python.exe" C:/optimize.py

宝塔常见问题修复方案

1. CentOS7.9 环境下无法使用宝塔 SSH 终端

问题复现:

打开宝塔 SSH 终端显示 连接丢失,正在尝试重新连接!

image-20241101193245797

查看错误日志显示:

...
werkzeug.routing.exceptions.WebsocketMismatch: 400 Bad Request: 
The browser (or proxy) sent a request that this server could not understand.
...

问题原理:

  • 版本兼容性问题: 较新版本的 Flask 和 Werkzeug 改变了 WebSocket 路由处理机制。

    • 由于路由机制改变,WebSocket 请求在默认情况下被误识别为普通 HTTP 请求。

  • 路由标记问题: WebSocket 端点需要通过 websocket=True 标记来显式区分。

    • 缺少必要标记导致 WebSocket 请求处理错误。

解决方案:

修改 /www/server/panel/class 下面的 flask_sockets.py 文件

将源代码第78行

self.url_map.add(Rule(rule, endpoint=f))

修改为:

self.url_map.add(Rule(rule, endpoint=f, websocket=True))

一键脚本

# 备份ask_sockets.py文件
cp /www/server/panel/class/flask_sockets.py /www/server/panel/class/flask_sockets.py.bak

# 修改文件重启面板
sed -i 's/self.url_map.add(Rule(rule, endpoint=f))/self.url_map.add(Rule(rule, endpoint=f, websocket=True))/g' /www/server/panel/class/flask_sockets.py && bt 1

2. 宝塔面板下载文件时出错

问题复现:

宝塔面板下载文件显示错误:

出错了,面板运行时发生错误!
TypeError: send_file() got an unexpected keyword argument 'add_etags'

image-20241101201517382

问题原理:

  • 参数兼容性问题:在 Flask 2.x 版本中,send_file() 函数的参数更新,add_etags 参数不再使用。

    • 与较新 Flask 版本不兼容的代码中仍然使用了这个参数,导致函数调用失败。

解决方案:

降级 Flask 版本:

# 查看当前版本
btpip show flask

# 安装正确的版本(例如Flask 2.1.2)
btpip install -U Flask==2.1.2 && bt 1

3. 宝塔面板申请 SSL 证书时报错

问题复现:

申请 SSL 证书时出现 Invalid version. The only valid version for is 0.

image-20241101203102405

问题原理:

  • X不匹配:X仅支持版本0,由于错误地设置了不适用的版本号,导致申请失败。

    • 在 SSL/TLS 标准中,X509v1 证书请求是唯一支持的版本有无效甚至不支持的额外版本号被设置。

解决方案:

修改 /www/server/panel/class 中的 acme_v2.py 文件

找到源代码第973行,将

X509Req.set_version(2)

修改为:

X509Req.set_version(0)

一键脚本

# 备份当前的acme_v2.py文件
cp /www/server/panel/class/acme_v2.py /www/server/panel/class/acme_v2.py.bak

# 修改文件及重启面板
sed -i 's/X509Req.set_version(2)/X509Req.set_version(0)/g' /www/server/panel/class/acme_v2.py && bt 1