插件介绍:ServerStats 是一款专为 Handsome 主题开发的服务器状态监控插件,无需修改主题源文件,一键启用即可在导航栏添加实时服务器状态栏。基于前辈的一些各种教程,采用纯插件化架构,完美兼容 Handsome 主题,支持 Pjax 无刷新加载,具备完善的安全防护机制。

📋 环境说明

1. 💻 系统与环境

项目要求说明
操作系统🐧 LinuxCentOS Stream 9 / Ubuntu 22.04 / Debian 10.2+
PHP 版本🐘 7.4 ~ 8.3推荐 PHP 8.0+
Typecho📝 1.2.1+低版本未测试,建议升级
Handsome 主题🎨 任意版本需支持导航栏下拉菜单
Web 服务器🌐 Nginx / Apache两者均可

2. ⚙️ PHP 函数

插件通过读取 /proc 目录获取系统状态,仅需 file_get_contents 函数可用。请确保该函数未被禁用

函数必要性说明
file_get_contents✅ 必需用于读取 /proc 目录下的系统文件
shell_exec❌ 不需要插件未使用
exec❌ 不需要插件未使用
system❌ 不需要插件未使用
💡 file_get_contents 是 PHP 核心函数,默认开启,极少被禁用。如被禁用,请在 php.inidisable_functions 中移除即可。

🔍 验证命令

php -r "echo file_get_contents('/proc/uptime');"

📌 检查方法

  • 查看 php.ini 中的 disable_functions 配置项
  • 如被禁用,请移除对应函数名后重启 PHP 服务

3. 🗜️ 宝塔面板用户配置说明

如使用宝塔面板,默认的 open_basedir 限制不包含 /proc/ 目录,会导致 CPU、内存、负载等数据无法读取。

🔧 解决方法:在网站根目录的 .user.ini 文件末尾添加 :/proc/

open_basedir=/www/wwwroot/your.domain/:/tmp/:/proc/
⚠️ 请将 your.domain 替换为实际网站目录名称,修改后重启 PHP 服务生效。

✅ 验证方法:启用插件后,点击状态栏图标,如 CPU/内存/负载显示正常数据则配置成功,如显示 --0 则需检查上述配置。


4. 🛠️ 系统工具(可选)

部分系统可能需要安装基础工具包:

# Debian/Ubuntu
apt-get update && apt-get install -y procps net-tools

# CentOS
yum install -y procps net-tools

# 查看安装情况
$ command -v ps && command -v ifconfig && echo "✅ 全部已安装" || echo "❌ 缺少组件"
💡 大多数系统已默认安装,如数据正常显示可跳过此步骤。

5. 🔌 兼容性说明

环境兼容性备注
长亭雷池 WAF✅ 兼容支持获取真实 IP
宝塔 WAF✅ 兼容支持获取真实 IP
Cloudflare CDN☁️ 兼容自动识别 CF-Connecting-IP
Pjax 无刷新🔄 兼容Handsome 默认支持

✨ 功能特点

🖥️ 服务器监控

  • CPU 使用率:实时显示占用百分比,支持多核心检测
  • 内存状态:真实内存使用量、缓存(buffer)、缓冲(cached) 分别展示
  • 磁盘占用:实时显示磁盘使用量和总量
  • 系统负载:1min/5min/15min 负载展示
  • 缓存命中率:智能计算内存缓存命中率
  • 服务器运行时间:精确到秒的运行时长

🌐 网络监控

  • 网络流量:主网卡上传/下载总量 + 实时速率
  • 磁盘 I/O:磁盘读写总量 + 实时速率
  • Web 服务器信息:服务器软件、通信协议、PHP 版本

👤 访客信息

  • 真实 IP 获取:兼容 CDN、WAF(Cloudflare、雷池、宝塔等)
  • 设备/浏览器识别:自动识别操作系统和浏览器类型
  • 请求信息:请求方法、服务语言、连接类型、当前域名

🛡️ 安全防护

  • 域名白名单:防止 API 被外部盗用(在插件页面配置)
  • 频率限制:每分钟最多 30 次请求,防止恶意刷取
  • 文件读取限制:仅允许读取 /proc 等安全路径

📥 安装步骤

1. 📂 下载插件

将插件解压后上传至 /usr/plugins/ServerStats/ 目录,目录结构如下: 下载插件

/usr/plugins/ServerStats/
├── Plugin.php          # 插件主文件
├── serverInfo.php      # API 接口文件
├── plugin_config.json  # 配置文件(自动生成)
├── assets/
│   ├── script.js       # 前端脚本
│   └── style.css       # 样式文件
└── cache/              # 缓存目录(自动创建)
    ├── stats/          # 数据缓存
    └── limit/          # 频率限制缓存

2. 🔌 启用插件

进入 Typecho 后台 → 控制台插件 → 找到 ServerStats → 点击 启用


3. ⚙️ 配置插件

插件启用后会自动创建配置文件和缓存目录,一般无需额外配置。如需调整:

配置项说明推荐值
API 地址serverInfo.php 访问路径/usr/plugins/ServerStats/serverInfo.php
刷新间隔数据刷新毫秒数5000
Pjax 兼容Handsome 默认启用 Pjax启用
域名白名单允许访问 API 的域名自动识别当前域名
FontAwesomeFontAwesome 小图标启用
调试模式debug.log 用于排查问题禁用

4. ✅ 验证安装

启用插件后,访问网站首页,查看导航栏右侧是否出现服务器状态图标(🧮)。点击图标展开面板,如正常显示数据则安装成功。


🖼️ 界面预览

状态栏位于导航栏右侧,点击图标即可展开下拉面板:

区域显示内容
运行状态CPU/内存/磁盘/缓存/缓冲/负载 + 进度条
网络状态网络流量/实时速率 + IO 读写/实时速率
访客信息IP/设备/浏览器/服务器时间/运行时长等

插件设置
插件设置
监控面板
监控面板


❓ 常见问题

Q1:状态栏不显示?

  • 检查插件是否已启用
  • 检查 Handsome 主题导航栏是否存在 ul.nav.navbar-nav 元素
  • 按 F12 查看控制台是否有 JavaScript 报错
  • 插件设置打开调试模型查看日志记录

Q2:数据显示为 -- 或 0?

  • 检查 PHP 是否有权限读取 /proc 目录
  • 运行测试命令:php -r "var_dump(file_get_contents('/proc/uptime'));"
  • 检查 serverInfo.php 路径是否正确

Q3:API 返回 403 错误?

  • 检查域名白名单配置是否正确
  • 确认请求来源域名在白名单中
  • 本地/内网请求会自动放行

Q4:API 返回 429 错误?

  • 触发频率限制,每分钟请求超过 30 次
  • 降低前端刷新间隔配置

Q5:与主题原本的服务器状态栏冲突怎么办?

  • 插件会自动移除原主题的状态栏元素(#StateDataPos),两者不会冲突。如仍有问题,请确保主题未魔改过相关源代码结构。
  • 留言具体问题


📅 更新日志

版本日期更新内容
v2.2.32025-05-17🎉 初始插件版本发布 • 无需修改主题源文件 • 新增域名白名单 + 频率限制双重安全防护 • 优化 Pjax 兼容性 • 内置 /proc 安全读取机制 • 前端脚本完全重写
v2.2.22025-04-20🐛 修复宝塔面板环境下数据读取问题 • 优化缓存命中率计算 • 新增磁盘 IO 实时速率显示
v2.2.12025-04-10🔧 修复 Pjax 切换页面后状态栏失效 • 优化移动端显示效果 • 新增服务器软件、PHP 版本等信息
v2.2.02025-04-01📊 新增缓存命中率监控 • 新增操作系统详细版本识别 • 优化网络流量统计算法
v2.1.02025-03-20🚀 首次公开发布 • 支持访客 IP/设备/浏览器获取 • 支持网络流量和磁盘 IO

📞 支持与反馈

如有问题或建议,欢迎在评论区留言。

  • 👨‍💻 博客:「留言」板块
最后修改:2026 年 05 月 08 日
钥匙你想请我喝酱香拿铁的话!