大家做网站的时候一般都会使用网站统计程序。通常,国内网站会使用百度统计、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. .Net在Windows上使用Jenkins做CI/CD的那些事

    背景 最近入职了一家新公司,公司各个方面都让我非常的满意,我也怀着紧张与兴奋的心情入职后,在第一天接到了领导给我的第一个任务——把整个项目的依赖引用重新整理并实施项目的CI/CD. 本篇的重点主要分享 ...

  2. 洛谷 P4093 [HEOI2016/TJOI2016]序列 CDQ分治优化DP

    洛谷 P4093 [HEOI2016/TJOI2016]序列 CDQ分治优化DP 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他. 玩具上有一个数列,数列中某些项的值可能会 ...

  3. 官网安装Python包太慢?教你三种下载安装方式-PiP、conda、轮子,教你三种Pytorch的下载安装方式,保证你再也不用出现Error

    上一期我们介绍了CUDA下载安装以及其总结,这一期教大家如何在Anaconda中使用CUDA来进行加速.神经网络依赖cuDNN的下载安装,以及下载和安装Pytorch-GPU安装包的三种方式(cond ...

  4. 求支付表中按id累积和最接近100的那条记录

    此例源自美团的一道SQL面试题 支付表结构: create table hy_payment( id number(4,0) primary key, pay number(3,0) not null ...

  5. 转载:把你的精力专注在java,jvm原理,spring原理,mysql锁,事务,多线程,大并发,分布式架构,微服务,以及相关的项目管理等等,这样你的核心竞争力才会越来越高

    https://developer.51cto.com/art/202001/608984.htm 把你的精力专注在java,jvm原理,spring原理,mysql锁,事务,多线程,大并发,分布式架 ...

  6. webstorm单标签设置成双标签展开解决iview中col展开问题

    大家好!我是木瓜太香,今天给大家带来一个 webstorm 小技巧 场景:有使用过 vue 框架并且使用 iview 做 ui webstorm 做 ide 的同学,可能会遇到一个比较奇怪的问题,iv ...

  7. ui自动化---WebDriverApi接口

    一.webdriver client原理 当测试脚本启动Chrome的时候,selenium-webdriver 会首先在新线程中启动Chrome浏览器.启动后selenium-webdriver会将 ...

  8. selenuim中18种定位方式

    18种定位方式=8种单数形式+8种复数形式+2种底层方案 单数可以确定唯一,复数无法确定: 单数形式定位,返回的是一个元素,复数形式,返回的是一个列表,返回的是当前页面所有符合要求的元素,没有意义 一 ...

  9. python基本数据类型和循环、判断

    一.语言分为2种: 编译型语言:写完代码不能执行,得先编译 c.c++.c#,速度相对解释性语言更快,因为只需要执行一次解释型语言:不需要编译,直接执行 python.java.php.js.go.r ...

  10. linux 字符驱动框架(用户态的read,write,poll是怎么操作驱动的)

    前言 这篇文章是通过对一个简单字符设备驱动的操作来解释,用户态的读写操作是怎么映射到具体设备的. 因为针对不同版本的linux内核,驱动的接口函数一直有变化,这贴出我测试的系统信息: root@ubu ...