Dernière mise à jour : Mar. 18 Oct. 2016 22:44
Installer GeoIP et exécuter sa mise à jour automatiquement
Qu'est-ce que GeoIP ?
GeoIP est une extension de PHP permettant de géolocaliser une adresse IP ou un nom de domaine. Cette extension, bien que très utile, n'est pas compilée par défaut avec PHP.
Pour pouvoir utiliser ses fonctions, il faut d'abord installer l'extension, puis mettre à jour la base de données.
Comment installer GeoIP sur un serveur Debian ou Ubuntu ?
Pour installer GeoIP, il suffit d'aller dans la console et d'entrer les commandes suivantes:
su
# ou sudo sous ubuntu pour entrer en mode administrateur
apt-get update
# on met à jour la liste des paquets
apt-get install php5-geoip
Mise à jour de la base de données
La géolocalisation des adresses IP repose sur une base de données qui répertorie la totalité des plages d'adresses IP existantes et les associe à un pays, un région, une ville, et des coordonnées GPS. Cette base de données, de par la nature volatile des adresse IP, a besoin d'être régulièrement mise à jour. Ainsi, une mise à jour de la base est disponible le premier mardi de chaque mois.
Voici les commandes que nous allons effectuer la première fois:
# téléchargement de l'archive de la base
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# décompression de l'archive
/bin/gunzip GeoLiteCity.dat.gz
# on déplace la base vers son répertoire avec le nom GeoIPCity.dat (nom par défaut)
mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
# on redémarre apache
service apache2 restart
Création du fichier de mise à jour automatique
Pour la mise en place de la mise à jour automatique, nous allons créer un fichier bash nommé "geoip_update.sh" dans le répertoire "/root/" qui contiendra l'ensemble des opérations à effectuer et que nous allons exécuter une fois par mois à l'aide d'une tâche CRON.
Voici le contenu du fichier "geoip_update.sh":
#!/bin/bash
geoip_dir='/usr/share/GeoIP';
dat_file_url='http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz';
cd $geoip_dir;
/usr/bin/wget $dat_file_url;
mv -f GeoIPCity.dat GeoIPCity.dat.bak
/bin/gunzip GeoLiteCity.dat.gz
mv GeoLiteCity.dat GeoIPCity.dat
rm -f GeoLiteCity.dat.gz
Une fois enregistré, vous devez rendre le fichier exécutable.
Voici la commande à effectuer dans la console (une fois dans le répertoire du fichier):
chmod +x /root/geoip_update.sh
Mise en place de la tâche CRON
La base de données étant mise à jour le premier mardi de chaque mois, nous allons exécuter la tâche le premier mercredi de chaque mois à 8h05 pour éviter les problèmes de décalage de jour du au faisseau horaire.
# Ouvrir crontab dans la console:
crontab -e
# Dans crontab taper la commande suivante:
5 8 * * 3 root [ `date +%d` -le 7 ] && /root/geoip_update.sh
# Ctrl + 'x' pour quitter crontab et 'O' ou 'Y' pour sauvegarder et installer l'instruction