Digital Dynamics
L'informatique innovante et abordable

Dernière mise à jour : mer. 06 févr. 2019, 17:08

Installer GeoIP et exécuter sa mise à jour automatiquement

Importante mise à jour: ce tutoriel est devenu obsolète car GeoIP a été remplacé par GeoIP2.
Un nouveau tutoriel a été créé à cet effet: /FR/tutos/maxmind-maj-automatique-geoip2-nouvelle-api.html

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

 

L'informatique facile et expliquée