前言

——在数字营销时代,网站流量统计是运营者不可或缺的眼睛。然而,随着全球数据隐私法规(如GDPR、CCPA)的收紧和对科技巨头的信任滑坡,直接将数据交给Google Analytics 等第三方平台变得愈发令人担忧。你是否想过完全掌控自己的分析数据?Matomo 作为世界领先的开源网站分析工具,提供了完美的Google Analytics替代方案。本文将为你提供一份从零到一的Matomo教程,涵盖部署、配置到深度使用的完整指南,帮助你搭建一个功能强大、隐私合规的自托管网站数据分析平台。

之前的时间里,博客的数据统计都是使用的 Google Analytics。

后来换成了 Umami。Umami 简单易用,简洁高速,确实是个好统计。不过,Umami 的功能有点少——它有点轻了。从我选择 WordPress 开始我就发现了,其实我更喜欢臃肿但功能丰富、拓展性强的程序——尽管一些功能我并不会经常用到。

中国有句古话:我可以不用,但我不能没有。那为什么不试试 Matomo 呢?Matomo 提供了免费开源的自部署方案。所以我准备自部署一个玩玩。

——反正也不会有啥损失,不是吗?

# 本文的安装教程部分默认你已拥有一定的网站搭建基础

什么是 Matomo

什么是开源、自托管的网站分析工具

Matomo(在毛利语中意为“诚实”)是一款功能强大的开源网站分析软件。与百度统计Google Analytics 的最大区别在于,Matomo 可以自托管在你自己的服务器上。这意味着所有关于你访客的网站数据都保存在你自己的数据库中,完全由你控制和管理,无需担心第三方将数据用于其他目的或无法合规的风险。

为何它是更好的选择

  • 数据所有权:你的数据100%属于你,这是最根本的优势。
  • 功能全面性:从基础的流量分析到转化跟踪、热图、会话录制、A/B测试,Matomo 的功能毫不逊色于商业产品。
  • 隐私合规性:内置了如IP匿名化、cookie同意管理等功能,轻松满足GDPR等法规要求,是注重隐私保护的网站的理想选择。

部署 Matomo

本文仅介绍 LNMP 环境下的部署。该程序同样支持 Docker 部署。

Matomo 支持 WP 插件形式安装(如果你还没拥有一个 WP 可参考 这篇文章),以及完整的自部署方案。本文属后者。

您的环境需要满足以下要求:

  • 拥有一个 Web 服务器(如 Nginx 等)
  • Matomo 是 PHP 程序,4.x 版本要求 PHP ver >== 7.2.5——我使用 8.3 版本也无任何问题。
  • 需要 MySQL(或 MariaDB)
  • Matomo可以在任何操作系统上运行,如Linux(Ubuntu、RedHat、CentOS、Raspberry Pi OS等)、Windows、macOS Server或FreeBSD。

简单的来说:如果你的服务器是 LNMP,并且版本并不是过于老旧,就可以直接从 Matomo 官方下载页 下载站点文件并上传到你喜欢的目录。这样就算完成了。

如果你使用宝塔面板,可以直接新建 PHP 网站并创建数据库,然后上传站点文件完成部署。

初始化 Matomo

直接访问 Matomo 所在目录,然后会进入初始化页面。

这里有一个环境检查,不必多说。如果有报错自行修复即可(警告内容一般不需要管——秉着只要不是 ERROR 就没事,ERROR 不影响使用就不管的原则()

然后就是数据库连接还有基础设置了,同样不必多说。

页面展示

主页(报表页面)的小工具均可自定义。

体验

先说说优点:

  • Matomo 支持实时的访客展示,可以即时地看见谁刚刚访问了你的站点。
  • 可以设置转换规则,触发转换规则的访客能够被识别,进而可以得到站点的转换率,例如访客点击某个满足条件的站外链接(可选包含、完全匹配、正则)这对于研究转换率、广告投放位置很有帮助(你留意到这篇文章顶部的广告了吗?(小声))
  • 为了符合欧盟的隐私保护标准,Matomo 默认不会记录完整的访客 IP,而是隐藏末尾两段。不过如果你想,也可以完整记录 IP。
  • 小工具可以随时转换为直方图、圆饼图、标签云等形式,美观又易读。
  • 此外,还支持访客地图、行为等数据分析,这里不一一赘述

然后是缺点:

说实话,如果想在这种全能程序身上挑出什么功能缺失的毛病,是几乎不可能的。

目前体验下来,唯一的缺点就是——臃肿。如果你对你站点速度有着较为苛刻的要求,可能 Umami 将会是一个更加明智的选择。

推荐的设置

这些设置不是必要的,但我推荐这样做,可以提升安全性及性能。

自动归档:让 Matomo 不再龟速

Matomo 的所谓“臃肿”主要来自于随着时间推移不断增长的原始数据表。如果不加处理,查询速度会变慢。Matomo 提供了强大的“数据自动归档”机制来根治此问题。

对于中高流量的网站,建议禁用 Matomo 浏览器触发归档。最好设置定时任务,每小时处理一次 Matomo 数据。

归档任务会将原始数据预先处理并聚合生成精简的报告数据。之后,查询将直接读取这些“摘要”,速度极快,从而显著降低数据库负载。(默认是每次浏览器访问触发归档)

设置过程:

  1. Matomo 后台,进入“系统” -> “通用设置”。
  2. 在归档设置的,将“在浏览器中查看报告时进行归档”设为否。
  3. 设置 Crontab:
nano /etc/cron.d/matomo-archive
# 新建一个定时计划

MAILTO="youremail@example.com"
5 * * * * www-data /usr/bin/php /path/to/matomo/console core:archive --url=http://example.org/matomo/ > /home/example/matomo-archive.log
# 定期触发归档
# 请确保自己所填的目录正确,否则无法触发归档
# /home/example/matomo-archive.log是归档日志输出路径,其中包含归档耗时等有用信息。所以请将这个目录设置到 web 服务器之外的目录防止敏感信息泄漏。

随后执行如下命令检验效果,若报错则说明设置失败:
su www-data -s /bin/bash -c "/usr/bin/php /path/to/matomo/console core:archive --url=http://example.org/matomo/"

# 若提示权限问题,则请将 /tmp 目录权限设置为 777
# 归档时间随原始数据大小而变。若您发现您的大流量站点归档需要几个小时,那么就可以设置每 6 小时归档一次。依此类推。

限制目录的访问

Matomo 需要限制一些敏感目录的访问预防攻击。

添加如下配置:

    # ===== Matomo =====
    # 禁止访问特定文件
    location = /config/config.ini.php {
        deny all;
        return 404;
    }
    location = /tmp/cache/tracker/matomocache_general.php {
        deny all;
        return 404;
    }
    location = /lang/en.json {
        deny all;
        return 404;
    }

    # 禁止访问特定目录
    location ~ ^/tmp/ {
        deny all;
        return 404;
    }
    # ===== Matomo =====

强制 SSL 连接

从 PHP 语句层面强制 SSL 连接以提升安全性。

# 编辑 /config/config.ini.php 并在 [General] 块添加如下语句:
force_ssl = 1

尾声

到这里也没啥好写的了。

Matomo 是一个隐私合规性、数据全面性都很不错的统计程序。但到底哪个适合你,依旧需要你自己亲自体验一番才有定论。

版权申明