大家做网站的时候一般都会使用网站统计程序。通常,国内网站会使用百度统计、CNZZ等,而国外网站则会使用Google Analytics等统计。国内的统计程序普遍功能不太丰富,且响应速度一般。Google Analytics的统计功能非常丰富,但是国内访问速度极差,不太适合中文站。今天,我来介绍一款非常好用的网站统计程序,Matomo.  Matomo的前身是著名的Piwik.  作为一款免费开源的统计程序,它不仅能够对每一条访问提供准确及时的访问记录,还能够自动生成极其专业的统计报表,包括根据地理位置生成的全球访问热点地图,实时访问图景,每一条访问的每一个点击操作详细分析,页面跳转率,来路分析,访客浏览器,访客硬件设备,关键词,等等等等……您还可以使用API,将统计功能整合在客户端、小程序等场景。虽然功能非常丰富,但是Mamoto非常轻量,几乎不需要占用什么资源。今天,我就来详细介绍如何安装配置这款可能是世界上最牛逼的网站统计程序。

作者为香菇肥牛,原文链接为https://qing.su/article/164.html

在开始安装之前,我先放一些后台统计界面的图片,大家可以感受一下。

后台总览:

国家和地区统计:

具体页面访问统计:

硬件设备与手机品牌统计:

操作系统与浏览器统计:

搜索引擎与关键词分析:

外链来源统计:

下面,我就来介绍具体的安装和配置步骤。

1, 新建数据库
安装Matomo之前,我们假设您已经搭建好了服务器程序,PHP以及数据库。若您不知道如何搭建,可以参考我们的教程

https://qing.su/article/163.html.

Matomo需要单独使用一个数据库。如果您使用的是MySQL/MariaDB, 可以使用下面的命令新建数据库,并建立用户名和密码。

mysql -u root -p
CREATE DATABASE matomodb;
GRANT ALL ON matomodb.* TO 'qing.su' IDENTIFIED BY 'qing.su';
quit;

请使用您需要新建的数据库名,用户名,密码代替上面的matomodb, qing.su等字段。

2, 安装Matomo程序
Matomo可以安装在网站根目录作为独立的专业统计站点安装,也可以安装在网站的子目录中。如果您有多个网站需要统计流量,那么我建议您使用单独的服务器安装Matomo, 然后添加多个网站。如果您仅需要统计一两个网站的流量,您可以直接在对应网站的子目录中安装。我们这里将直接安装在网站根目录下。

您可以下载Matomo程序源文件,地址为https://builds.matomo.org/matomo.zip, 然后解压至您需要安装的网站目录内。解压完毕后,访问您需要安装Matomo的网站目录,如下图。

可以看到,安装程序报错,原因是部分文件夹的权限不够。按照屏幕提示,在SSH中执行相应的命令,然后刷新页面即可进入安装页面。

如果您需要使用中文,可以在页面顶部English那里切换为简体中文或者繁体中文。Matomo的所有组件均有完美的中文翻译,如果您不习惯英文环境,可以完全使用中文统计后台。我们直接点击Next, 进入系统配置监测页面。

如果没有问题,可以直接点击Next. 来到下一步,安装数据库。

这里,我们要按照之前新建数据库时设置的参数来填写数据库用户名,密码和数据库名。填写完毕后点击Next. 如果填写正确,可以看到下图的数据表建立成功的提示。

接下来,需要新建管理员用户。管理员用户可以修改服务器设置,可以添加子用户,更改子用户权限,添加网站,等等。

管理员用户添加成功后,即可开始添加第一个网站了。全部安装完毕后,您可以在后台继续添加其他网站,也可以添加其他类型的应用。



点击Next, 系统自动生成了统计代码,类似下图这样。我们需要将这段代码放在您的网站的每个页面中,最好是head标签之间。如果您使用的是WordPress,您可以复制代码后,将代码粘贴至您主题的header.php文件中至此,Matomo安装完毕,您可以登录后台,查看系统生成的统计报表啦!我们接下来,还需要做两个配置,使得您的统计更高效且更准确。

3, 设置归档器Cron Job
Matomo自动安装之后,会默认在每次访客访问时分别进行统计和报表生成。如果您的网站访客较多(日10000 PV以上),则报表生成会非常占用系统资源。我们可以修改报表生成的频率,使得每一个小时再生成一次报表,这样既可以准确统计流量,又可以节省系统资源,使得统计更高效。这里,我们需要为生成报表的归档器程序(archiver)设置Cron Job.

首先,我们登录Matomo后台,点击右上角齿轮图标,然后进入System — General Settings

将Archive reports when viewed from the browser由Yes设置为No. 这样,就可以防止每一次用户访问的时候都生成报表。

我们接下来设置一个Cron Job, 让系统每隔一小时生成一次访问报表。编辑文件vi /etc/cron.d/matomo-archive, 填入下面的内容:

5 * * * * nobody /usr/local/lsws/lsphp74/bin/php /srv/www/132020.xyz/public_html/console core:archive --url=https://132020.xyz/ > /dev/null

其中,5 * * * *是指每隔一小时执行一次,执行的时间是整点过后的第5分钟。nobody是执行的用户名,如果您和我一样使用的是OpenLiteSpeed/LiteSpeed, 这里应该是nobody; 如果您使用的是Apache, 这里可能是www; 如果您使用的是Nginx, 这里可能是www-data. 命令程序需要填写您的PHP可执行程序的地址,我这里是/usr/local/lsws/lsphp74/bin/php (请注意,这里如果用lsphp执行会出错). 后面跟着的第一个参数是归档器程序,归档器的地址是您的Matomo安装目录中的console文件。之后core:archive参数指明了归档操作,而–url=后面需要介绍您的Matomo根目录的网址。

保存完毕之后,我们测试一下Cron命令是否能够正确执行。

su nobody -s /bin/bash -c "/usr/local/lsws/lsphp74/bin/php /srv/www/132020.xyz/public_html/console core:archive --url=https://132020.xyz/"

如果看到正确输出,则上面的cron命令能够正确执行。

4, 配置IP地理位置数据库
如果您需要让matomo统计每一个访客的地理位置,您需要安装配置IP地理位置数据库。这里,我们介绍Maxmind GeoLite 2 数据库的安装和使用。

首先,您需要去Maxmind官网上注册一个免费帐户,并申请一个免费的GeoLite2 License密钥。地址是https://dev.maxmind.com/geoip/geoip2/geolite2/

申请的密钥请牢记,因为之后在网上是看不到密钥的。保存好密钥之后,登录SSH, 下载GeoLite 2 City级别的IP地理位置数据库。

wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&suffix=tar.gz&license_key=YOUR_LICENSE_KEY"

请将YOUR_LICENSE_KEY替换为您自己的密钥。下载下来的数据库是一个压缩包,我们解压之后,将里面的GeoLite2-City.mmdb文件复制粘贴到Matomo安装目录的/misc/文件夹下。以我这里为例:

tar zxvf GeoLite2-City.tar.gz
cd GeoLite2-City_2020*
mv GeoLite2-City.mmdb /srv/www/132020.xyz/public_html/misc/

然后,登录Matomo后台,点击右上角齿轮图标,依次点击System — Geolocation, 看到类似于下面的界面。

可以看到,DBIP/GeoIP2这一项已经变成了Installed. 我们勾选这项,就可以实现IP地理位置自动统计了。

由于IP地址的地理位置信息经常会变化,因此这个数据库也需要经常更新。幸运的是,Matomo可以自动更新数据库。我们将这个页面拖到下方,如下图。

在Location Database里面填入之前用来下载数据库的地址

https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&suffix=tar.gz&license_key=YOUR_LICENSE_KEY

然后保存,即可实现IP地理位置数据库每周或者每月自动更新。

这样,我们就完全配置好了Matomo网站统计程序,可以查看您的各项报表啦!如果您遇到任何疑问,欢迎在这里留言,我将尽力解答。

本文作者为香菇肥牛,原文链接为https://qing.su/article/164.html, 转载需注明原文链接。谢谢!

【转载】可能是世界上最牛逼的网站统计程序——Matomo的更多相关文章

  1. SQL才是世界上最牛逼的语言!

    身处互联网行业,SQL 可能是你需要掌握的核心技能之一. 最早的时候,SQL 作为一门查询数据库的语言,是程序员的必备技能,运维.开发.Web 以及数据等从业人员都需要用到 SQL,毕竟只有查询到正确 ...

  2. 史上最牛逼的文件bom头清除代码,万能检测清除php,js等等

    做php开发,经常部分uft8的php文件因BOM头不同导致各种错误和错位.网上搜到的大部分所谓的去处bom工具都是2货,没有能用的.下面的一段代码,请复制到一个php文件里,然后上传到你的网站根目录 ...

  3. [转载]教你如何塑造JavaScript牛逼形象

    http://www.html5cn.org/article-6571-1.html 如何写JavaScript才能逼格更高呢?怎样才能组织JavaScript才能让别人一眼看出你不简单呢?是否很期待 ...

  4. .net操作数据库,史上最牛逼的方法,你见过这种方法吗

    免费分享给大家.下载地址在最下面. C# code   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...

  5. 史上最牛逼的纯CSS实现tab选项卡,闪瞎你的狗眼

    下载地址:http://download.csdn.net/detail/cometwo/9393614 html文件 <!DOCTYPE html> <html> <h ...

  6. 如何成为一名牛逼的C/C++程序员?

    每一个学技术的人 都想干个三五年就能成为大牛 跳槽去大厂,薪水翻番 或者在一个小公司里,带个小团队 在30岁左右成为项目经理 晋升管理层 买房买车,实现人生理想 然而技术之路漫漫 想要成为牛×的程序员 ...

  7. 如何成为一个牛逼的C/C++程序员?

    这个题目的噱头太大,要真的写起来, 足够写一本书了. 本人是过来人, 结合自身的体会和大家交流一下,希望新人能少走弯路. 每个人的情况不一样,我下面的描述可能并不适合每一个看到这篇文章的人. 一.C/ ...

  8. 《转》如何成为一个牛逼的C/C++程序员?

    原地址:http://blog.csdn.net/langeldep/article/details/6333562 这个题目的噱头太大,要真的写起来, 足够写一本书了. 本人是过来人, 结合自身的体 ...

  9. Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上的应用)

    目录 Python5大擅长领域 WEB开发 网络编程 科学运算 GUI图形开发 运维自动化 Python在世界上的知名应用 国外 谷歌 CIA NASA YouTube Dropbox Instagr ...

随机推荐

  1. 在一台电脑上,添加多个Git的ssh key

    Git的第一套公秘钥默认名为 id_rsa ,如果你想要生成另外一个公钥,比如 aysee ,你也可以使用任何你喜欢的名字. 步骤如下:(总共四大操作) 一.生成ssh key 1.生成一个新的自定义 ...

  2. [Python]在当前目录下创建三个目录

    import os os.mkdir("2018-03-16-b018") os.mkdir("2019-03-16-b019") os.mkdir(" ...

  3. Zookeeper协议篇-Paxos算法与ZAB协议

    前言 可以自行去学习一下Zookeeper中的系统模型,节点特性,权限认证以及事件通知Watcher机制相关知识,本篇主要学习Zookeeper一致性算法和满足分布式协调的Zab协议 Paxos算法 ...

  4. Cassandra使用的各种策略

    1. 背景介绍 Cassandra 使用分布式哈希表(DHT)来确定存储某一个数据对象的节点.在 DHT 里面,负责存储的节点以及数据对象都被分配一个 token.token 只能在一定的范围内取值, ...

  5. leetcode刷题-61旋转链表

    题目 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2输出: 4 ...

  6. pwnable.kr之leg

    查看原题代码: #include <stdio.h> #include <fcntl.h> int key1(){ asm("mov r3, pc\n"); ...

  7. 移动APP性能评测与优化

    本文是<移动App性能评测与优化>的读书笔记. PS:说是读书笔记,其实就是摘录. 移动App的性能测试主要包括:内存使用情况.电量消耗.功能的流畅度等: 1. 内存 1.1 内存的主要组 ...

  8. Kubernetes K8S之Pod跨namespace名称空间访问Service服务

    Kubernetes的两个Service(ServiceA.ServiceB)和对应的Pod(PodA.PodB)分别属于不同的namespace名称空间,现需要PodA和PodB跨namespace ...

  9. 吴恩达《深度学习》-第一门课 (Neural Networks and Deep Learning)-第四周:深层神经网络(Deep Neural Networks)-课程笔记

    第四周:深层神经网络(Deep Neural Networks) 4.1 深层神经网络(Deep L-layer neural network) 有一些函数,只有非常深的神经网络能学会,而更浅的模型则 ...

  10. day09记录

    今日内容大纲 毒鸡汤课 坚持.努力! 生成器 yield yeild return yeild from 生成器表达式 内置函数I 昨日内容回顾作业讲解 可迭代对象 可以更新得带的 实实在在的值. 内 ...