流量统计源码:Piwik

2021年4月6日 | 分类: 【源码】

【介绍】

Piwik是基于PHP+MySQL的开源网站访问统计系统。现已改名为Matomo。
它如Google Analysis一样基于JS脚本,可以获取到访问者的屏幕分辨率,用户的访问忠诚度,连接速率…等更加详细的统计资料。
嵌到页面中的JavaScript代码与其它统计系统也类似,用异步加载的方式,只是发送的请求地址没有伪装成图像地址。

【分析】

程序结构:https://blog.csdn.net/ahilll/article/details/82838467

数据结构:http://img.blog.csdn.net/20131018153645171?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZXdlYnN5cw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
数据结构:http://www.matomo.net.cn/matomo-piwik-database-schema-pdf/

【下载】

下载:https://builds.matomo.org/matomo.zip
版本:5.0.2

WordPress插件:
下载:https://cn.wordpress.org/plugins/wp-piwik/

【安装】

原文:https://qing.su/article/164.html

可能是世界上最牛逼的网站统计程序——Matomo

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

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

后台总览:

国家和地区统计:

具体页面访问统计:

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

操作系统与浏览器统计:

搜索引擎与关键词分析:

外链来源统计:

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

1, 新建数据库

安装Matomo之前,我们假设您已经搭建好了服务器程序,PHP以及数据库。若您不知道如何搭建,可以参考我们的教程https://qing.su/article/163.html.

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

1
2
3
4
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, 填入下面的内容:

1
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命令是否能够正确执行。

1
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地理位置数据库。

1

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

1
2
3
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地理位置数据库每周或者每月自动更新。