Matomo是一个前端页面的用户行为统计工具,是用PHP语言实现的。作为一个Java开发,搭建PHP环境已经死去了好多脑细胞。为此,在这边做一个记录,也分享给大家。 Matomo官网:https://matomo.org/。
一、需要:
1、Nginx:1.6.1
2、PHP:7.1
3、mysql:5.7.25
4、Matomo,国外网站下载要是太慢我这边,这边提供一个百度网盘:
链接:https://pan.baidu.com/s/1Q2EtGcC2Qg2kIUrM9sGZAw
提取码:ldm5
5、Centos7操作系统
上面nginx、mysql安装我这边就不说了,着重记录让我头疼的PHP和nginx配置。
二、PHP安装
1、将yum仓库包升级更换成PHP7的rpm包:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
2、查看版本信息
sudo yum search php71w
3、安装php以及扩展
sudo yum install php71w php71w-fpm php71w-cli php71w-common php71w-devel php71w-gd php71w-pdo php71w-mysql php71w-mbstring php71w-bcmath
4、开启服务
①、sudo service php-fpm start(不过这种启动方式会有权限问题)
②、sudo php-fpm -R
以上就是PHP环境搭建,讲真,我真不知道上面干了些什么事情。按步骤就好了。然后还有最重要的一点是要修改php-fpm服务为Matomo拥有者,比如我的nginx的user和Matomo的所有者都是admin。这个让我在权限这边耗时不少,操作如下:(记得要重启php-fpm服务)
sudo vim /etc/php-fpm.d/www.conf
三、Nginx配置访问php
其实这个在nginx默认的配置文件中就有,不过被注释了而已:
如果打开注释就可用正常访问php文件那就太棒了,然而我的并不行,而且我部署了一个测试环境,一个正式环境,两个配置都不一样!!!!
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream,报的都是它。
于是面向百度开发:
一种解决方案:
将以上配置中
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
改为:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
据说是因为设置了在location中设置了root的原因,这个配置解决了我生产上的问题。
第二种方案:
在这个location中最后一行增加:
include fastcgi.conf;
这个解决了测试环境上的问题。(可能是因为nginx小版本的问题,或者是nginx源不一样,有的nginx有fastcgi.conf这个文件,有的没有)
重启nginx,访问root上的php应该就可以了,
其余配置就是访问matomo的静态文件,在生产上我直接配置:
location / {
root /home/admin/matomo
}
因为没人公用nginx,所以肆无忌惮。(将Matomo的所有文件放到了matomo下)
zai测试环境上多人使用,么得法子,只好一个一个配置
location ~ (\.md|piwik\.js|matomo\.js|console|LEGALNOTICE|LICENSE)$ {
root /home/admin/matomo;
}
location ^~ /plugins/ {
root /home/admin/matomo;
}
location ^~ /config/ {
root /home/admin/matomo;
}
location ^~ /core/ {
root /home/admin/matomo;
}
location ^~ /js/ {
root /home/admin/matomo;
}
location ^~ /lang/ {
root /home/admin/matomo;
}
location ^~ /libs/ {
root /home/admin/matomo;
}
location ^~ /misc/ {
root /home/admin/matomo;
}
location ^~ /tests/ {
root /home/admin/matomo;
}
location ^~ /tmp/ {
root /home/admin/matomo;
}
location ^~ /vendor/ {
root /home/admin/matomo;
}
最后就是配置文件中的user设置成对应的用户,比如我设置为amdin,如果是nobody会有没权限访问。测试环境因为是共用所以设置成root,但也出现问题:nginx下载静态文件的时候会建立缓存,至于这个缓存文件的归属与哪个用户不一定,我用admin的时候出现权限问题,后来发现有的时候缓存归属于root有的时候归属于admin,出现没权限访问。
至此nginx配置完成,顺利的话就可以看到首次登录时的配置界面
三、配置Matomo:
首次配置需要配置数据,先在mysql中建一个Matomo使用的数据库。(这边没有截图,但是很简单,按照提示就可以完成了)
总结:1、不熟悉php让我最是烧心。
2、linux的权限问题也是和重要,在生产上配置的时候php文件正常访问,静态文件死活访问不了,后来发现生产上SELinux设置为开启状态(enabled)的原因。
查看当前selinux的状态:
①、/usr/sbin/sestatus,②、getenforce
解决方案
①、setenforce 0,关闭selinux,这种临时关闭,服务器重启后失效
②、vim /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,永久关闭,但是得重启服务!