Arhiva etichetelor: IP

instalare modul geoip apache si extensie php geoip

Aveti un magazin online gazduit de Nettissimo. Doriti sa afisati oferte speciale pentru vizitatorii din Bucuresti si alte oferte speciale pentru cei din Cluj. Sau doriti poate sa afisati un mesaj in spaniola pentru vizitatorii din Spania. Am luat in considerare acest aspect.

Pe serverele Nettissimo am instalat baza de date GeoIP de la MaxMInd (versiunea gratuita) care permite cu acurateţe identificarea ţării / localitaţii vizitatorilor paginilor clienţilor în funcţie de adresa de IP a conexiunii de internet a acestora.

Aceasta permite webmaster-ilor să optimizeze paginile şi să direcţioneze anumite mesaje comerciale în funcţie de zona geografică a publicul ţintă.

Webmasterii pot scrie instrucţiuni pentru serverul Apache in fişierele .htaccess instalate pe site-urile pe care le administrează sau pot folosi funcţiile din extensia php pentru baza de date GeoIP.

Pentru webmasteri: instalarea este relativ simplă. Serverele Nettissimo rulează pe centos şi cpanel. CPanel nu suportă oficial în distribuţie modulul geoip pentru apache, dar îl pune la dispoziţie. Aici lecţia pentru instalarea prin easypache.

Noi am preferat instalarea manuală pentru a avea la dispoziţie ultimele funcţionalităţi. Nu am folosit yum pentru librăria geoip deoarece am remarcat că la instalarea modulului apache dă eroare. Am compilat manual librăria (ultima ediţie):

  • Am descărcat librăria de pe maxmind.com, am dezarhivat-o, am intrat in directorul respectiv şi am efectuat instalarea.

cd /root

wget http://www.maxmind.com/download/geoip/api/c/GeoIP-1.4.8.tar.gz

tar xvzf GeoIP-1.4.8.tar.gz

cd GeoIP-1.4.8

./configure; make; make install

  • Am creat un director pe server, am descărcat ultimele baze de date de la maxmind şi le-am dezarhivat:

mkdir /usr/local/share/GeoIP

cd /usr/local/share/GeoIP

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

gunzip GeoIP.dat.gz
gunzip GeoLiteCity.dat.gz

  • am instalat:

yum install httpd-devel apr-devel

cd /root

wget http://www.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.8.tar.gz

tar xvzf mod_geoip2_1.2.8

cd mod_geoip2_1.2.8

apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c

  • extensia php geoip nu este disponibilă în pachetul de baza php ci in biblioteca pecl:

pecl install geoip

În php.ini am verificat că este activă extensia şi adăugat o instrucţiune cu drumul către bazele de date:

extension=geoip.so

[geoip]

geoip.custom_directory=/usr/local/share/GeoIP/

Datorită unui bug al extensiei pecl a trebui să copiez baza de date cu oraşe cu un alt nume:

cd /usr/local/share/GeoIP

cp GeoLiteCity.dat GeoIPCity.dat

Conform cu ce scrie pe pagina maxmind baza de date cu adrese IP se actualizează în prima marţi din fiecare lună. Administratorii de servere pot scrie un script shell care să descarce bazele de date, să le dezarhiveze, să recopieze baza de date cu oraşe ca să poată funcţiona extensia php. Acest script îl vor trece în sarcinile periodice ale serverului respectiv (cron jobs)..

 

 

.