宝塔面板是一款广受欢迎的服务器运维面板,以其简单易用著称。然而,其内置的网站统计功能属于付费项目。而 GoAccess 是一款使用 C 语言编写的免费开源 Web 日志分析工具,能够提供包括搜索引擎爬虫、独立访客、访问文件、来源网站、404 错误页面、访客操作系统、浏览器类型等在内的丰富统计信息。本文将介绍如何在宝塔面板中启用 GoAccess 并配置中文 Web 日志分析功能。
配置系统支持中文环境(以 Debian 为例)
首先更新系统并安装 locales 包,用于生成和配置系统区域设置:
apt update
apt install -y locales
locale-gen zh_CN.UTF-8
dpkg-reconfigure locales
在 dpkg-reconfigure locales 界面中:

- 使用空格键勾选
zh_CN.UTF-8 UTF-8 - 确认后,将系统默认语言设置为
zh_CN.UTF-8
下载并安装 GoAccess
本文以 Debian 系统安装 GoAccess v1.9.4 为例(请前往官方网站查看最新版本号,如需安装其他版本,只需替换下方命令中的版本号):
apt install build-essential pkg-config libncursesw5-dev libssl-dev gettext libmaxminddb-dev -y
cd /www/server
wget https://tar.goaccess.io/goaccess-1.9.4.tar.gz
tar -xzvf goaccess-1.9.4.tar.gz
cd goaccess-1.9.4
./configure --enable-utf8 --enable-geoip=mmdb --with-openssl --enable-gettext
make
make install
安装完成后,运行 goaccess --version 命令,若显示如下类似信息,则说明安装成功:
GoAccess - 1.9.4.
For more details visit: https://goaccess.io/
Copyright (C) 2009-2024 by Gerardo Orellana
Build configure arguments:
--enable-utf8
--enable-geoip=mmdb
--with-openssl
下载免费 IP 地理位置数据库:GeoLite2-Country.mmdb
创建存储 GeoIP 数据的目录并下载数据库:
mkdir -p /usr/share/GeoIP/
cd /usr/share/GeoIP/
wget -O GeoLite2-City.mmdb https://git.io/GeoLite2-City.mmdb
若国内主机下载失败,可从此处下载 2025-10-19 版本(提取码:zzb9),然后上传至 /usr/share/GeoIP 目录,使用以下命令解压:
sudo unzip GeoLite2-City.zip -d /usr/share/GeoIP
在宝塔面板中添加日志切割计划任务
宝塔面板中,网站的 Web 日志默认存放在 /www/wwwlogs 目录下,文件名格式为“网站名.log”。为避免单个日志文件过大,建议设置每日自动切割日志:
进入宝塔面板 → 计划任务 → 添加计划任务,设置日志切割任务。

切割后的日志默认保存在 /www/wwwlogs/history_backups/站点名称 目录中。为避免 GoAccess 分析日志时占用过多系统资源,建议普通站点保留最新的 180 份日志,访问量较大的站点可酌情减少保留数量。
将 Web 日志输出为 HTML 报告
在 /www/wwwroot/ 目录下创建 output-goaccess-report.sh 文件,内容如下:
#!/bin/bash
# 自动生成 GoAccess Nginx 日志分析报告(HTML)
# 作者:站长帮
# 已测试环境:Debian + Nginx
# 设置中文环境
export LANGUAGE="zh_CN:zh"
# -------------------------------
# 配置区
# -------------------------------
# 输出的日志分析网页标题
HTML_TITLE="站点访问日志分析 - zhanzhangb.cn"
# 当前日志路径
CURRENT_LOG="/www/wwwlogs/zhanzhangb.cn.log"
# 历史日志目录(包含 .gz)
HISTORY_DIR="/www/wwwlogs/history_backups/zhanzhangb.cn"
# 输出 HTML 报告路径
OUTPUT_HTML="/www/wwwroot/zhanzhangb.cn/goaccess/index.html"
# 临时合并日志文件
TMP_LOG="/tmp/goaccess_merged.log"
# GoAccess 日志格式 (常见 Nginx 默认日志格式)
LOG_FORMAT='%h %^[%d:%t %^] "%r" %s %b "%R" "%u"'
DATE_FORMAT='%d/%b/%Y'
TIME_FORMAT='%T'
# -------------------------------
# 执行逻辑
# -------------------------------
echo "[$(date '+%F %T')] 开始生成 GoAccess 报告..."
# 清理临时文件
rm -f "$TMP_LOG"
# 创建输出目录(如果不存在)
OUTPUT_DIR=$(dirname "$OUTPUT_HTML")
if [ ! -d "$OUTPUT_DIR" ]; then
echo "[$(date '+%F %T')] 创建输出目录:$OUTPUT_DIR"
mkdir -p "$OUTPUT_DIR"
# 检查目录是否创建成功
if [ $? -ne 0 ]; then
echo "[$(date '+%F %T')] 错误:无法创建输出目录 $OUTPUT_DIR"
exit 1
fi
fi
# 合并当前日志
if [ -f "$CURRENT_LOG" ]; then
cat "$CURRENT_LOG" >> "$TMP_LOG"
fi
# 解压并合并历史日志(最近几天)
find "$HISTORY_DIR" -type f -name "*.log.gz" -exec zcat {} \; >> "$TMP_LOG"
# 生成 HTML 报告
goaccess "$TMP_LOG" \
--log-format="$LOG_FORMAT" \
--date-format="$DATE_FORMAT" \
--time-format="$TIME_FORMAT" \
--geoip-database /usr/share/GeoIP/GeoLite2-City.mmdb \
--html-report-title="$HTML_TITLE" \
--agent-list \
-o "$OUTPUT_HTML" \
--no-progress
# 检查输出文件是否生成成功
if [ -f "$OUTPUT_HTML" ]; then
echo "[$(date '+%F %T')] 报告已生成:$OUTPUT_HTML"
else
echo "[$(date '+%F %T')] 报告生成失败,请检查日志格式或 GoAccess 提示。"
fi
# 清理临时文件
rm -f "$TMP_LOG"
请根据实际情况修改“配置区”中的以下参数:
HTML_TITLE:生成的 HTML 报告标题CURRENT_LOG:当前日志文件路径,请确认文件是否存在HISTORY_DIR:历史日志目录,请确认路径是否与宝塔面板中的站点名称对应OUTPUT_HTML:输出 HTML 报告的完整路径,例如/www/wwwroot/zhanzhangb.cn/goaccess/index.html,之后可通过绑定域名访问报告,如:zhanzhangb.cn/goaccess/index.html
执行以下命令生成 HTML 报告:
bash /www/wwwroot/output-goaccess-report.sh
可通过宝塔面板的计划任务设定每天自动运行,这样每天都能查看到最新的日志分析报告。

查看 GoAccess 日志分析器及安全设置
安全设置
本教程的示例中将 HTML 文件保存在网站的 goaccess 子目录,意味着所有人均可通过网站的域名查看日志分析,所以应该设置访问权限,以免泄露敏感内容。
宝塔面板 > 网站 > 设置 > 访问限制 > 添加加密访问:

加密访问的路径注意不要输错了,名称、用户名和密码可以自由设置。
查看 HTML 界面的 GoAccess 日志分析器
根据本教程示例生成的日志分析页面 URL :
- Web 日志分析报告 URL:https://www.网站域名.cn/goaccess/index-old.html



GoAccess 输出 HTML 分析数据的更多参数请查阅:帮助文档。
