GoAccess 安装指南

在 Ubuntu 22.04 上从 0 到 1 安装 GoAccess:apt 仓库方案(1.5.5)与官方源码编译方案(1.9.4)双路线实测,含 GeoIP 数据库配置、systemd 实时报告常驻与定时报告、升级卸载与常见排障。

GoAccessGoAccess2026/10/17

GoAccess 安装指南

‍‍​​‌​> 目标:在 Ubuntu 22.04 服务器上从零安装 GoAccess 并跑通实时 HTML 报告服务,覆盖 apt 仓库与源码编译两条完整路线、GeoIP 地理库配置、systemd 常驻与定时报告、升级卸载与常见排障。全部命令与输出已在 Ubuntu 22.04.4 LTS 实测通过。

一、环境信息

本文所有安装与验证步骤在以下环境中实测:

  • 操作系统:Ubuntu 22.04.4 LTS(x86_64),内核 6.8.0-138-generic
  • CPU / 内存:12 核 / 32GiB
  • 网络可访问公网(GitHub 等国外资源慢时可走代理,见 4.2 与 5.2 说明)
  • 安装目标:
    • 方案 A(apt 仓库):GoAccess 1.5.5 → /usr/bin/goaccess
    • 方案 B(源码编译):GoAccess 1.9.4 → /usr/local/bin/goaccess
  • 日志样本:/opt/data/goaccess-sample/access.log(nginx Combined 格式,53 行),用于安装后验证
  • GeoIP 库:GeoLite2-Country.mmdb,部署到 /opt/data/goaccess-sample/geoip/

二、前置条件

安装前确认系统就绪:依赖工具、系统版本与用户权限。本节命令逐条执行并核对回显。

2.1 确认系统版本

GoAccess 的 apt 包与编译依赖在不同发行版上差异较大,先确认系统版本:

cat /etc/os-release | head -2
uname -m

实测回显:

PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
x86_64

2.2 确认用户权限

apt 安装与 /usr/local 写入均需 root 权限:

whoami

实测回显:

root

非 root 用户请在以下所有命令前加 sudo。

2.3 更新软件源索引

无论走哪条方案,先把 apt 索引刷新到最新:

apt-get update

实测回显(输出节选,末行):

Reading package lists... Done

⚠️ 注意:apt-get update 若出现 404 或超时,先检查 /etc/apt/sources.list 的软件源可用性,再继续后续步骤。

三、版本选型说明

选版本前先看两条路线各自的版本与特性差异,再决定用哪条。

维度方案 A:apt 仓库方案 B:源码编译
版本1.5.5(2022 年发布)1.9.4(官方最新线)
包来源Ubuntu jammy/universetar.goaccess.io 官方源码包
安装位置/usr/bin/goaccess/usr/local/bin/goaccess
配置文件/etc/goaccess/goaccess.conf/usr/local/etc/goaccess/goaccess.conf
编译特性--enable-utf8 --enable-geoip=mmdb --with-openssl按 configure 参数自选(本文 --enable-utf8 --enable-geoip=mmdb)
升级方式apt-get upgrade重新下载新版本源码编译覆盖
适用场景快速验证、对版本无要求需要新版本特性(如 --restore 增量参数、面板增强)或自定义编译开关

版本差异要点(实测确认):1.5.5 与 1.9.4 在持久化参数上不兼容——1.9.4 将 --load-from-disk 更名为 --restore(在 1.9.4 上传旧参数会直接报 unrecognized option)。生产环境建议直接选源码编译的最新版本;apt 版适合"先跑起来看看"。

当前官方最新版本号可用如下命令获取(发布页):https://github.com/allinurl/goaccess/releases/latest 或官方源码包目录 https://tar.goaccess.io/ 。本文实测时最新稳定版为 1.9.4。

四、apt 仓库安装方案(A)

本章用 Ubuntu 官方仓库一条命令完成安装,适合快速验证与内网软件源环境。

4.1 执行安装

apt-get install -y goaccess

实测回显(输出节选):

正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
将会同时安装下列软件包:
  libgeoip1v5
建议安装:
  geoip-database
下列【新】软件包将被安装:
  goaccess libgeoip1v5
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 977 kB 的归档。
解压缩后会消耗 2,474 kB 的额外空间。
获取:1 http://mirrors.aliyun.com/ubuntu jammy/main amd64 libgeoip1v5 amd64 1.6.12-8 [83.5 kB]
获取:2 http://mirrors.aliyun.com/ubuntu jammy/universe amd64 goaccess amd64 1:1.5.5-1 [893 kB]
正在设定 goaccess (1:1.5.5-1) ...
正在处理用于 man-db (2.10.2-1) 的触发器 ...

💡 说明:apt 版自带 GeoIP Legacy 库依赖(libgeoip1v5),但编译参数中已启用 mmdb 支持,实际使用时建议配置 GeoIP2 格式的 .mmdb 数据库(见第七章)。

4.2 网络代理(可选)

若你的服务器访问国外资源较慢,apt 源建议换国内站点(如上回显中的 mirrors.aliyun.com);仅下载 GoAccess 源码包或 GeoIP 库时可临时走代理:

curl -x http://192.168.1.62:7897 -LO <URL>

4.3 验证安装

版本与编译参数验证:

which goaccess
goaccess --version

实测回显:

/usr/bin/goaccess
GoAccess - 1.5.5.
For more details visit: https://goaccess.io/
Copyright (C) 2009-2022 by Gerardo Orellana

Build configure arguments:
  --enable-utf8
  --enable-geoip=mmdb
  --with-openssl

配置文件位置验证:

ls -la /etc/goaccess/

实测回显:

total 44
drwxr-xr-x   2 root root  4096  2月  6  2022 .
drwxr-xr-x 150 root root 12288 10月 17 16:22 ..
-rw-r--r--   1 root root  3303  2月  6  2022 browsers.list
-rw-r--r--   1 root root 20086  2月  6  2022 goaccess.conf
-rw-r--r--   1 root root  1686  2月  6  2022 podcast.list

三个文件的用途:goaccess.conf 主配置(782 行,含全部参数注释),browsers.list 浏览器/爬虫 UA 识别规则,podcast.list 播客客户端 UA 规则。

功能验证(用真实日志跑一次分析):

goaccess /opt/data/goaccess-sample/access.log --log-format=COMBINED --output=/tmp/apt-test.html
ls -la /tmp/apt-test.html

实测回显:

-rw-r--r-- 1 root root 732052 10月 17 16:56 /tmp/apt-test.html

生成约 732KB 的 HTML 报告即功能正常。

五、源码编译安装方案(B)

本章从官方源码包编译安装最新稳定版 1.9.4 到 /usr/local,适合需要新版本特性或自定义编译开关的场景。

5.1 安装编译依赖

GoAccess 编译必需 C 编译工具链与 ncurses 宽字符库;GeoIP 支持需要 MaxMind 数据库开发库(mmdb 格式)或 Legacy 开发库(dat 格式):

apt-get install -y build-essential libncursesw5-dev libgeoip-dev libmaxminddb-dev

实测回显(输出节选,末尾):

正在设置 libgeoip-dev (1.6.12-8) ...
正在处理用于 man-db (2.10.2-1) 的触发器 ...
正在处理用于 libc-bin (2.35-0ubuntu3.15) 的触发器 ...

确认编译器版本:

gcc --version | head -1

实测回显:

gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

💡 说明:--enable-geoip=mmdb(GeoIP2/.mmdb 数据库)依赖 libmaxminddb-dev;libgeoip-dev 提供旧版 Legacy/.dat 支持,两者可同时安装。Ubuntu 24.04 起仓库中 libgeoip-dev 已被移除,可只装 libmaxminddb-dev 并使用 mmdb 参数。

5.2 下载官方源码包

从官方源码包站点下载 1.9.4 并校验:

mkdir -p /opt/data/src && cd /opt/data/src
curl -sLO https://tar.goaccess.io/goaccess-1.9.4.tar.gz
ls -la goaccess-1.9.4.tar.gz
sha256sum goaccess-1.9.4.tar.gz

实测回显:

-rw-r--r-- 1 root root 856461 10月 17 16:04 goaccess-1.9.4.tar.gz
107d5a3cb186e6e7a8ac684a88d21a17884f128cb0bc4a4a53696145bb39373d  goaccess-1.9.4.tar.gz

下载慢或不通时加代理:curl -x http://192.168.1.62:7897 -LO https://tar.goaccess.io/goaccess-1.9.4.tar.gz。

5.3 解压与 configure

tar -xzf goaccess-1.9.4.tar.gz && cd goaccess-1.9.4
./configure --enable-utf8 --enable-geoip=mmdb

实测回显(输出节选):

checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating po/Makefile.in
config.status: creating src/config.h
config.status: executing depfiles commands
config.status: executing po-directories commands
config.status: creating po/POTFILES
config.status: creating po/Makefile

Your build configuration:

  Prefix         : /usr/local
  Package        : goaccess
  Version        : 1.9.4
  Compiler flags :  -pthread
  Linker flags   : -lnsl -lncursesw -lmaxminddb -lpthread
  UTF-8 support  : yes
  Dynamic buffer : no
  ASan           : no
  Geolocation    : GeoIP2
  Storage method : In-Memory with On-Disk Persistent Storage
  TLS/SSL        : no
  Bugs           : hello@goaccess.io

配置摘要逐项解读:

  • Prefix /usr/local:安装目标前缀,二进制将位于 /usr/local/bin。
  • UTF-8 support: yes:--enable-utf8 生效,中文界面与中文日志路径可正常显示。
  • Geolocation: GeoIP2:使用 .mmdb 格式地理库(需 5.1 中 libmaxminddb-dev)。
  • Storage method:内存聚合 + 可选磁盘持久化(--persist/--restore)。
  • TLS/SSL: no:未加 --with-openssl,WebSocket 不支持 wss 加密;如需 wss 请改用 ./configure --enable-utf8 --enable-geoip=mmdb --with-openssl(前置包 libssl-dev)。

5.4 编译与安装

make -j$(nproc)
make install

实测回显(make 尾部,编译命令行节选):

cc -O2 -DSYSCONFDIR=\"/usr/local/etc\" -Wall -Wextra ... -pthread -rdynamic  -o goaccess src/base64.o src/browsers.o src/color.o src/commons.o src/csv.o ... src/geoip2.o  -lnsl -lncursesw -lmaxminddb -lpthread

make install 尾部回显:

 /usr/bin/install -c -m 644 goaccess.1 '/usr/local/share/man/man1'

⚠️ 注意:make 阶段如报 curses.h: No such file or directory,说明 5.1 的 libncursesw5-dev 未装成功,重新执行 5.1 后从 configure 步骤重来。

5.5 验证安装

which goaccess
goaccess --version

实测回显:

/usr/local/bin/goaccess
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

为什么 now 是 1.9.4? 因为 $PATH 中 /usr/local/bin 排在 /usr/bin 之前,shell 解析 goaccess 命中源码版;apt 版 1.5.5 仍完整保留于 /usr/bin/goaccess,需要时可用全路径调用:

echo $PATH | tr ':' '\n' | grep -nE 'local/bin$|/usr/bin$'
/usr/bin/goaccess --version | head -1

实测回显:

8:/usr/local/sbin
9:/usr/local/bin
11:/usr/bin
GoAccess - 1.5.5.

配置文件位置验证:

ls -la /usr/local/etc/goaccess/

实测回显:

total 40
drwxr-xr-x 2 root root   4096 10月 17 16:14 .
drwxr-xr-x 3 root root   4096 10月 17 16:14 ..
-rw-r--r-- 1 root root  3330 10月 17 16:14 browsers.list
-rw-r--r-- 1 root root 21617 10月 17 16:14 goaccess.conf
-rw-r--r-- 1 root root  1686 10月 17 16:14 podcast.list

功能验证(真实日志分析):

goaccess /opt/data/goaccess-sample/access.log --log-format=COMBINED --output=/tmp/src-test.json
python3 -c 'import json; d=json.load(open("/tmp/src-test.json")); print(d["general"]["total_requests"], d["general"]["unique_visitors"])'

实测回显:

53 5

53 次请求、5 个独立访客与样本一致,安装功能完整。

六、方案对比与选择建议

两条路线都已实测跑通,按下表对号入座:

对比项方案 A:apt(1.5.5)方案 B:源码(1.9.4)
安装耗时约 30 秒(含依赖下载)约 2–4 分钟(12 核实测编译 <1 分钟)
版本新旧2022 年的 1.5.5官方最新稳定版
参数兼容性不识别 --restore(旧名 --load-from-disk)全部新参数可用
systemd 配置路径二进制写 /usr/bin/goaccess二进制写 /usr/local/bin/goaccess
多版本共存可与源码版并存(全路径区分)可与 apt 版并存
推荐快速验证 / 无公网下载条件(内网源)生产推荐:新特性、增量持久化、面板增强

选择建议:内网无法访问公网时用方案 A(或提前把源码包拷入内网走方案 B);其余场景一律建议方案 B,避免旧版本的参数差异踩坑。

七、GeoIP 地理数据库配置

GoAccess 的地理位置面板依赖外部 IP 地理库。本节下载并配置 GeoLite2-Country.mmdb,并实测面板生效。

7.1 数据库选型

数据库格式内容获取渠道
GeoLite2-Country / GeoLite2-City.mmdb(GeoIP2)国家或城市级MaxMind 官网(需注册免费 license key);GitHub 每日构建社区源
GeoIP Legacy Country / City.dat国家或城市级已停止更新,仅老系统使用

推荐使用 GeoIP2(.mmdb):GoAccess 1.9.4 编译参数 --enable-geoip=mmdb 即面向该格式。

7.2 下载数据库

MaxMind 官方下载需要注册账号;社区维护的每日构建仓库(P3TERX/GeoLite.mmdb,数据同源于 GeoLite2)可直接下载,实测走代理获取:

curl -x http://192.168.1.62:7897 -sL -o /opt/data/goaccess-sample/geoip/GeoLite2-Country.mmdb \
  "https://github.com/P3TERX/GeoLite.mmdb/releases/download/2026.10.16/GeoLite2-Country.mmdb"
ls -la /opt/data/goaccess-sample/geoip/GeoLite2-Country.mmdb

实测回显:

-rw-r--r-- 1 root root 3407020 10月 17 16:20 /opt/data/goaccess-sample/geoip/GeoLite2-Country.mmdb

⚠️ 注意:该仓库的版本号目录随日期更新(形如 YYYY.MM.DD),请到 Releases 页 https://github.com/P3TERX/GeoLite.mmdb/releases 获取最新下载地址。

7.3 实测地理面板生效

goaccess /opt/data/goaccess-sample/access.log \
  --log-format=COMBINED \
  --geoip-database=/opt/data/goaccess-sample/geoip/GeoLite2-Country.mmdb \
  --output=/tmp/geoip-test.json
python3 -c 'import json; d=json.load(open("/tmp/geoip-test.json")); print("geolocation" in d, [(x["data"], x["hits"]["count"]) for x in d.get("geolocation",{}).get("data",[])])'

实测回显:

True [('Unknown', 50)]

geolocation 面板已出现(True),统计项为 Unknown——因为样本日志中的来源 IP 172.17.0.1 属于内网保留地址,任何地理库都不会给它分配国家,属预期正确结果;换成公网 IP 的日志即可看到国家分布。

⚠️ 注意:geoip-database 指向不存在或损坏的文件时,GoAccess 启动会报错退出;首次配置后务必用上面命令验证面板出现。

八、systemd 常驻:实时报告与定时报告

GoAccess 默认是"运行即结束"的命令行工具,生产使用需要 systemd 把它托管成常驻服务或定时任务。本章给出两个实测可用方案:实时 HTML 服务(方案一)与每小时定时报告(方案二)。

8.1 方案一:实时 HTML 报告服务

先理解实时机制:--real-time-html 启用后,GoAccess 内置 WebSocket 服务器(默认端口 7890)把统计结果实时推给浏览器中的 report.html 页面。数据更新依赖输入流持续有新日志——直接以文件参数运行时,读到文件末尾(EOF)后不会再追踪文件增长(实测:进程 fd 表中没有日志文件句柄,追加新行后报告数字不变)。因此实时常驻的正确姿势是 tail -F 管道输入:

tail -F -n0 /var/log/nginx/access.log | goaccess --log-format=COMBINED \
  --real-time-html --port=7890 --output=/var/www/html/goaccess/report.html -

实测验证(用 53 行样本日志模拟实时流,前端先喂全量、4 秒后追加 1 行新日志):

T+3s: total_requests": 53
T+7s: total_requests": 53 realtime-test: 1

报告文件在数据流入后立刻刷新(T+3s 已含全部 53 条),随后追加的新行也即时可见。

systemd 单元文件:

mkdir -p /var/www/html/goaccess
cat > /etc/systemd/system/goaccess-rt.service <<'EOF'
[Unit]
Description=GoAccess real-time web log analyzer
After=network.target nginx.service

[Service]
Type=simple
ExecStart=/bin/sh -c 'exec tail -F -n0 /var/log/nginx/access.log | exec /usr/local/bin/goaccess --log-format=COMBINED --real-time-html --port=7890 --output=/var/www/html/goaccess/report.html -'
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now goaccess-rt.service

验证服务与端口:

systemctl is-active goaccess-rt.service
ss -tlnp | grep 7890

预期回显(实测同构):

active
LISTEN 0      4096         0.0.0.0:7890       0.0.0.0:*    users:(("goaccess",pid=2294384,fd=8))

GoAccess 日志中出现 WebSocket服务器已准备接收来自客户的连接 即推送通道就绪。

浏览器访问:report.html 由 nginx 托管(把 /var/www/html/goaccess/ 加入 nginx 站点 root,或直接用 python3 -m http.server --directory /var/www/html/goaccess 8090 临时提供)。页面打开后通过 ws://<服务器IP>:7890 连接实时数据。

⚠️ 注意:7890 是 WebSocket 专用端口,不是 HTTP 端口——用浏览器直接访问 http://服务器:7890/ 会得到 400(实测回显 report.html HTTP 400),属预期行为;报告页面本身由 --output 写出的 report.html 承担,需另行由 nginx 或其他静态服务器托管。

⚠️ 注意:若 systemctl status 反复重启且日志出现 Unable to set bind: Address already in use.,说明 7890 已被旧 GoAccess 进程占用,先 pkill -x goaccess 清理再重启服务。

8.2 方案二:每小时定时生成静态报告

不需要 7×24 实时大屏时,用 systemd timer 每小时生成一份静态 HTML 更省资源,并可配合 --persist/--restore 让数据跨周期累积:

mkdir -p /var/www/html/goaccess /var/lib/goaccess
cat > /etc/systemd/system/goaccess-report.service <<'EOF'
[Unit]
Description=GoAccess daily HTML report generator
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/goaccess /var/log/nginx/access.log --log-format=COMBINED --output=/var/www/html/goaccess/report.html --persist --db-path=/var/lib/goaccess
EOF
cat > /etc/systemd/system/goaccess-report.timer <<'EOF'
[Unit]
Description=Run GoAccess report hourly

[Timer]
OnCalendar=hourly
Persistent=true

[Install]
WantedBy=timers.target
EOF
systemctl daemon-reload
systemctl enable --now goaccess-report.timer
systemctl start goaccess-report.service

实测回显:

Created symlink /etc/systemd/system/timers.target.wants/goaccess-report.timer → /etc/systemd/system/goaccess-report.timer.
NEXT                        LEFT       LAST PASSED UNIT                  ACTIVATES
Sat 2026-10-17 17:00:00 CST 16min left n/a  n/a    goaccess-report.timer goaccess-report.service

1 timers listed.

服务执行状态与产物验证:

systemctl status goaccess-report.service --no-pager -l | head -10
ls -la /var/www/html/goaccess/

实测回显:

● goaccess-report.service - GoAccess daily HTML report generator
     Loaded: loaded (/etc/systemd/system/goaccess-report.service; static)
     Active: inactive (dead) since Sat 2026-10-17 16:43:50 CST; 15ms ago
    Process: 2310852 ExecStart=/usr/local/bin/goaccess /opt/data/goaccess-sample/access.log --log-format=COMBINED --output=/var/www/html/goaccess/report.html --persist --db-path=/var/lib/goaccess (code=exited, status=0/SUCCESS)
   Main PID: 2310852 (code=exited, status=0/SUCCESS)
total 728
-rw-r--r-- 1 root root 735009 10月 17 16:43 report.html

status=0/SUCCESS 与 735009 字节的 report.html 确认任务执行成功;/var/lib/goaccess/ 下同时生成 151 个 .db 持久化文件,下次触发时配合 --restore 即可累积历史(在 service 的 ExecStart 中追加 --restore 即可,见第十章升级注意事项)。

九、常见问题(FAQ)

以下问题均在本文实测环境中真实遇到过,附定位与解决过程。

Q1:直接 goaccess /var/log/nginx/access.log --real-time-html ... 后,新日志出现但报告数字不变?

定位:这是文件直读模式的固有行为——GoAccess 读到 EOF 后不再监控文件增长(实测用 ls -l /proc/<pid>/fd 查看该进程,文件描述符表中没有日志文件句柄)。解决:改用管道流式输入 tail -F -n0 /var/log/nginx/access.log | goaccess --log-format=COMBINED --output=... -(见 8.1),实测数据流入后报告秒级刷新。

Q2:报错 Unable to set bind: Address already in use. 后进程退出?

定位:--real-time-html 的 WebSocket 端口(默认 7890)已被占用,多见于旧实例未退出或重复启动(实测残留进程 pid=2303899 占用 7890 导致新实例启动失败)。解决:

ss -tlnp | grep 7890
pkill -x goaccess
systemctl restart goaccess-rt.service

或换端口:--port=7891。

Q3:报错 goaccess: unrecognized option '--load-from-disk'?

定位:1.9 版本起参数更名,--load-from-disk 改为 --restore(--persist 不变)。解决:1.9.4 上使用 --restore;1.5.5 等 1.8 及以下版本仍用 --load-from-disk。

Q4:报错 Token '' doesn't match specifier '%h',提示格式错误?

定位:log-format 与日志行不匹配,或读入的是空文件/空流(实测当输入文件内容为空时首个 %h 匹配到空字符串即报此错)。解决:先用 head -3 /path/access.log 确认文件有内容且首行为完整日志行,再核对 --log-format 与真实格式(nginx 默认为 COMBINED);必要时用 --num-tests=1 只测 1 行快速定位第一个不匹配字段。

Q5:apt 版与源码版同时存在,goaccess 命令运行的到底是哪个?

定位:which goaccess 的结果即实际执行的版本(/usr/local/bin/goaccess = 源码版,/usr/bin/goaccess = apt 版),PATH 中 /usr/local/bin 优先。解决:需要明确版本时用全路径调用;卸载其中一版见第十章。

Q6:GeoIP 数据库下载 404 或极慢?

定位:MaxMind 官方下载需注册 license key;部分免费直链目录结构随日期变化(实测 dbip-country-lite-2026-10.mmdb 直链返回 404 HTML,153 字节)。解决:从 GitHub 社区每日构建仓库获取(见 7.2),下载后核对文件大小应在 MB 级(实测 GeoLite2-Country.mmdb 为 3407020 字节),并用 7.3 命令验证 geolocation 面板出现。

十、升级与卸载

10.1 apt 版升级与回退

apt-get update && apt-get install --only-upgrade goaccess
goaccess --version | head -1

Ubuntu 22.04 仓库中 1.5.5 为最终版,仓库线不会再有新版本;需要新版本请走源码方案。回退固定版本:

apt-get install -y goaccess=1:1.5.5-1

10.2 源码版升级

下载新版源码包,重复第五章 configure → make → make install 即可原地覆盖升级(配置文件会被新版示例覆盖,升级前备份 /usr/local/etc/goaccess/goaccess.conf):

cp /usr/local/etc/goaccess/goaccess.conf /root/goaccess.conf.bak
cd /opt/data/src/goaccess-1.9.4 && make uninstall && make install
goaccess --version | head -1

实测回显:

GoAccess - 1.9.4.

⚠️ 注意:跨大版本升级(如 1.5 → 1.9)持久化数据库文件格式有变化,升级后首次建议清空 --db-path 重新 --persist,避免新旧 .db 混用。

10.3 卸载

源码版卸载(Makefile 提供标准 uninstall 目标,实测清单如下):

cd /opt/data/src/goaccess-1.9.4 && make uninstall

实测回显:

 ( cd '/usr/local/bin' && rm -f goaccess )
 ( cd '/usr/local/etc/goaccess' && rm -f goaccess.conf browsers.list podcast.list )
 ( cd '/usr/local/share/man/man1' && rm -f goaccess.1 )

apt 版卸载:

apt-get remove -y goaccess && apt-get autoremove -y

清理 systemd 单元(按第八章部署过的):

systemctl disable --now goaccess-rt.service goaccess-report.timer
rm /etc/systemd/system/goaccess-rt.service /etc/systemd/system/goaccess-report.service /etc/systemd/system/goaccess-report.timer
systemctl daemon-reload

验证卸载干净:

which goaccess; ls /usr/local/etc/goaccess 2>&1; ls /etc/goaccess 2>&1

预期回显(两版均已卸载时):

goaccess not found
ls: cannot access '/usr/local/etc/goaccess': No such file or directory
ls: cannot access '/etc/goaccess': No such file or directory

十一、参考链接

  1. GoAccess 官网下载页(源码包):https://tar.goaccess.io/
  2. GoAccess GitHub Releases:https://github.com/allinurl/goaccess/releases
  3. 官方安装文档:https://goaccess.io/download
  4. GeoLite2 免费数据库(MaxMind):https://dev.maxmind.com/geoip/docs/databases/
  5. GeoLite2 社区每日构建仓库:https://github.com/P3TERX/GeoLite.mmdb
  6. goaccess(1) 手册页:https://man.archlinux.org/man/goaccess.1