开源的网站数据分析统计平台——Matomo-CSDN博客


在这里插入图片描述

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-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
    

    在这里插入图片描述

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`。

安全增强型LinuxSELinux是一个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&amp;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 .
  • api测试

    在这里插入图片描述

  • 查看报表

    在这里插入图片描述

4.HTTP API 获取报告

Matomo中的所有数据都可通过简单的API接口获取。这个插件是Web服务的切入点那你可以通过调用获取你想要的网站分析的数据比如XMLJSONPHPCSV等。

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 您请求统计信息的时间段可以是以下任意一项日、周、月、年或范围。所有报告都根据网站的时区返回日期

      • dayday 返回给定日期的数据。
      • weekweek 返回包含指定“date”的那一周的数据
      • month返回包含指定“date”的月份的数据
      • yearyear 返回包含指定“date”的年份的数据
      • rangerange 返回指定“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 可返回所有行
    • moduleAPI 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我们可以更深入地了解我们的网站和用户从而提升网站的价值和效果。

尾声
感谢小伙伴们的支持吖祝大家万圣节快乐哦

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6