Как установить geoip в php

2014-04-16 13:03:36 Блог

Устанавливать будем в Linux Ubuntu и подобных системах на основе Debian. Приведу последовательность команд:

sudo apt-get install php5-geoip

После успешной установки, скачаем базу данных городов:

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

и распакуем:

/bin/gunzip GeoLiteCity.dat.gz

Переместим и переменуем распакованный файл:

sudo mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Готово. Перезапускаем веб сервер:

/etc/init.d/apache2 restart

Проверим работоспособность geoip:


     print_r(geoip_record_by_name('php.net'));
?>

Так же рекомендуется периодически обновлять базу данных GeoLiteCity.dat. Для этого будем использовать cron и sh скрипт.

Скрипт для обновления базы данных. Создадим файл geoip_update.sh. И вставим в него код:

#!/bin/bash
geoip_dir='/usr/share/GeoIP';
dat_file_url='http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz';
cd $geoip_dir;
/usr/bin/wget $dat_file_url;
mv -f GeoIPCity.dat GeoIPCity.dat.bak
/bin/gunzip GeoLiteCity.dat.gz
mv -f GeoLiteCity.dat GeoIPCity.dat
rm -f GeoLiteCity.dat.gz

Перед добавление в cron советую протестировать. Теперь после того как вы проверили работоспособность скрипта. Добавим его в cron:

echo "02 00 1 * * /usr/sbin/geoip_update.sh >/dev/null 2>&1" | crontab - 

Вот и все теперь база данных PHP GeoIP будет обновляться раз в месяц в первый день в 2:00 часа утра.

Вольный перевод на основе: http://www.pc-freak.net/blog/how-to-install-and-setup-and-test-geoip-support-in-php-on-apache2-in-debian-lenny-linux/