3. Piwik 功能配置
最后更新于:2022-04-02 07:42:17
#### Piwik中文设置
```shell
个人-->设置-->Language
```
#### Piwik用户来源配置(位置分析、实时地图)
1. Piwik默认只支持GeoIP的数据库,有免费版本
2. 未调整好地图前,如果产生的访问进行了归档处理,将汇总不正确的数据
[下载地址:GeoLite City](http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz "GeoLite City")
>这里有个地方需要注意一下,官方推荐GeoIP(PRCL),或GeoIP(PHP)
##### 如何判断地图生效?
```shell
选择地图时有坐标、位置信息产生,只显示位置有可能你上传的地图是国家级地图
我目前遇到一个问题,就是GeoIP(PRCL)地图不显示坐标,我现在在用GeoIP(PHP)方式
```
##### GeoIP(PHP)部署
下载GeoLite City文件,上传到/data/piwik/misc/下即可
##### GeoIP(PRCL)
安装依赖GeoIP模块
```shell
yum install GeoIP-devel.x86_64 GeoIP.x86_64 re2c
```
安装PHP的geoip模块(PHP 7.x版本,请使用1.1.1版本)
```shell
cd /opt/
tar xzf geoip-1.1.1.tgz
cd geoip-1.1.1
phpize
./configure --with-php-config=/usr/local/php7.1/bin/php-config --with-geoip
make
make install
```
增加扩展参数,并重启php-fpm
```shell
extension_dir = "/usr/local/php7.1/lib/php/extensions/no-debug-non-zts-20160303/"
extension=geoip.so
geoip.custom_directory= "/data/piwik/misc"
```
注意修改文件名
```shell
cd /data/piwik/misc
cp GeoLiteCity.dat GeoIPCity.dat
```
#### Piwik报告通过邮件发送
1. 需要php-gd模块绘图(PDF和HTML)
1. 文件名乱码 PHP需要增加libiconv组件
2. 内容乱码 需要下载字符集(https://piwik.org/faq/how-to-install/faq_142/)
```shell
系统-->通用设施-->邮件服务器设置-->设置邮箱smtp信息
个人-->报表邮件-->选择需要的报告
```
备注:CSV里有乱码,PDF和HTML图比较一般,建议二次开发来实现
#### 系统中需要注意的地方
1. 时区/货币(网站-->管理-->编辑站点-->调整货币和时区)
#### 替换logo图标
上传图片报不能处理,程序先判断目标文件是否存在,所以会报错,直接将图片上传到指定位置
1.将logo和favicon编辑为png格式
2.将logo.png和favicon.png上传到/data/piwik/misc/user/下
3.自定义图标界面即可看到图片,但logo.png不生效
4.进入/data/piwik/plugins/Morpheus/images
5.将logo-header.png重命名,使用logo.png替换logo-header.png
报告和页面都会使用新图标
#### 常用插件
DBStats(查看数据库使用情况)
#### 手动删除访问数据和归档数据
1. 删除日志数据(测试数据,需要清理)
```shell
指定时间范围和站点ID(网站-->管理里查看)
./console core:delete-logs-data --dates=2015-01-01,2019-01-31 --idsite=2
```
2. 删除归档数据
直接truncate归档表archive*
#### 手动归档
```shell
php console core:archive --url=http://piwik.ding.com/
```
#### 调整页面嵌入JS,实现数据收集的定制化
##### 例1:抓取404页面和跳转目录(error页)
Piwik:https://piwik.org/faq/how-to/#faq_60
重点:在**!!!404页面!!!**"的JS代码_paq.push(['trackPageView']);"之前增加
##### 准确衡量用户在每个页面上花费的时间
30秒发一次心跳(主动发请求到Piwik)
```javascript
_paq.push(['enableHeartBeatTimer', 30]);
```
https://developer.piwik.org/guides/tracking-javascript-guide#accurately-measure-the-time-spent-on-each-page
';