Matomo
文章目录
- Matomo
- 前言
- 一、环境准备
- 1. 整体安装流程
- 2.安装PHP 7.3.30
- 3.nginx配置
- 4.安装matomo
- 4.1 访问安装页面 http://192.168.10.45:8088/index.php
- 4.2 连接数据库
- 4.3 设置管理员账号
- 4.4 生成js跟踪代码
- 4.5 安装完成
- 4.6 警告修改
- 4.7 刷新页面,就可以看到登陆页面
- 二、Matomo使用
- 1. JS代码跟踪
- 1.1 获取生成js
- 1.2 网站粘贴js代码
- 1.3 访问后查看报表
- 1.4 js方法封装
- 1.5 测试代码
- 1.6 报表
- 2. IMG跟踪
- 使用img标签追踪
- img标签追踪链接
- 3. HTTP API 跟踪
- ==注意:必填参数==
- api测试
- 4.HTTP API 获取报告
- 4.1 创建身份验证token
- 身份验证
- 4.2 拼接查询参数
- 4.3 发起请求
Matomo
: 一款开源的网站数据分析统计平台,以前称为 `Piwik,可以让您轻松地从访问者那里获得您想要的信息。例如查看您的网站访问者来自何处、正在查看哪些页面、单击了哪些链接以及其他各种有用的信息。可以用于跟踪、分析您的网站的流量,同时充分保障数据安全性、隐私性,
提供了丰富的报告和实时数据分析功能,并提供了一套完整的隐私保护措施,确保用户数据安全。
官网传送门:matomo
前言
本文是为了在linux
系统上安装matomo
,并使用它完成页面跟踪
与统计数据获取
。
一、环境准备
1. 整体安装流程
- PHP 7.2.5 或者以上的版本
- 安装php扩展:pdo 和pdo_mysql
- MySQL 5.5或者以上的版本
- nginx配置
- 下载安装matomo 4.15.1
2.安装PHP 7.3.30
-
1.安装epel
#yum list installed | grep php #查看已安装的PHP, #查到后rpm -e 卸载 #yum repolist all | grep php yum install epel-release -y
-
2.安装REMI源:
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
-
3.查看可以安装的PHP版本:
yum repolist all | grep php
-
4.安装管理工具
yum install yum-utils
-
5.设置默认安装的版本
yum-config-manager --enable remi-php73
-
6.安装php
yum install php
-
7.查看php安装版本
php -v
-
8.查看哪些可以安装的PHP扩展
yum search php74-php
-
9.安装php拓展
yum install php74-php-bcmath php74-php-gd php74-php-pdo php74-php-mbstring php74-php-cli php74-php-fpm php74-php-mysqlnd php74-php-simplexml php74-php-develyum install php php-curl php-gd php-cli mysql-server php-mysql php-xml php-mbstring php-fpm
-
10.运行php-fpm
修改
/etc/php-fpm.d/www.conf
文件启动fpm程序
systemctl start php-fpm.service
#启动 php-fpm systemctl start php-fpm.service #停止 php-fpm systemctl stop php-fpm.service #重启 php-fpm systemctl reload php-fpm.service
-
11.查看php扩展
php -m
3.nginx配置
matomo的安装包是通过php的网页安装,但php直接访问会被当成普通文件直接下载,不会被编译,
所以需要在nginx中配置
php-fpm
解释器
-
nginx.conf文件配置
user nginx nginx; #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 8088;server_name 192.168.10.45;charset utf-8;root /matomo/matomo;#location / {# try_files $uri $uri/ /index.php?$query_string;#}location / {index index.php index.html index.htm;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}}
重启nginx nginx -s reload
4.安装matomo
# 解压matomo压缩包
unzip matomo-latest.zip -d ./#给解压的安装包赋权限
chown -R nginx:nginx /matomo
chown -R 777 /matomo/*
注:如果出现 nginx No input file specified
错误,检查nginx错误日志如有 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
,尝试关闭selinux解决:``setenforce 0`。
安全增强型Linux(SELinux)是一个Linux内核的功能,它提供支持访问控制的安全政策保护机制。记录操作如何关闭SELinux,并且避免系统无法启动的问题。
执行命令:
setenforce 0临时关闭SELinux
-
4.1 访问安装页面 http://192.168.10.45:8088/index.php
-
4.2 连接数据库
-
4.3 设置管理员账号
-
4.4 生成js跟踪代码
<!-- Matomo --> <script>var _paq = window._paq = window._paq || [];/* tracker methods like "setCustomDimension" should be called before "trackPageView" */_paq.push(['trackPageView']);_paq.push(['enableLinkTracking']);(function() {var u="//192.168.10.45/";_paq.push(['setTrackerUrl', u+'matomo.php']);_paq.push(['setSiteId', '1']);var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);})(); </script> <!-- End Matomo Code -->
-
4.5 安装完成
-
4.6 警告修改
修改
config.ini.php
找到
trusted_hosts[] = "192.168.10.45"
,增加端口,改为trusted_hosts[] = "192.168.10.45:8088"
另外还需要再增加一行
enable_trusted_host_check=0
,用于跳过受信任检测,否则反代之后登录可能会失败 -
4.7 刷新页面,就可以看到登陆页面
二、Matomo使用
1. JS代码跟踪
-
1.1 获取生成js
-
1.2 网站粘贴js代码
-
1.3 访问后查看报表
-
1.4 js方法封装
官方api参数:https://developer.matomo.org/guides/tracking-javascript-guide
// https://developer.matomo.org/guides/tracking-javascript-guide/** 页面地址信息上报 */ const setCustomUrl = (url) => {window._paq.push(['setCustomUrl', `${url}`]) }/** 页面标题信息上报 */ const trackPageView = (title) => {window._paq.push(['trackPageView', `${title}`]) }/** 用户信息userId上报 */ const setUserId = (userId) => {window._paq.push(['setUserId', `${userId}`])window._paq.push(['trackPageView']) }/** 重置userId,这里多次调用trackAllContentImpressions是为了在退出登录的时候重置调userId,并在下一次登录时重新生成一条最新的记录 */ const resetUserId = () => {// UserID passed to Matomo (see https://developer.matomo.org/guides/tracking-javascript-guide#user-id)window._paq.push(['resetUserId'])window._paq.push(['trackAllContentImpressions', 'new_visit=1'])window._paq.push(['trackPageView'])window._paq.push(['trackAllContentImpressions']) }/*** 点击外网地址* @param url*/ const setDomains = (url) => {_paq(['setDomains', [url]]);_paq.push(['trackPageView']); }/*** 行为埋点* $matomo.trackEvent('行为类别', '事件', 'name', 'value')* behaviorCategory 行为类别* event 事件* name 事件名称* value 事件值*/ const trackEvent = (behaviorCategory, event, name, value) => {window._paq.push(['trackEvent', `${behaviorCategory}`, `${event}`, `${name}`, `${value}`]) }const matomoFun = {setCustomUrl, trackPageView, setUserId, resetUserId, trackEvent }export default matomoFun;
-
1.5 测试代码
matomoF(item) {console.log("matomo--", item);matomoFun.setUserId("xxx123123xxx");matomoFun.trackEvent('风险申报', '点击matomo按钮', "测试事件",item.id); },
-
1.6 报表
2. IMG跟踪
使用img标签追踪
当访客禁用 JavaScript 或者无法使用 JavaScript 时,img标签追踪功能(Image Tracking)允许您使用img标签中的链接来进行访客统计。 在下方产生链接,并将生成的 HTML 粘贴到网页中。如果要把它用作 JavaScript 的追踪功能失败时的备用方式,您可以把它放在
<noscript></noscript>
标签中。查看 追踪 API 说明文档阅读可用于img标签追踪链接的全部参数列表。
img标签追踪链接
<!-- Matomo Image Tracker--> <img referrerpolicy="no-referrer-when-downgrade" src="http://192.168.10.45:8088/matomo.php?idsite=1&rec=1" style="border:0" alt="" /> <!-- End Matomo -->
3. HTTP API 跟踪
要跟踪页面浏览量、事件、访问量,必须向跟踪 HTTP API 端点发送 HTTP 请求(GET 或 POST),例如,http://192.168.10.45:8088/matomo.php 设置了正确的查询参数。
官方参数地址:https://developer.matomo.org/api-reference/tracking-api
在线API URL生成器:https://http-builder.openmost.io/
注意:必填参数
idsite
(required) — The ID of the website we’re tracking a visit/action for.
idsite
(必填) — 我们跟踪其访问/操作的网站的 ID。rec
(required) — Required for tracking, must be set to one, eg,&rec=1
.
rec
(required) — 跟踪时需要,必须设置为 1,例如&rec=1
.
4.HTTP API 获取报告
Matomo中的所有数据,都可通过简单的API接口获取。这个插件是Web服务的切入点,那你可以通过调用获取你想要的网站分析的数据,比如XML,JSON,PHP,CSV等。
Matomo API 介绍 和 Matomo API 参考资料。
-
4.1 创建身份验证token
身份验证
如果要在脚本,crontab等中请求数据,则需要将URL参数
token_auth
添加到需要身份验证的API调用URL中。注意:超级管理员和编辑权限生成的令牌是不能在查询中使用的,所以要换其他只读账号生成
令牌: 3c0a2e399a490607f029ae35a727b357
-
4.2 拼接查询参数
参数规范:https://developer.matomo.org/api-reference/reporting-api
标准API参数
-
idSite:您网站的整数 ID,例如。idSite=1,还可以指定以逗号分隔的 idSites 列表,例如。idSite=1,4,5,6,如果要获取所有网站的数据,请设置 idSite=all(仅某些 API 方法支持此功能)
-
period: 您请求统计信息的时间段,可以是以下任意一项:日、周、月、年或范围。所有报告都根据网站的时区返回日期
- day:day 返回给定日期的数据。
- week:week 返回包含指定“date”的那一周的数据
- month:返回包含指定“date”的月份的数据
- year:year 返回包含指定“date”的年份的数据
- range:range 返回指定“date”范围的数据。
例如,要请求 1 月 1 日至 2 月 15 日范围的报告,可以编写 &period=range&date=2011-01-01,2011-02-15
-
date:日期
- 标准格式 = YYYY-MM-DD
- 关键字= today, yesterday, lastWeek, lastMonth or lastYear. These are relative the website timezone. For example, for a website with UTC+12 timezone
- 日期范围 =
lastX
previousX
YYYY-MM-DD,YYYY-MM-DD
-
segment:定义要将报表筛选到的自定义区段。
-
format:定义输出的格式,XML、JSON、CSV、TSV、HTM、RSS
-
filter_limit:定义要返回的行数。
- 默认情况下,仅返回前 100 行。
- 设置为 -1 可返回所有行
-
module:API api类型
-
method:获取数据类型,如VisitorInterest.getNumberOfVisitsPerVisitDuration
-
-
4.3 发起请求
例子为:每次访问持续时间的访问次数
GET http://192.168.10.45:8088/index.php?module=API&method=VisitorInterest.getNumberOfVisitsPerVisitDuration&idSite=1&period=day&date=2023-11-02&token_auth=ca369ba839f4c9c36df034fa1366de3c&format=json
返回参数注释
通过以上步骤,我们就可以使用linux实例来搭建自己的Matomo平台,并进行网站数据分析了。
Matomo不仅可以帮助我们获取网站的基本数据,还可以进行高级分析,如用户行为、转化率、目标跟踪、电子商务等。此外,Matomo还支持多种扩展和集成,如地理位置、社交媒体、搜索引擎优化等。通过Matomo,我们可以更深入地了解我们的网站和用户,从而提升网站的价值和效果。
尾声
感谢小伙伴们的支持吖,祝大家万圣节快乐哦!