大家做网站的时候一般都会使用网站统计程序。通常,国内网站会使用百度统计、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. SpiderMonkey教程

    https://technotales.wordpress.com/2009/06/07/spidermonkey-introduction/ https://developer.mozilla.or ...

  2. nginx如何限制并发连接请求数?

    简介 限制并发连接数的模块为:http_limit_conn_module,地址:http://nginx.org/en/docs/http/ngx_http_limit_conn_module.ht ...

  3. HDU - 4548-美素数 (欧拉素数筛+打表)

    小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识.  问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为"美素数&quo ...

  4. [HGAME] Week1 Web WriteUp

    一 .Cosmos的博客 打开题目之后,首页直接给了我们提示: 版本管理工具常用的有git和svn两种,这里提示了GitHub,考虑Git信息泄露,先访问/.git/目录考虑用Githack获取泄露信 ...

  5. 10 router

    https://router.vuejs.org/zh/guide/advanced/navigation-guards.html 1.路由守卫beforeEach router.beforeEach ...

  6. 关于取表中id最大值+1的select语句,哪种效率更高?

    需求:取stock表中id最大值+1,作为下一个id值. 特殊情况:考虑到表中会没有值,max(id)会返回空,因此需要用case when进行判断. 实现一:select (case max(id) ...

  7. ZT:15 个你非了解不可的 Linux 特殊字符

    https://os.51cto.com/art/202003/611595.htm 不知道大家接触 Linux 系统有多久了,可曾了解过 Linux 中有哪些特殊的字符呢?其实啊,那些特殊字符都大有 ...

  8. [oracle/sql]写SQL从学生考试成绩三表中选出五门分综合超过720的尖子

    任务:有学生,科目,考分三张表,需要从中筛选出五门考分总和超过720的学生. 科目表最简单只有五条记录: CREATE TABLE tb_course ( id NUMBER not null pri ...

  9. [Java数据结构]Map的contiansKey和List的contains比较

    Map的containskey方法使用哈希算法查找key是否存在,运算时间是常数: List的contains方法是将元素在列表中遍历,运算时间和列表长度有关. 我使用两种不同SQL语句获取两种不同类 ...

  10. Spring Boot 整合Redis 实现缓存

      本文提纲 一.缓存的应用场景 二.更新缓存的策略 三.运行 springboot-mybatis-redis 工程案例 四.springboot-mybatis-redis 工程代码配置详解   ...