N'oublier pas de restaurer le fichier de configuration « config/config.ini.php ». Mais ne réactivez pas encore le tracking.
FTP
Télécharger la nouvelle version de PIWIK et l'envoyer sur le FTP en remplaçant les anciens fichiers.
Veiller à ce que le transfert FTP se fasse en mode BINAIRE.
SSH
wget http://builds.piwik.org/latest.zip # download latest versioncd /srv/http # se rendre là où se trouve le dossier piwik
7z x latest.zip # extraire l'archiverm latest.zip How\ to\ install\ Piwik.html # supprimer l'archive et le fichier d'aide
MAJ de la base de données
Aller sur la page d'accueil de votre PIWIK, un lien vous permettant de mettre à jour la BdD sera disponible.
N'oublier pas de réactiver le tracking.
# en ligne de commande
php /usr/share/webapps/piwik/console core:update
Configuration
Support Do Not Track preference
Settings → Privacy → Support Do Not Track preference
Exclure des IPs
Settings → Websites → Global list of Excluded IPs
Version
Le fichier « piwik/core/Version.php » contient la version de piwik.
# Créer un log journalier dans nginx
access_log /var/log/nginx/mediawiki_access_daily.piwik;
/etc/logrotate.d/nginx
/var/log/nginx/mediawiki_access_daily.piwik {
# archive le log tous les jours à 00h00
daily
# conserve 7 archives
rotate 7
# ajoute la date aux noms des archives
dateext
# format par défaut de la date: -%Y%m%d
dateformat -%Y-%m-%d
# ajoute la date avant l'extension
extension .piwik
missingok
create 640 http log
su http log
compress
postrotate
test ! -r /run/nginx.pid || kill -USR1 `cat /run/nginx.pid`
endscript
}
crontab
# tous les jours à 1:00
0 1 * * * import_piwik_log_and_archive.sh
#!/bin/bashset -e
set -o pipefail
set -u
log_file='/var/log/nginx/bananeatomic_access.log'
nb_of_lines_to_skip=0
if [[ -r .piwik-skip ]] ; then
nb_of_lines_to_skip=$(cat .piwik-skip)
fi
nb_of_lines_in_the_log_file=$(wc -l < $log_file)
# si il n'y a pas eu de nouvelles entrées dans le log on ne fait rienif [[ $nb_of_lines_to_skip -eq $nb_of_lines_in_the_log_file ]] ; thenexit 0
# si il le log a été archivéelif [[ $nb_of_lines_to_skip -gt $nb_of_lines_in_the_log_file ]] ; then
nb_of_lines_to_skip=0
fiecho$nb_of_lines_in_the_log_file > .piwik-skip
python2 /srv/http/piwik/misc/log-analytics/import_logs.py \
--url=http://piwik.mon-domain.fr \
"$log_file" \
--recorders=4 \
--exclude-path="/load.php" \
--exclude-path="/api.php" \
--skip=$nb_of_lines_to_skip# déclencher manuellement l'archivage / la création des rapports
su http -m -c "/usr/bin/php /srv/http/piwik/console core:archive --url=http://piwik.mon-domain.fr"# « http » n'ayant pas le droit de se connecter à un shell, il faut utiliser l'option « -m »
Confidentialité
Créer un lien vers « http://monsite/piwik/index.php?module=CoreAdminHome&action=optOut&language=fr » pour créer un cookie signifiant à Piwiki de ne pas collecter les données.
# Mettre à jour la base de données :
/usr/bin/php /srv/http/piwik/console usercountry:attribute 2015-01-01,2016-01-01
# Reconstruire les rapports
/usr/bin/php /srv/http/piwik/console core:archive --force-all-websites --force-all-periods=315576000 --force-date-last-n=1000 --url=http://piwik
# supprimer toutes les tables commençant par archive_select concat('drop table ', group_concat(table_name), ';')
from information_schema.tables where table_schema ='piwik_db'and table_name like'archive_%';
# DROP TABLE archive_*;DELETEFROM log_visit WHERE idsite =1;
DELETEFROM log_link_visit_action WHERE idsite =1;
DELETEFROM log_conversion WHERE idsite =1;
DELETEFROM log_conversion_item WHERE idsite =1;
wget https://builds.matomo.org/matomo.zip
unzip matomo.zip
rm -f matomo.zip How\ to\ install\ Matomo.html
sudo mv matomo /var/www
sudo chown -R root:root /var/www/matomo
sudo chown www-data:www-data /var/www/matomo/tmp
sudo chown -R www-data:www-data /var/www/matomo/config # only for the installation# after the installation, reset access rights to the config folder
sudo chown -R root:root /var/www/matomo/config
# but allow to modifiy the config.ini.php file
sudo chown www-data:www-data /var/www/matomo/config/config.ini.php
/etc/nginx/sites-available/matomo.conf
server {
server_name matomo.localserver;
listen80;
root /var/www/matomo;
index index.php;
allow192.168.0.0/24;
deny all;
access_log /var/log/nginx/matomo-access.log;
error_log /var/log/nginx/matomo-error.log;
location~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
Nginx et uwsgi
/etc/nginx/nginx.conf
server {
listen 80;
server_name piwik;
root /usr/share/webapps/piwik;
index index.php;
location ~ \.php$ {
include uwsgi_params;
uwsgi_modifier1 14;
uwsgi_pass unix:/run/uwsgi/piwik.sock;
}
}
/etc/uwsgi/piwik.ini
[uwsgi]; loglogger = file:/var/log/uwsgi/%n.log
; maximum number of worker processesprocesses = 40; start with only 4 and spawn the others on demand, maintaining a minimal pool of 4 processes.cheaper = 1; the user and group id of the process once it’s starteduid = http
gid = http
master = truesocket = /run/uwsgi/%n.sock
chdir = /usr/share/webapps/%n
; clear environment on exitvacuum = true; phpplugins = php
php-docroot = /usr/share/webapps/%n
php-index = index.php
php-allowed-ext = .php
; For some mysterious reason, the opcode cache is disabled in the embed SAPI.; You can bypass the problem by telling the PHP engine that is running under the apache SAPIphp-sapi-name = apache
; extensionsphp-set = extension=pdo_mysql.so
php-set = extension=iconv.so
php-set = extension=geoip.so
; php configphp-set = open_basedir=/usr/share/webapps/piwik/:/tmp/:/usr/share/GeoIP/
php-set = iconv.input_encoding=ISO-8859-1php-set = iconv.internal_encoding=ISO-8859-1php-set = iconv.output_encoding=ISO-8859-1; To give Piwik enough memory to process your web analytics reports, increase the memory limit to 512Mphp-set = memory_limit=512M
; define the GeoIP directoryphp-set = geoip.custom_directory=/usr/share/GeoIP/
Database Setup
CREATE DATABASE `piwik_db` DEFAULTCHARACTERSET utf8 COLLATE utf8_general_ci;
CREATEUSER'piwik_user'@'localhost' IDENTIFIED BY'mot de passe';
GRANTALLON `piwik_db`.*TO `piwik_user`@`localhost`;
# LOAD DATA INFILEshow grants for'piwik_user'@'localhost';
# GRANT USAGE ON *.* TO 'piwik_user'@'localhost' IDENTIFIED BY PASSWORD 'xxx'grant file on*.*TO'piwik_user'@'localhost';
show grants for'piwik_user'@'localhost';
# GRANT FILE ON *.* TO 'piwik_user'@'localhost' IDENTIFIED BY PASSWORD 'xxx'
Database Server
localhost
Login
piwik_user
Database Name
piwik_db
Adapter
PDO\MYSQL
# LOAD DATA INFILEchown http:mysql /usr/share/webapps/piwik/tmp/assets
FTP
Télécharger l'archive, la désarchiver et transférer le dossier sur le serveur via FTP en mode BINAIRE (important sinon la vérification de l'intégrité des fichiers ne marche pas).
Suivre les étapes ...
Pour le login et le mot de passe Piwik, il est plus aisé de réutiliser le mot de passe de l'utilisateur MediaWiki
Le code JavaScript :
il peut être coller dans le fichier « skins/MonoBook.php » juste avant echo Html::closeElement( 'body' );
mais l'utilisation de l'extension FooterManager permet d'ajouter des scripts dans le footer
Erreurs
Can't get stat of '/usr/share/webapps/piwik/tmp/assets/option-xx.csv' (Errcode: 13 "Permission denied")
Administration → Diagnostic → System Check → Database abilities: LOAD DATA INFILE
# le dossier assets n'est pas accessible par mysql
ll /usr/share/webapps/piwik/tmp/assets
# drwxr-x---chmod o+rx /usr/share/webapps/piwik/tmp/assets
ll /usr/share/webapps/piwik/tmp/assets
# drwxr-xr-x
The mysql driver is not currently installed
Décommentez la ligne suivante
/etc/php/php.ini
extension=pdo_mysql.so
# redemarrez le serveur
sudo systemctl restart httpd
SQLSTATE[HY000] [2002] Connection refused
Mauvais hôte, identifiant ou mot de passe.
Essayez localhost au lieu de 127.0.0.1
You need to configure and rebuild PHP with "iconv" support enabled, --with-iconv