There is a new version of this tutorial available for Debian 6 (Squeeze).
Installing mod_geoip for Apache2 On Debian Lenny
Author: Falko Timme
Follow me on Twitter
This guide explains how to set up mod_geoip with Apache2 on a Debian Lenny system. mod_geoip looks up the IP address of the client end user. This allows you to redirect or block users based on their country. You can also use this technology for your OpenX (formerly known as OpenAds or phpAdsNew) ad server to allow geo targeting.
I do not issue any guarantee that this will work for you!
1 Preliminary Note
I'm assuming that you have a running Debian Lenny system with a working Apache2, e.g. as shown in this tutorial: The Perfect Server - Debian Lenny (Debian 5.0) [ISPConfig 2].
2 Installing mod_geoip
To install mod_geoip, we simply run:
aptitude install libapache2-mod-geoip
Then we open /etc/apache2/mods-available/geoip.conf and uncomment the GeoIPDBFile line so that the file looks as follows:
<IfModule mod_geoip.c> GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat </IfModule>
Next we restart Apache:
That's it already!
3 A Short Test
To see if mod_geoip is working correctly, we can create a small PHP file in one of our web spaces (e.g. /var/www):
<html> <body> <?php $country_name = apache_note("GEOIP_COUNTRY_NAME"); print "Country: " . $country_name; ?> </body> </html>
Call that file in a browser, and it should display your country (make sure that you're calling the file from a public IP address, not a local one).
4 Use Cases
You can use mod_geoip to redirect or block/allow users based on their country. You can find some useful examples for this here: http://www.maxmind.com/app/mod_geoip
If you want to use mod_geoip with OpenX/OpenAds/phpAdsNew, this PDF file has instructions for it: http://www.maxmind.com/openads_geoip.pdf