Installation von mod_geoip für Lighttpd auf Debian Etch - Seite 2

2 Die zweite Variante - mod_geoip aus den Quellen bauen

Wenn Du lighttpd selbst kompiliert hast, solltest Du eines der folgenden Kapitel wählen. Wenn Du lighttpd 1.4.x verwendest, folge Kapitel 2.1, für lighttpd 1.5.x verwende Kapitel 2.2.

2.1 lighttpd 1.4.x

Installiere zunächst alle Voraussetzungen:

apt-get install build-essential dpkg-dev fakeroot debhelper cdbs libssl-dev zlib1g-dev libbz2-dev libattr1-dev libpcre3-dev libmysqlclient15-dev libldap2-dev libfcgi-dev libgdbm-dev libmemcache-dev liblua5.1-0-dev dpatch patchutils pkg-config uuid-dev libsqlite3-dev libxml2-dev automake libtool libgeoip1 libgeoip-dev

Lade dann die lighttpd Quellen, die zu Deinem installierten lighttpd passen, runter, z.B. 1.4.13:

cd /usr/local/src/
wget http://www.lighttpd.net/download/lighttpd-1.4.13.tar.gz
tar -xzf lighttpd-1.4.13.tar.gz

cd lighttpd-1.4.13/src
wget -O mod_geoip.c http://trac.lighttpd.net/trac/attachment/wiki/Docs/ModGeoip/mod_geoip.5.c?format=raw

Öffne nun Makefile.am und füge nach der lib_LTLIBRARIES Zeile (sollte die lib_LTLIBRARIES += mod_accesslog.la Zeile sein) folgende Zeile ein:

vi Makefile.am


[...]
lib_LTLIBRARIES += mod_geoip.la mod_geoip_la_SOURCES = mod_geoip.c mod_geoip_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined mod_geoip_la_LIBADD = $(common_libadd) -lGeoIP [...]
So sollte es aussehen:
[...]
lib_LTLIBRARIES += mod_accesslog.la mod_accesslog_la_SOURCES = mod_accesslog.c mod_accesslog_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined mod_accesslog_la_LIBADD = $(common_libadd) lib_LTLIBRARIES += mod_geoip.la mod_geoip_la_SOURCES = mod_geoip.c mod_geoip_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined mod_geoip_la_LIBADD = $(common_libadd) -lGeoIP hdr = server.h buffer.h network.h log.h keyvalue.h response.h request.h fastcgi.h chunk.h settings.h http_chunk.h http_auth_digest.h md5.h http_auth.h stream.h fdevent.h connections.h base.h stat_cache.h plugin.h mod_auth.h etag.h joblist.h array.h crc32.h network_backends.h configfile.h bitset.h mod_ssi.h mod_ssi_expr.h inet_ntop_cache.h configparser.h mod_ssi_exprparser.h sys-mmap.h sys-socket.h mod_cml.h mod_cml_funcs.h splaytree.h proc_open.h status_counter.h mod_magnet_cache.h [...]
Führe als Nächstes dies aus:

cd ..
aclocal && automake -a && autoconf

./configure --with-linux-aio --libdir=/usr/lib/lighttpd --sbindir=/usr/sbin --with-openssl --with-pcre --with-bz2 --with-ldap --with-mysql --with-memcache --with-lua=lua5.1 --with-gdbm --with-attr --with-webdav-locks --with-webdav-props
make

Nachdem der make Befehl erfolgreich beendet wurde, solltest Du mod_geoip.so im /usr/local/src/lighttpd-1.4.13/src/.libs Verzeichnis finden. Das ist alles, was wir brauchen. Wir müssen also nicht make install ausführen. Wir können weiterhin unsere alte lighttpd Installation verwenden und mod_geoip.so einfach in das Verzeichnis kopieren, das unsere lighttpd Module enthält (z.B. /usr/lib/lighttpd):

cp /usr/local/src/lighttpd-1.4.13/src/.libs/mod_geoip.so /usr/lib/lighttpd

Nun müssen wir lighttpd so konfigurieren, dass es mod_geoip verwendet. Zuerst laden wir die GeoIP Country Datenbank runter:

mkdir /usr/local/data
cd /usr/local/data
wget http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
gunzip GeoIP.dat.gz

Öffne dann /etc/lighttpd/lighttpd.conf und füge "mod_geoip", dem server.modules Bereich hinzu; füge außerdem den geoip.db-filename und die geoip.memory-cache Direktiven unter dem server.modules Bereich hinzu:

vi /etc/lighttpd/lighttpd.conf


[...]
server.modules = ( "mod_access", "mod_alias", "mod_accesslog", "mod_geoip", "mod_fastcgi", # "mod_rewrite", # "mod_redirect", # "mod_status", # "mod_evhost", # "mod_compress", # "mod_usertrack", # "mod_rrdtool", # "mod_webdav", # "mod_expire", # "mod_flv_streaming", # "mod_evasive" ) geoip.db-filename = "/usr/local/data/GeoIP.dat" geoip.memory-cache = "enable" [...]
Starte lighttpd neu:

/etc/init.d/lighttpd restart

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

vi /var/www/geoiptest.php


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

Array
(
[FCGI_ROLE] => RESPONDER
[SERVER_SOFTWARE] => lighttpd/1.4.13
[SERVER_NAME] => server1.example.com
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PORT] => 80
[SERVER_ADDR] => 192.168.0.101
[REMOTE_PORT] => 60043
[REMOTE_ADDR] => 1.2.3.4
[SCRIPT_NAME] => /info.php
[PATH_INFO] =>
[SCRIPT_FILENAME] => /var/www/info.php
[DOCUMENT_ROOT] => /var/www/
[REQUEST_URI] => /info.php
[QUERY_STRING] =>
[REQUEST_METHOD] => GET
[REDIRECT_STATUS] => 200
[SERVER_PROTOCOL] => HTTP/1.1
[HTTP_HOST] => server1.example.com
[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] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[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
[ORIG_PATH_INFO] =>
[ORIG_SCRIPT_NAME] => /info.php
[ORIG_SCRIPT_FILENAME] => /var/www/info.php
[PATH_TRANSLATED] =>
[PATH] => /sbin:/bin:/usr/sbin:/usr/bin
[SHELL] => /bin/bash
[USER] => root
[PHP_FCGI_CHILDREN] => 4
[PHP_FCGI_MAX_REQUESTS] => 10000
[PHP_SELF] => /info.php
[argv] => Array
(
)

[argc] => 0
)

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


0 Kommentar(e)

Zum Posten von Kommentaren bitte