Installer GEOIP sur un serveur PHP NGINX

MaxMind fournit des renseignements sur la localisation des adresses IP, sous la marque commerciale GeoIP.  Grâce aux données GeoIP, les entreprises peuvent en apprendre davantage sur la rapidité des connexions de leurs clients, sur leurs fournisseurs d’accès Internet (ou FAI) et plus. Le service n’est pas lié au système de géolocalisation.

GeoIP sur un serveur LEMP
GeoIP sur un serveur LEMP

Par défaut, le module GeoIP n’est pas installé avec le serveur PHP NGINX. Pour vérifier si le module est présent, on entre:

Et l’on vérifie dans la liste des arguments configurés, la présence de  --with-http_geoip_module .

Si ce n’est pas le cas, deux solutions sont possibles:

  • Soit on installe GeoIP à l’aide de Composer (meilleure pratique),
  • Soit on compile le module Nginx GEOIP.

De plus, sur Ubuntu, il y a le paquet geoip-database qui peut être installé avec apt, mais il n’est pas à jour, il contient seulement la base GEOIP.dat (pays), il manque la base des villes GeoLiteCity.dat.

Installation de GeoIP à l’aide de Composer:

Si Composer n’est pas installé, suivre le tutoriel d’installation de Composer. C’est aujourd’hui la meilleure pratique pour inclure une librairie dans un projet.

Installation de GeoIP
Installation de GeoIP

On télécharge les binaires (bases de données):

On utilise ensuite GeoIP dans son fichier PHP:

Compilation du module Nginx GeoIP:

Les données de GeoIP seront accessibles dans le tableau $_SERVER ( ex: $_SERVER[ ‘GEOIP_CITY’ ] )

Pour ajouter un module externe à Nginx, Nginx doit être compilé, c’est-à-dire être installé à partir des sources. Le désavantage d’installer Nginx à partir des sources est qu’il ne donne pas la possibilité d’utiliser les fonctions system start/stop et les fichiers log. Afin d’obtenir les mêmes possibilités que s’il avait été installé à partir d’un package, il faut suivre les étapes suivantes:

  • Ajouter le dépot Nginx PPA:
  • On édite le fichier de source de PPA:

    Et l’on ajoute les lignes suivantes:

    Et on lance un update de apt-get:
  • On peut maintenant obtenir le paquet source Nginx, le configurer, le compiler et l’installer:
  • Pour installer un nouveau module, on ouvre le fichier /opt/rebuildnginx/nginx-1.10.1/debian/rules et l’on ajoute le module dans full_configure_flags:
  • On sauve et on construit le paquet:
  • Installer Nginx:
    À partir de maintenant, on trouve un tas de fichier .deb dans le répertoire /opt/rebuildnginx/:

Pour que le tableau $_SERVER contiennent les variables GeoIP, on les ajoute aux paramètres fastcgi.

On relance Nginx et php7.0-fpmsystemctl restart nginx et systemctl restart php7.0-fpm .

Et hop, on intègre Geoip à Nginx. On peut faire de même pour intégrer n’importe quel module. On le télécharge, et l’on recompile Nginx en ajoutant –add-module={$chemin}.

Soumettre un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *