Installation von mod_geoip für Lighttpd auf Fedora 9

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht, wie man mod_geoip mit lighttpd auf einem Fedora 9 System aufsetzt. mod_geoip schlägt die IP Adressen des Client Endbenutzers nach. Damit kannst Du Benutzer basierend auf ihrer Herkunft umleiten oder blocken. Du kannst diese Technologie auch für Dein OpenX (früher bekannt als OpenAds oder phpAdsNew) ad Server verwenden um geo targeting zu erlauben.

Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

Ich gehe davon aus, dass Du ein funktionstüchtiges Fedora 9 System mit lighttpd und PHP hast.

2 Installation von mod_geoip

Um mod_geoip für lighttpd zu installieren, führen wir einfach Folgendes aus:

yum install lighttpd-mod_geoip

Öffne dann /etc/lighttpd/lighttpd.conf und füge "mod_geoip", dem server.modules Bereich hinzu; füge weiterhin den geoip.db-filename und die geoip.memory-cache Direktiven unterhalb des server.modules Bereiches hinzu:

vi /etc/lighttpd/lighttpd.conf


[...]
server.modules = ( # "mod_rewrite", # "mod_redirect", # "mod_alias", "mod_geoip", "mod_access", # "mod_cml", # "mod_trigger_b4_dl", # "mod_auth", # "mod_status", # "mod_setenv", "mod_fastcgi", # "mod_proxy", # "mod_simple_vhost", # "mod_evhost", # "mod_userdir", # "mod_cgi", # "mod_compress", # "mod_ssi", # "mod_usertrack", # "mod_expire", # "mod_secdownload", # "mod_rrdtool", "mod_accesslog" ) geoip.db-filename = "/usr/share/GeoIP/GeoIP.dat" geoip.memory-cache = "enable" [...]
Du findest die GeoIP Datenbank (GeoIP.dat) im /usr/share/GeoIP Verzeichnis. Da sich die geografische Zuordnung von IP Adressen mit der Zeit ändern kann, ist es keine schlechte Idee, die neuste GeoIP.dat runter zu laden:

cd /usr/share/GeoIP/
mv GeoIP.dat GeoIP.dat_orig
wget http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
gunzip GeoIP.dat.gz

Starte lighttpd neu:

/etc/init.d/lighttpd restart

Das war es schon!

3 Ein kurzer Test

Um herauszufinden, ob mod_geoip richtig funktioniert, können wir eine kleine PHP Datei in einem unserer Web Spaces erstellen (z.B. /var/www/lighttpd) (natürlich muss PHP in Deiner lighttpd Installation aktiviert sein):

vi /var/www/lighttpd/geoiptest.php


<?php
print_r($_SERVER); ?>
Rufe diese Datei in einem Browser auf. Das SERVER Array inklusive der Werte für GEOIP_COUNTRY_CODE, GEOIP_COUNTRY_CODE3 und GEOIP_COUNTRY_NAME (pass auf, dass Du die Datei von einer öffentlichen IP Adresse und nicht von einer lokalen Adresse aus aufrufst) sollte angezeigt werden.

Array
(
[HOSTNAME] => server1.example.com
[TERM] => xterm
[SHELL] => /bin/bash
[HISTSIZE] => 1000
[SSH_CLIENT] => 192.168.0.24 3419 22
[QTDIR] =>
[QTINC] => /include
[SSH_TTY] => /dev/pts/0
[USER] => root
[LS_COLORS] => ...
[CCACHE_DIR] => /var/cache/ccache
[MAIL] => /var/spool/mail/root
[PATH] => /sbin:/usr/sbin:/bin:/usr/bin
[INPUTRC] => /etc/inputrc
[PWD] => /usr/share/GeoIP
[CCACHE_UMASK] => 002
[LANG] => en_US.UTF-8
[SHLVL] => 3
[HOME] => /root
[LOGNAME] => root
[QTLIB] => /lib
[CVS_RSH] => ssh
[SSH_CONNECTION] => 192.168.0.24 3419 192.168.0.100 22
[LESSOPEN] => |/usr/bin/lesspipe.sh %s
[G_BROKEN_FILENAMES] => 1
[_] => /usr/sbin/lighttpd
[PHP_FCGI_CHILDREN] => 1
[FCGI_ROLE] => RESPONDER
[SERVER_SOFTWARE] => lighttpd/1.4.19
[SERVER_NAME] => 84.143.142.69
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PORT] => 80
[SERVER_ADDR] => 192.168.0.100
[REMOTE_PORT] => 59559
[REMOTE_ADDR] => 84.143.142.69
[SCRIPT_NAME] => /geoiptest.php
[PATH_INFO] =>
[SCRIPT_FILENAME] => /var/www/lighttpd/geoiptest.php
[DOCUMENT_ROOT] => /var/www/lighttpd/
[REQUEST_URI] => /geoiptest.php
[QUERY_STRING] =>
[REQUEST_METHOD] => GET
[REDIRECT_STATUS] => 200
[SERVER_PROTOCOL] => HTTP/1.1
[HTTP_HOST] => 84.143.142.69
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
[HTTP_ACCEPT] => ...
[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 300
[HTTP_CONNECTION] => keep-alive
[GEOIP_COUNTRY_CODE] => DE
[GEOIP_COUNTRY_CODE3] => DEU
[GEOIP_COUNTRY_NAME] => Germany
[PHP_SELF] => /geoiptest.php
[REQUEST_TIME] => 1211821794
)

Wenn Du lighttpd + mod_geoip für Deinen OpenX ad Server verwenden möchtest, vergewissere Dich, dass Du MaxMind mod_apache GeoIP unter Settings > Main Settings > Geotargeting Settings auswählst. Das funktioniert auch bei lighttod + mod_geoip.

4 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte