开源的网站数据分析统计平台——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
- 日期范围 =
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,我们可以更深入地了解我们的网站和用户,从而提升网站的价值和效果。
尾声
感谢小伙伴们的支持吖,祝大家万圣节快乐哦!
相关文章:

开源的网站数据分析统计平台——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、伪元素…...

网易按照作者批量采集新闻资讯软件说明文档
大家好,我是淘小白~ 今天给大家介绍的爬虫软件是网易按照作者采集的软件 1、软件语言: Python 2、使用到的工具 Python selenium库、谷歌浏览器、谷歌浏览器驱动 3、文件说明: 4、配置文件说明: 5、环境配置 安装Python&am…...

SwiftUI 代码调试之都是“变心”惹的祸
0. 概览 这是一段非常简单的 SwiftUI 代码,我们将 Item 数组传递到子视图并在子视图中对其进行修改,修改的结果会立即在主视图中反映出来。 不幸的是,当我们修改 Item 名称时却发现不能连续输入:每次敲一个字符键盘都会立即收起并…...

u20.04安装slam库
git clone https://github.com/strasdat/Sophus.git // 下载的最新版是模板类的 git checkout a621ff // 切换为非模板类的历史版本 模板类Sophus的依赖库是Eigen(版本为3.3.X)和fmt,需提前安装好Eigen库和fmt库 git clone https://github.c…...

齐纳二极管,肖特基二极管,瞬态电压抑制二极管
普通二极管,齐纳二极管,肖特基二极管的符号: 瞬态电压抑制(TVS)二极管是一种特殊的齐纳二极管,其符号如下: 普通二极管 普通二极管由n类型 的半导体和p类型的半导体结合而成。 硅材料制成的二…...

axios 全局错误处理和请求取消
这两个功能都是用拦截器实现。 前景提要: ts 简易封装 axios,统一 API 实现在 config 中配置开关拦截器 全局错误处理 在构造函数中,添加一个响应拦截器即可。在构造函数中注册拦截器的好处是,无论怎么实例化封装类,…...

无法加载文件 C:\Program Files\nodejs\cnpm.ps1,因为在此系统上禁止运行脚本。有
cnpm : 无法加载文件 C:\Program Files\nodejs\cnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Poli cies。 所在位置 行:1 字符: 1 cnpm run debug ~~~~ Categ…...

学电脑编程零基础,计算机编程入门先学什么
学电脑编程零基础,计算机编程入门先学什么,建议先从容易学习的语言入手,比如中文编程。 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件&…...

SQL左连接实战案例
要求:用表df1和表df2的数据,得到df3 一、创建表 CREATE TABLE df1 (姓名 varchar(255) DEFAULT NULL,年龄 int DEFAULT NULL,部门 varchar(255) DEFAULT NULL,id int DEFAULT NULL );CREATE TABLE df2 (部门 varchar(255) DEFAULT NULL,年龄 int DEFAU…...

2、Sentinel基本应用限流规则(2)
2.2.1 是什么 Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。 2.2.2 基本概念 • 资源 (需要被保护的东西…...

Qt的事件
2023年11月5日,周日上午 还没写完,不定期更新 目录 事件处理函数的字体特点Qt事件处理的工作原理一些常用的事件处理函数Qt中的事件类型QEvent类的type成员函数可以用来判断事件的类型事件的类型有哪些?有多少种事件类 事件处理函数的字体特…...