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

2.2 lighttpd 1.5.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 libglib2.0-dev libglib2.0-0

Lade dann die lighttpd Quellen, die zu Deinem installierten lighttpd passen, runter, z.B. lighttpd-1.5.0-r1992:

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

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

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

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 filter.h settings.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 proc_open.h mod_sql_vhost_core.h sys-files.h sys-process.h sys-strings.h iosocket.h array-static.h mod_proxy_core_address.h mod_proxy_core_backend.h mod_proxy_core_backlog.h mod_proxy_core.h mod_proxy_core_pool.h mod_proxy_core_rewrites.h status_counter.h http_req.h http_req_parser.h http_req_range.h http_req_range_parser.h http_resp.h http_resp_parser.h http_parser.h ajp13.h mod_proxy_core_protocol.h mod_magnet_cache.h timing.h [...]
Führe als Nächstes Folgendes 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 abgeschlossen wurde, solltest Du mod_geoip.so im /usr/local/src/lighttpd-1.5.0/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 (z.B. /usr/lib/lighttpd) enthält:

cp /usr/local/src/lighttpd-1.5.0/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 ein:

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 (z.B. /var/www) erstellen (natürlich musst Du PHP in Deiner lighttpd Installation aktiviert haben):

vi /var/www/geoiptest.php


<?php
print_r($_SERVER); ?>
Rufe diese Datei in einem Browser auf. Sie sollte das SERVER Array inklusiver 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.

3 Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte