Piwik实践
Piwik实践
piwik介绍
Piwik是一个PHP和MySQL的开放源代码的Web统计软件,它给你一些关于你的网站的实用统计报告,比如网页浏览人数,访问最多的页面,搜索引擎关键词等等。
Piwik拥有众多不同功能的插件,你可以添加新的功能或是移除你不需要的功能,Piwik同样可以安装在你的服务器上面,数据就保存在你自己的服务器上面。你可以非常容易的插入统计图表到你的博客或是网站亦或是后台的控制面板中。安装完成后,你只需将一小段代码放到将要统计的网页中即可。
Piwik支持插件,你可以通过插件扩展Piwik的功能,或者去掉一些不需要的功能。用户的界面支持Ajax技术是可定制的,你可以轻松拖放控件,定制自己需要的报告。
运行Matomo所需的配置
运行Matomo所需的配置
Web服务器,如Apache,Nginx,IIS等
PHP版本5.5.9或更高版本
MySQL版本5.5或更高版本或MariaDB
(默认启用)PHP扩展pdo和pdo_mysql,或mysqli扩展。
安装环境:
Centos7.3
Apache: 2.4.4
Php: 5.6.35
MariaDB: 5.5.56
默认yum安装LAMP环境php的版本为5.4不满足php版本要求,实践中使用lnmp的会有不兼容,可以参考piwik-nginx
配置LAMP环境
编译安装apache
依赖:
yum install -y apr-devel apr-util-devel pcre-devel openssl-devel
编译参数:
# cat /usr/local/apache/build/config.nice #查看已经编译好的httpd的编译参数
#! /bin/sh
#
# Created by configure
"./configure" \
"--prefix=/usr/local/apache" \ ##安装路径
"--sysconfdir=/etc/httpd" \ #指定配置文件路径
"--enable-so" \ #DSO兼容,DSO=Dynamic Shared Object,动态共享对象,可实现模块动态生效
"--enable-rewirte" \ #启用Rewrite功能,URL重写
"--enable-ssl" \ #支持SSL/TLS,可实现https访问 需已安装openssl-devel
"--enable-cgi" \ #支持CGI脚本(默认对非线程的MPM模式开启)
"--enable-cgid" \
"--enable-modules=most" \ #支持动态启用的模块,可选参数:all,most,few,reallyall
"--enable-mods-shared=most" \
"--enable-mpms-shared=all" \ #支持动态加载的MPM模块,可选参数:all
"aaa@qq.com"
编译安装php-5.6.35
依赖:
yum install -y gcc gcc-c++ glibc make autoconf libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel libcurl libcurl-devel openssl openssl-devel
编译参数:
# /usr/local/php-fastcgi/bin/php -i |grep configure #查看php编译参数
Configure Command => './configure' '--prefix=/usr/local/php-fastcgi' '--with-mysql' '--with-jpeg-dir' '--with-png-dir' '--with-mysqli' '--with-pdo-mysql' '--with-zlib' '--enable-xml' '--with-libxml-dir' '--with-curl' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--enable-mbregex' '--with-openssl' '--enable-mbstring' '--with-gd' '--enable-gd-native-ttf' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--disable-debug' '--enable-opcache' '--with-config-file-path=/usr/local/php-fastcgi/etc' '--enable-fpm' '--with-fpm-user=www' '--with-fpm-group=www' '--enable-ftp'
./configure \
--prefix=/usr/local/php-fastcgi \ #安装路径
--with-config-file-path=/usr/local/php-fastcgi/etc \ #配置文件的存放路径
--with-mysql \ #指明依赖的mysql的路径,5.3后可不安装mysql,使用参数mysqlnd
--with-mysqli \ #指明依赖的mysqli,mysqli是mysql的另外一个访问接口
--with-pdo-mysql \
--with-jpeg-dir \ #用于显示支持jpeg格式的图片
--with-png-dir \ #用于显示支持png格式的图片
--with-zlib \ #用于支持压缩功能
--enable-xml \ #表示支持xml
--with-libxml-dir \
--with-curl \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--with-openssl \ #指明依赖的openssl,用于支持ssl通信
--enable-mbstring \ #用于让mysql支持中文
--with-gd \
--enable-gd-native-ttf \
--enable-sockets \ #表示支持以sockets方式进行通信
--with-xmlrpc \
--enable-zip \
--enable-soap \
--disable-debug \
--enable-opcache \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-ftp
整合apache和php
修改apache配置文件:
User www #修改用户为www
Group www
LoadModule proxy_module modules/mod_proxy.so #加载模块
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule rewrite_module modules/mod_rewrite.so
#Options Indexes FollowSymLinks
Options FollowSymLinks #禁止目录浏览
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
#proxy #添加
ServerName 127.0.0.1
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/$1
安装mariadb
yum install -y mariadb mariadb-server
创建数据库并授权
mysql> create database piwik character set utf8; #创建piwik数据库
mysql> grant all on piwik.* to aaa@qq.com identified by '123456'; #授权piwik用户管理piwik数据库
下载安装piwik
cd /usr/local/apache/htdocs/ #进入web主目录
wget http://builds.piwik.org/piwik.zip #下载piwik安装包
unzip piwik.zip
chown -R www.www /usr/local/apache/htdocs/piwik #授权
chmod 0755 /usr/local/apache/htdocs/piwik/tmp/
mv piwik/* .
完成上述操作后,使用浏览器访问,在web界面完成安装操作(没有截图)。
在第二步系统检查中可能会报的错误:
修改php.ini:
always_populate_raw_post_data = -1
登录
登录完成后可以在“管理->设置”中设置语言
Piwik使用
matomo新手
Piwik支持两种采集用户访问记录的方式: JS追踪和访问日志追踪
JS追踪可定制型高,可以获取到用户的分辨率,浏览器插件等等,还可以捕获自定义变量。访问日志追踪(如apache的accesslog)可以追踪到用户的错误请求(如40X错误,有助于捕获到恶意用户和爬虫,蜘蛛等等)
JS追踪
官方文档
可以在“管理->网站->追踪代码”中查看跟踪代码,将此代码复制到web项目的footer中即可(即所有页面都嵌入这段相同的js代码,用于捕获用户的信息,如分辨率,浏览器UA,IP等),还可以按照官方文档,捕获自定义变量。
log追踪
官方文档
log追踪无需修改web项目,但是必须要有登录服务器并读取accesslog的权限。
log追踪的过程是解析webserver的accesslog,然后通过piwik的API上传,最终在piwik页面上展示。这个过程不用自己去实现了,piwik的压缩包中已经带有一个python脚本可以帮助我们完成这个工作了,该脚本存储于piwik目录下的misc/log-analytics/import_logs.py
# ll /usr/local/apache/htdocs/misc/log-analytics/import_logs.py
-rwxr-xr-x 1 www www 102278 Mar 28 09:39 /usr/local/apache/htdocs/misc/log-analytics/import_logs.py
使用–help参数即可看到这个脚本的命令行,详细帮助可以参见官方文档
将这个脚本远程拷贝到目标服务器上,按照脚本的参数格式执行即可:
python import_logs.py --url=http://192.168.20.203 --idsite=2 --recorders=4 --enable-http-errors --enable-http-redirects --enable-static --enable-bots --token-auth=c77a289253d542ff14828c90f568aa4a /var/log/httpd/access_log
参数说明:
--url 参数是必须的,指明piwik的访问路径
--idsite 表明抓取到的信息上传到哪个序号对应的网站(在网站-管理中查看)
--recorders 使用多线程解析,默认为1,官方建议这个参数和核心数一致。
--token-auth 这个参数是管理员的访问token,在“管理-平台”里的API点开即可看到,如下图所示。这个参数可以使用--login=LOGIN --password=PASSWORD这两个参数替代,必须是管理员的账户和密码。
--enable-static 静态文件
--enable-bots 机器人请求
--enable-http-errors http错误
--enable-http-redirects http重定向
/var/log/httpd/access_log apache的accesslog存放路径,常见的webserver如nginx,lighthttpd等,脚本自带有解析引擎,无需别的参数,如果非常见webserver的话,加上--log-format-regex这个参数来自定义日志格式抓取。
当脚本执行完毕时,即可在piwik中看到网站的访问记录了,使用也很方便。长期使用可以写入crontab即可。
注意:
log解析的方式追踪比较慢,不适合实时追踪用户访问记录,建议每过几小时执行一次crontab,来定时解析log。
如果开启了–enable-static –enable-bots –enable-http-errors这三个参数,解析过程将会很缓慢,不要让crontab太频繁,会直接让mysql数据库超出连接而挂掉。