В качестве вступления давайте поговорим о том, что же такое GeoIP. GeoIP — это библиотека, которая позволяет определить географическое местоположение пользователя по IP адресу. Данную библиотеку можно использовать для своих проектов, перед этим так же следует установить расширение PHP, после чего мы получаем набор дополнительных функций для работы с данным модулем. Рассмотрим пример, как установить эту библиотеку на свой сервер под управлением Linux CentOS.
Первым делом, добавляем репозиторий EPHEL, для этого в консоли сервера вводим команду:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5Server/x86_64/epel-release-5-3.noarch.rpm
Затем устанавливаем библиотеку GeoIP посредством yum:
yum install geoip geoip-devel
После того, как библиотека была установлена, нам предстоит скачать файл с базой адресов, и разместить в нужном месте:
cd /tmp wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz gunzip ./GeoIP.dat.gz rm /usr/share/GeoIP/GeoIP.dat mv ./GeoIP.dat /usr/share/GeoIP/GeoIP.dat
После выполнения этих манипуляций, нам так же потребуется установить расширение PHP. Php-geoip является модулем, который позволит использовать функции библиотеки в PHP.
echo "extension=geoip.so" >>/etc/php.ini pecl install geoip
В ходе выполнения команды может возникнуть ошибка: «pecl.php.net is using a unsupported protocal — This should never happen.install failed» исправляется это дело так:
cd 'pecl config-get php_dir' mv .channels .channels-broken pecl update-channels
Повторно вводим команду:
pecl install geoip
Перезапускаем Apache:
service httpd restart
Проверяем установку библиотеки GeoIP:
php -m | grep geoip geoip
Так же работу GeoIP можно проверить в PHP, для этого достаточно в скрипте обратиться к функции:
geoip_country_name_by_name($_SERVER['REMOTE_ADDR']);
Добавить комментарий