О web-разработке
и даже немного больше...

Как установить GeoIP в CentOS?

geoipВ качестве вступления давайте поговорим о том, что же такое 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']);
Опубликован: 07.12.2014 г.

См. также:

Установка и использование FFmpeg в CentOS 7
Сжатие PDF-файлов в Linux
Установка Node.js на Linux CentOS 7
Обновление пакетов в CentOS
Bash: mail: command not found
Выставляем временную зону в CentOS 7
Настройка SELinux, включение, отключение
Меняем пароль root в MySQL 5.7

Комментарии

  1. Саша пишет:

    А если все равно не работает?

    У меня еще nginx стоит, так я и в его конфиги прописал все что надо.
    geoip_country /usr/share/GeoIP/GeoIP.dat; # the country IP database
    geoip_city /usr/share/GeoIP/GeoLiteCity.dat; # the city IP database

    и в fastcgi_params
    # For GeoIP
    fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
    fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
    fastcgi_param GEOIP_REGION $geoip_region;
    fastcgi_param GEOIP_CITY $geoip_city;
    fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code;
    fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code;
    fastcgi_param GEOIP_LATITUDE $geoip_latitude;
    fastcgi_param GEOIP_LONGITUDE $geoip_longitude;

    Но не работает.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта