Outils personnels
Vous êtes ici : Accueil GNU / Linux Debian Installer Piwik (anciennement PhpMyVisites) sur Debian
Actions sur le document
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Installer Piwik (anciennement PhpMyVisites) sur Debian

Par Pierre-Yves Landuré - Dernière modification 19/12/2012 19:52

Piwik est un outil de statistiques de fréquentation qui souhaite faire concurrence à Google Analytics. Ce guide vous explique comment l'installer sur Debian.

Ce guide est obsolète. Reportez-vous à la nouvelle version disponible sur le Help Desk Biapy:

 Installer l'outil d'analyse Web Piwik sur Debian

Pré-requis

Ce guide nécessite un serveur MySQL disposant du script mysql-tools disponible dans le guide Installer et configurer MySQL sur Debian.

Ce guide nécessite un serveur HTTP avec support du PHP disposant au choix d'un des scripts suivant :

Paramètres

Renseignez le nom de domaine ou sera disponible l'application :
DOMAIN="piwik.domaine-exemple.fr"

Renseignez le nom d'hôte de votre serveur MySQL (si vous ne savez pas de quoi il s'agit, ne modifiez pas cette valeur) :

MYSQL_HOST="localhost"

Si votre serveur MySQL n'est pas local, ce guide effectuera une connexion SSH pour y créer la base de données.

Installation

Installez les logiciels et modules PHP nécessaires à l'installation et au bon fonctionnement de l'application :

command apt-get install apg unzip php5-mysql \
    php5-gd php5-cli

Augmentez la limite mémoire de PHP :

MEMORY_LIMIT="128M"
if [ -e "/etc/php5/conf.d/memory-limit.ini" ]; then
  CURRENT_MEMORY_LIMIT=$(command grep 'memory_limit' /etc/php5/conf.d/memory-limit.ini \
        | command cut --delimiter='=' --fields='2-' \
        | command sed -e 's/^[ \t]*//g')
  if [ "$(echo "${CURRENT_MEMORY_LIMIT}" | command sed -e 's/M$//g')" \
       -gt "$(echo "${MEMORY_LIMIT}" | command sed -e 's/M$//g')" ]; then
    MEMORY_LIMIT="${CURRENT_MEMORY_LIMIT}"
  fi
fi
echo "; Memory limit for PHP scripts.
memory_limit = ${MEMORY_LIMIT}" > "/etc/php5/conf.d/memory-limit.ini"

Augmentez la taille maximum des paramètres de GET :

echo "; Piwik PHP configuration.
suhosin.request.max_value_length = 2048
suhosin.get.max_value_length = 2048
" > "/etc/php5/conf.d/piwik.ini"

Redémarrez votre serveur HTTP :

command test -x "/etc/init.d/lighttpd" && /etc/init.d/lighttpd force-reload
command test -x "/etc/init.d/apache2" && /etc/init.d/apache2 force-reload

Téléchargez la dernière version de l'application :

command wget "http://piwik.org/latest.zip" \
    --output-document="/tmp/piwik.zip"

Décompressez l'archive :

command unzip -d "/tmp" "/tmp/piwik.zip" "piwik/*"

Supprimez l'archive :

command rm "/tmp/piwik.zip"

Déplacez le dossier obtenu vers son emplacement final :

command mv "/tmp/piwik/" "/opt/${DOMAIN}"

Mettez en place une architecture de dossier conforme à la LSB :

command mkdir "/var/cache/piwik"
if [ -d "/opt/${DOMAIN}/tmp" ]; then
  command mv "/opt/${DOMAIN}/tmp" "/var/cache/piwik/${DOMAIN}"
  command chown -R www-data:www-data "/var/cache/piwik/${DOMAIN}"
  command ln -s "/var/cache/piwik/${DOMAIN}" "/opt/${DOMAIN}/tmp"
fi

Autorisez l'application à modifier ses fichiers de configuration :

command chown -R www-data:www-data "/opt/${DOMAIN}/config"

Créez la configuration du serveur HTTP pour votre domaine :

if [ -x "/usr/bin/a2tools" ]; then
  command a2tools add-vhost "${DOMAIN}" "/opt/${DOMAIN}/"
fi
if [ -x "/usr/bin/lighty-tools" ]; then
  command lighty-tools add-vhost "${DOMAIN}" "/opt/${DOMAIN}/"
fi

Votre installation de Piwik devrait maintenant être disponible sur le nom de domaine que vous avez spécifié.

Création de la base de données

Avant de vous lancez dans la configuration de Piwik, créez la base de données :

if [ "${MYSQL_HOST}" = "localhost" ]; then
  command mysql-tools create-domain-db "${DOMAIN}"
else
  command echo "Saisissez le mot de passe de l'utilisateur root MySQL :"
  command read PASSWORD
  command ssh "root@${MYSQL_HOST}" "command mysql-tools create-domain-db '${DOMAIN}' '$(command cat /etc/mailname)' '${PASSWORD}'"
fi

Notez les informations de connexion fournies par la commande.

Configuration de Piwik

Accédez à la configuration de Piwik en utilisant l'URL affichée par la commande :

echo "http://${DOMAIN}/"

Configurez Piwik pour utilisez la base de données crée ci-avant.

Important : Afin d'améliorer la sécurité contre les attaques par injection SQL, modifiez le préfixe des tables par une valeur aléatoire fournie par cette commande :

echo "Table prefix for Piwik : $(command apg -q -a  0 -n 1 -M NCL)_"

De même, vous pouvez obtenir un mot de passe aléatoire pour le compte d'administration :

echo "Admin account password : '$(command apg -q -a  0 -n 1 -M NCL)'"

Fin de la configuration

Une fois l'application correctement configurée, renforcez sa sécurité en retirant l'accès en écriture au dossier config :

command chown -R root:root "/opt/${DOMAIN}/config"

Auto-archivage des données

Si vos sites génèrent beaucoup de trafic, il est préférable de configurer l'archivage régulier des données afin que ces dernières soient exploitables depuis l'interface de Piwik.

Configurez le script d'archivage de Piwik dans le dossier cron.hourly afin qu'il soit exécuté toutes les heures :

CLEAN_DOMAIN="$(echo "${DOMAIN}" | command tr '.' '-')"
echo -e "# Hourly archiving for ${DOMAIN}.
0 *    * * *    www-data    test -f /opt/${DOMAIN}/misc/cron/archive.sh -a -x /bin/sh && /bin/sh /opt/${DOMAIN}/misc/cron/archive.sh > /dev/null" \
  > "/etc/cron.d/${CLEAN_DOMAIN}"
/etc/init.d/cron reload

Vérifiez que le script d'archivage fonctionne correctement:

su www-data -c "/bin/sh /opt/${DOMAIN}/misc/cron/archive.sh"

Désactivation de l'archivage par l'interface Web

Si vous avez vraiment beaucoup de visiteurs, il est recommandé de désactiver l'archivage des données lorsqu'un utilisateur utilise l'interface Web :

if [ -z "$(command grep "[General]" "/opt/${DOMAIN}/config/config.ini.php")" ]; then
 /bin/echo "
[General]" >> "/opt/${DOMAIN}/config/config.ini.php"
fi
/bin/echo "
time_before_archive_considered_outdated = 3600
enable_browser_archiving_triggering = false" \
  >> "/opt/${DOMAIN}/config/config.ini.php"

Forcer l'utilisation du HTTPS pour l'identification

Si vous le souhaitez,  forcez l'utilisation du protocole HTTPS pour l'identification de vos utilisateurs :

if [ -z "$(command grep "[General]" "/opt/${DOMAIN}/config/config.ini.php")" ]; then
 /bin/echo "[General]
" >> "/opt/${DOMAIN}/config/config.ini.php"
fi
/bin/echo "
force_ssl_login=1" \
  >> "/opt/${DOMAIN}/config/config.ini.php"

Configurer Piwik pour fonctionner correctement derrière un Reverse Proxy Apache 2

Si vous utilisez un reverse proxy Apache 2, configurez Piwik pour récupérer l'adresse IP des visiteurs dans l'entête HTTP XForwardedFor :

if [ -z "$(command grep "[General]" "/opt/${DOMAIN}/config/config.ini.php")" ]; then
 command echo "[General]
" >> "/opt/${DOMAIN}/config/config.ini.php"
fi
command echo "
proxy_client_headers[] = HTTP_X_FORWARDED_FOR" \
  >> "/opt/${DOMAIN}/config/config.ini.php"

Si votre reverse proxy supporte le HTTPS, indiquez le à Piwik :

if [ -z "$(command grep "[General]" "/opt/${DOMAIN}/config/config.ini.php")" ]; then
 command echo "[General]
" >> "/opt/${DOMAIN}/config/config.ini.php"
fi
command echo "
assume_secure_protocol = 1" \
  >> "/opt/${DOMAIN}/config/config.ini.php"

Sauvegardes

Pour sauvegarder l'application, je vous propose d'utiliser Backup Manager. Pour l'installer, vous pouvez suivre mon guide:

Installer et configurer Backup Manager sur Debian

Une fois Backup Manager installé, vous pouvez configurer la sauvegarde des fichiers avec la commande suivante:

command update-bm-folders add "/opt/${DOMAIN}"

Important: Sauvegarder les fichiers ne suffit pas ! Il faut aussi sauvegarder la base de données. La procédure pour ce faire est disponible dans mon article MySQL sur Debian.

Mise à jour

Renseignez le chemin de l'installation Piwik que vous souhaitez mettre à jour :

PIWIK_PATH="/opt/piwik.domaine.com"

Nettoyez le chemin :

PIWIK_PATH="$(echo "${PIWIK_PATH}" | sed -e 's|/$||g')"

Téléchargez la dernière version de Piwik:

command wget 'http://piwik.org/latest.zip' \
    --output-document='/tmp/piwik.zip'

Décompressez l'archive ainsi obtenue:

command unzip -d '/tmp' '/tmp/piwik.zip'

Récupérez le fichier de configuration et le dossier cache :

command cp -a "${PIWIK_PATH}/config/config.ini.php" "/tmp/piwik/config/"
command rm -r "/tmp/piwik/tmp"
command cp -a "${PIWIK_PATH}/tmp" "/tmp/piwik/tmp"

Déplacez l'ancienne version de Piwik:

command mv "${PIWIK_PATH}" "${PIWIK_PATH}.old"

Mettez en place la nouvelle version :

command mv "/tmp/piwik" "${PIWIK_PATH}"
Mettez à jour la base de données :
command php "${PIWIK_PATH}/index.php" -- "module=CoreUpdater"

Votre version de Piwik devrait maintenant être à jour. Redémarrez votre serveur Web pour vider l'éventuel cache PHP si nécessaire :

command test -x /etc/init.d/lighttpd && /etc/init.d/lighttpd force-reload
command test -x /etc/init.d/apache2 && /etc/init.d/apache2 force-reload

Une fois que vous vous êtes assuré que tout fonctionne correctement, vous pouvez effacer les anciens fichiers:

command rm "/tmp/piwik.zip"
command rm -r "${PIWIK_PATH}.old"

Remerciements

Piwik google analytics

Posté par schumi1664 le 27/01/2012 19:18
Piwik autant que google analytics sont vite balayés avec Gostery (extension safari)

BlogBang
Navigation
 

Réalisé avec Plone

Ce site respecte les normes suivantes :

Wikio