Développement de sites internet sur mesure. Étude, devis, entretien à distance ou réunion sur site, il suffit de nous contacter !

Digital Dynamics

Partenaire de votre développement numérique

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:
Dans la console:
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:
Dans la console:
# 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.
Contenu du fichier "geoip_update.sh"
# Votre code#!/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):
Dans la console:
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 faisceau horaire.
Dans la console:
# Ouvrir crontab dans la console:
crontab -e
# Dans crontab taper la commande suivante:
5 8 * * 3 [ `date +\%d` -le 7 ] && /root/geoip_update.sh
# Ctrl + 'x' pour quitter crontab et 'O' ou 'Y' pour sauvegarder et installer l'instruction