Maxmind GeoIP mit der php-geoip unter FreeBSD

Die php-geoip Extension bietet viele nützliche Funktionen. Alles dazu gibts im PHP Manual. Hier beschreibe ich nur die Installation der einzelnen Komponenten unter FreeBSD.

Installation Library libgeoip

cd /usr/ports/net/GeoIP
make install clean

Installation PECL geoip Package

Weitere Informationen zum Package gibts hier: PECL::geoip.

Erstmal den Source runterladen:

cd /usr/local/software/
mkdir geoip
cd geoip
fetch http://pecl.php.net/get/geoip
tar xzfv geoip
rm geoip

Installieren

cd geoip-1.0.8/
phpize
./configure
make
make test
make install

Sollte nun installiert sein:

Installing shared extensions:     /usr/local/lib/php/20090626/

Wenn extensions.ini nicht automatisch angepasst wurde, hier geoip noch manuell eintragen:

vi /usr/local/etc/php/extensions.ini 

einfügen:

extension=geoip.so

nun kurz php auf segfault testen:

php -v

Wenn alles i.o. ist, php neu starten:

/usr/local/etc/rc.d/php-fpm restart

GeoIP Datenbanken installieren

Von Maxmind gibt es kostenpflichte (mit genaueren Daten) aber auch kostenlose Light Datenbanken. Diese kannst Du hier runterladen.

Als erstes ein Verzeichnis bestimmtn, wo die Datenbank gespeichert werden soll. In der Regel wäre das sowas wie /usr/local/share/GeoIP.  In meinem Beispiel hab ich jedoch ein anderes Verzeichnis gewählt:

mkdir /www/server/SH_includes/_PEAR/share/pear/Net/GeoIP/db
 

Shell Script

Nun den Script erstellen, der die aktuellste DB runterladet:

Dabei ist ganz wichtig, dass man GeoLiteCity.dat in GeoIPCity.dat umbenennt, da sonst die DB nicht von PECL erkannt wird!

vi /global/cronjobs/global/geoip.sh
 
Script:
#! /bin/sh
# update geoip database
# http://www.maxmind.com/app/geoip_country
# diese werden in der regel am 1. des monats aktualisiert zur verfügung gestellt.
#
#
GEOIPDIR=/www/server/SH_includes/_PEAR/share/pear/Net/GeoIP/db


cd $GEOIPDIR

echo "downloading geoip data..."
fetch http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

        if [ -f $GEOIPDIR/GeoIP.dat.gz ] ;
        then
                echo "download successful - unpacking..."
                mv GeoIP.dat GeoIP.dat.bkp
                gunzip GeoIP.dat.gz
        else
                echo "download of geoip failed..."
        fi

echo "downloading geocity data..."
fetch http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
        if [ -f $GEOIPDIR/GeoLiteCity.dat.gz ] ;
        then
                echo "download successful - unpacking..."
                mv GeoIPCity.dat GeoIPCity.dat.bkp
                gunzip GeoLiteCity.dat.gz
                mv GeoLiteCity.dat GeoIPCity.dat
        else
                echo "download of geoip CITY failed..."
        fi

echo "done"
Script ausführbar machen:
chmod 775 /global/cronjobs/global/geoip.sh
 

Cronjob

Jetzt noch Cronjob einrichten:
#download geoip data - immer am 2. des monats
1       3       2       *       *       /global/cronjobs/global/geoip.sh

php.ini

Im php.ini kann man jetzt noch den Pfad zur DB speichern:
vi /usr/local/etc/php.ini
[geoip]
geoip.custom_directory = /www/server/SH_includes/_PEAR/share/pear/Net/GeoIP/db
 

Flattr this!

  • *

    Du kannst diese HTML tags verwenden: <a> <abbr> <acronym> <b> <blockquote> <cite> <code> <del> <em> <i> <q> <s> <strike> <strong>

  • Kommentar-Feed für diesen Beitrag
nach oben