Matomo
: 一款开源的网站数据分析统计平台,以前称为 `Piwik,可以让您轻松地从访问者那里获得您想要的信息。例如查看您的网站访问者来自何处、正在查看哪些页面、单击了哪些链接以及其他各种有用的信息。可以用于跟踪、分析您的网站的流量,同时充分保障数据安全性、隐私性,
提供了丰富的报告和实时数据分析功能,并提供了一套完整的隐私保护措施,确保用户数据安全。
官网传送门:matomo
本文是为了在linux
系统上安装matomo
,并使用它完成页面跟踪
与统计数据获取
。
- PHP 7.2.5 或者以上的版本
- 安装php扩展:pdo 和pdo_mysql
- MySQL 5.5或者以上的版本
- nginx配置
- 下载安装matomo 4.15.1
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-devel
yum 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
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
# 解压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
<!-- 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 -->
修改 config.ini.php
找到 trusted_hosts[] = "192.168.10.45"
,增加端口,改为 trusted_hosts[] = "192.168.10.45:8088"
另外还需要再增加一行 enable_trusted_host_check=0
,用于跳过受信任检测,否则反代之后登录可能会失败
官方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;
matomoF(item) {
console.log("matomo--", item);
matomoFun.setUserId("xxx123123xxx");
matomoFun.trackEvent('风险申报', '点击matomo按钮', "测试事件",item.id);
},
使用img标签追踪
当访客禁用 JavaScript 或者无法使用 JavaScript 时,img标签追踪功能(Image Tracking)允许您使用img标签中的链接来进行访客统计。 在下方产生链接,并将生成的 HTML 粘贴到网页中。如果要把它用作 JavaScript 的追踪功能失败时的备用方式,您可以把它放在
标签中。
查看 追踪 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 -->
要跟踪页面浏览量、事件、访问量,必须向跟踪 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
.
Matomo中的所有数据,都可通过简单的API接口获取。这个插件是Web服务的切入点,那你可以通过调用获取你想要的网站分析的数据,比如XML,JSON,PHP,CSV等。
Matomo API 介绍 和 Matomo API 参考资料。
身份验证
如果要在脚本,crontab等中请求数据,则需要将URL参数
token_auth
添加到需要身份验证的API调用URL中。注意:超级管理员和编辑权限生成的令牌是不能在查询中使用的,所以要换其他只读账号生成
令牌: 3c0a2e399a490607f029ae35a727b357
参数规范: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
例子为:每次访问持续时间的访问次数
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,我们可以更深入地了解我们的网站和用户,从而提升网站的价值和效果。
尾声
感谢小伙伴们的支持吖,祝大家万圣节快乐哦!