开源的网站数据分析统计平台——Matomo
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
- 日期范围 =
lastXpreviousXYYYY-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,我们可以更深入地了解我们的网站和用户,从而提升网站的价值和效果。
尾声
感谢小伙伴们的支持吖,祝大家万圣节快乐哦!
相关文章:
开源的网站数据分析统计平台——Matomo
Matomo 文章目录 Matomo前言一、环境准备1. 整体安装流程2.安装PHP 7.3.303.nginx配置4.安装matomo4.1 访问安装页面 http://192.168.10.45:8088/index.php4.2 连接数据库4.3 设置管理员账号4.4 生成js跟踪代码4.5 安装完成4.6 警告修改4.7 刷新页面,就可以看到登陆…...
linux入门到地狱
linux—001入门 IT圈必备(前端工作者用的比较少) 老旧电脑跑linux不容易卡 我代码没保存windows闪退,僵停(vs2019卡掉线),重启更新,占用cpu内存服务报错pip各种bug 出来生态环境友好其他的全是bug(bug时间成本超过了windows快捷友好生态) 那就说明wind…...
架构”4+1“视图
1995年Kruchten提出了著名的“41”视图,用来描述软件系统的架构。在“41”视图中,(物理视图 )用来描述系统软硬件之间的映射关系,这个视图往往(系统工程人员)最为关注;(逻…...
『精』Vue 组件如何模块化抽离Props
『精』Vue 组件如何模块化抽离Props 文章目录 『精』Vue 组件如何模块化抽离Props一、为什么要抽离Props二、选项式API方式抽离三、组合式API方式抽离3.1 TypeScript类型方式3.2 文件分离方式3.3 对文件分离方式优化 参考资料💘推荐博文🍗 一、为什么要抽…...
JavaScript字符串字面量详细解析与代码实例
JavaScript字符串字面量是一种表示字符串值的语法结构,通常用双引号或单引号括起来。 var str1 "Hello World!"; var str2 Hello World!;另外,如果需要在字符串中包含双引号或单引号,可以使用转义字符\来实现。 var str3 &quo…...
Android java Handler sendMessage使用Parcelable传递实例化对象,我这里传递Bitmap 图片数据
一、Bundle给我们提供了一个putParcelable(key,value)的方法。专门用于传递实例化对象。 二、我这里传递Bitmap 图片数据,实际使用可以成功传统图像数据。 发送:Bundle bundle new Bundle();bundle.putParcelable("bitmap",bitmap);msg.setD…...
CTF工具PDF隐写神器wbStego4open安装和详细使用方法
wbStego4open安装和详细使用方法 1.wbStego4open介绍:2.wbStego4open下载:3.wbStego4open原理图:4.wbStego4open使用教程:第一步:第二步:第三步:第四步:第五步: 5.wbSteg…...
docker镜像使用
一、查看docker版本 docker version docker默认安装目录 /var/lib/docker 目录文件如下: 二、查看下载的镜像 docker images 三、下载镜像 docker pull [OPTIONS] NAME[:TAG|DIGEST] option作用-a, --all-tags拉取所有 tagged 镜像–disable-content-trust…...
【Git】git的下载安装与使用
目录 目录 一.下载安装 官方下载 淘宝镜像下载 安装 二.创建本地仓库 三.git的基本操作命令 git status git add . git commit -m " " 四.gitee(码云)的使用 配置ssh公钥 编辑 查看公钥 gitee创建仓库 将本地仓库的文件上传到远程仓库…...
R语言中的函数27:polynom::polynomial(), deriv(),integral(),solve()多式处理函数
文章目录 介绍polynomial()用法参数实例多项式的加减乘除等运算实例 deriv()和integral()用法参数实例solve()参数实例 介绍 R语言中的polynom包可以实现对多项式的操作,例如:加、减、乘、除、微分、积分。使用的时候先用polynomial()函数定义一个多项式…...
基于STM32CubeMX和keil采用USART/UART实现非中断以及中断方式数据回环测试借助CH340以及XCOM
文章目录 前言1. 接口概述1.1 USART/UART接口1.2 串口通信参数1.3 波特率计算 2. 传输函数3. 回环测试3.1 上位机环境配置3.2 阻塞模式3.3 中断模式 4. STM32CubeMX配置4.1 时钟配置4.2 调试配置4.3 串口引脚配置4.4 工程配置 5. 测试效果6. 不借助上位机回环测试总结 前言 这…...
Spring cloud负载均衡 @LoadBalanced注解原理
接上一篇文章,案例代码也在上一篇文章的基础上。 在上一篇文章的案例中,我们创建了作为Eureka server的Eureka注册中心服务、作为Eureka client的userservice、orderservice。 orderservice引入RestTemplate,加入了LoadBalanced注解&#x…...
C#when关键字
在C#中,when关键字用于在模式匹配表达式中添加条件。它允许您在模式匹配的过程中指定额外的条件,以进一步过滤匹配的模式。当模式匹配和附加条件都为真时,相关的代码块将被执行。 以下是when关键字的详细解释以及示例说明: 语法…...
华为政企无线局域网产品集
产品类型产品型号产品说明 室内接入点AirEngine 5760-51AirEngine 5760-51是华为发布的支持Wi-Fi 6(802.11ax)标准的新一代室内AP,适合部署在企业办公、零售、制造等场景。 通过软件定义射频,能够在双频、三频模式灵活切换&a…...
解释 RESTful API
RESTful API是一种基于HTTP协议的API设计风格,它的核心思想是将每个资源(如用户、订单等)抽象成一个URI(统一资源标识符),通过HTTP协议定义的方法(如GET、POST、PUT、DELETE等)对资源…...
青翼科技-国产化ARM系列TES720D-KIT
板卡概述 TES720D-KIT是专门针对我司TES720D(基于复旦微FMQL20S400的全国产化ARM核心板)的一套开发套件,它包含1个TES720D核心板,加上一个TES720D-EXT扩展底板。 FMQL20S400是复旦微电子研制的全可编程融合芯片,在单…...
Tomcat为什么支持线程池?
Tomcat作为一个Java Servlet容器,支持线程池是因为它能够处理多个并发请求。这些请求可以是对Web应用程序的HTTP请求、Servlet的请求,或其他支持的协议。 支持线程池的主要原因包括: 并发处理能力: 提高性能: 使用线程…...
Mac安装VMware
去官网下载一下VMware Download VMware Fusion | VMware | SG 下载完成之后,打开直接闪退,参考这篇文章解决 解决macOS13安装Fusion13闪退的问题-CSDN博客 然后即可成功顺行...
项目部署文档
申请SSL证书 先申请,用免费的 下载证书 先将下载下来的保存起来 服务器安装JDK: 创建develop目录 mkdir /usr/local/develop/ 把JDK压缩包上传到/usr/local/develop/目录 解压安装包 并且将安装到指定目录 tar -zxvf /usr/local/develop/jdk-8u191-linux-x64.tar.gz -C /us…...
HTML+CSS阶段知识点梳理
目录 一、简单的网页结构 二、常用标签 三、列表 四、CSS引入方式 五、常用选择器 1、标签(元素)选择器 2、id选择器 3、class选择器 4、通配选择器 5、复合选择器 6、关系选择器 7、属性选择器 8、伪类选择器 9、a元素的伪类 10、伪元素…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...
npm安装electron下载太慢,导致报错
npm安装electron下载太慢,导致报错 背景 想学习electron框架做个桌面应用,卡在了安装依赖(无语了)。。。一开始以为node版本或者npm版本太低问题,调整版本后还是报错。偶尔执行install命令后,可以开始下载…...
el-amap-bezier-curve运用及线弧度设置
文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...


