Install GeoIP PHP Extension

Install GeoIP C API
Change 1.4.8 to downloaded version.

cd /usr/local/src
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
tar zxvf GeoIP.tar.gz
cd GeoIP-*
./configure
make
make check
make install

Install PHP PECL extension

pecl install geoip

Find php.ini

php -i | grep php.ini

Enable extension to load in php.ini:

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
extension=geoip.so

You may need to restart HTTP server (apache) to apply changes.

Download Geo Lite City database

cd /usr/local/src
wget -N -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
mv GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat

For more accurate detection and production projects, buy the full GeoCity database from MaxMind.