Как установить geoip в php
Устанавливать будем в 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/