Geoip php установка centos

How to Install the PHP GeoIP Extension

In the examples shown, replace «X.Y» with your app’s PHP version (for example, «7.1»). To install a PECL extension for multiple PHP versions, repeat the PECL extension installation for each PHP version.

The GeoIP extension allows you to find the location of an IP address, including the city, state, country, latitude, and longitude.

If you’d like to use the new GeoIP2, MaxMind now offers a pure PHP implementation that doesn’t require a C extension: https://github.com/maxmind/GeoIP2-php.

Installing GeoIP on PHP 7.X

To install this extension on PHP 7.0, 7.1, 7.2, 7.3, or 7.4, run the following commands as your server’s root user:

sudo apt-get -y install gcc make autoconf libc-dev pkg-config sudo apt-get -y install libgeoip-dev sudo pecl7.X-sp install geoip-beta

Once installed, create a configuration file for the extension and restart PHP by running the following command as root:

sudo bash -c "echo extension=geoip.so > /etc/php7.X-sp/conf.d/geoip.ini" sudo service php7.X-fpm-sp restart

Installing GeoIP on PHP 5.X

To install this extension on PHP 5.4, 5.5, or 5.6, run the following commands as your server’s root user:

sudo apt-get -y install gcc make autoconf libc-dev pkg-config sudo apt-get -y install libgeoip-dev sudo pecl5.X-sp install geoip

Once installed, create a configuration file for the extension and restart PHP by running the following command as root:

sudo bash -c "echo extension=geoip.so > /etc/php5.X-sp/conf.d/geoip.ini" sudo service php5.X-fpm-sp restart

Verifying GeoIP Is Installed

You can check that the extension was installed with this command:

Читайте также:  Html button on touch

The output will look like this:

$ php7.1-sp -i | grep geoip /etc/php7.1-sp/conf.d/geoip.ini, geoip geoip support => enabled geoip extension version => 1.1.1 geoip library version => 1006000 geoip.custom_directory => no value => no value

Uninstalling the GeoIP Extension

To uninstall this extension, as root run the commands:

sudo rm /etc/phpX.Y-sp/conf.d/geoip.ini sudo peclX.Y-sp uninstall geoip

Next, restart PHP-FPM with the command:

sudo service phpX.Y-fpm-sp restart

Источник

Установка GeoIP и Mod_GeoIP для Apache CentOS/RedHat/Fedora

GeoIP — это продукт Maxmind который состоит из нескольких сопутствующих товаров. GeoIP преподносит информацию о конкретном IP-адрес. ГеоИП выполняет поиск по своим базам данных по данному хосту или IP-адресу и возвращает информацию о стране, где находиться IP, город, провайдер и другую информацию.

В своей статье «Установка GeoIP и Mod_GeoIP для Apache CentOS/RedHat/Fedora» хочу рассказать как установить GeoIP для Apache CentOS/RedHat/Fedora на примере CentOS 6.6.

Способ 1 — установка из пакетов.

Переходим в папку и выкачиваем все необходимое. Скачиваем GeoIP и GeoIpCity:

# mkdir /usr/share/GeoIP && cd /usr/share/GeoIP && wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz && wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

Распаковываем скачанные архивы:

# gunzip GeoIP.dat.gz && gunzip GeoLiteCity.dat.gz

— Устанавливаем PHP с поддержкой геоИП:

# yum install php-devel php-pear php-devel GeoIP GeoIP-devel GeoIP-data zlib-devel mod_geoip -y

— Можно еще одним способом установить, используя pecl.

Устанавливаем дополнительные пакеты для работы:

# yum install php-pear pecl -y

Обновляем содержимое репозитория:

# pecl channel-update pecl.php.net

Прописываем ( добавляем) библиотеку в php.ini:

echo "extension=geoip.so" > /etc/php.d/geoip.ini

Способ 2 — установка из исходного кода.

Вы должны знать, как установить модули Apache и пересобрать Apache с помощью APXS.

Переходим в директорию и скачиваем файлы:

# cd /usr/local/src/ && wget http://www.maxmind.com/download/geoip/api/c/GeoIP-latest.tar.gz && tar -xzf GeoIP-latest.tar.gz && cd /usr/local/src/GeoIP-*

Устанавливаем утилитку ( можно и без нее):

Можно собрать rpm пакет, вы можете ознакомиться:

Но я покажу как произвести установку дальше:

# make && make check && make install

Скачиваем модуль для апача — mod_geoip, распаковываем его и переходим в папку для конфигурирования:

# cd /usr/local/src/ && wget http://www.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2-latest.tar.gz && tar -xzf mod_geoip2-*.tar.gz && cd /usr/local/src/mod_geoip2_*

Выполняем команду для установки данного модуля:

# apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c
-bash: apxs: command not found
# chmod 755 /usr/lib64/httpd/modules/mod_geoip.so

Вывело напоминание, что необходимо прописать ( активировать) geoip в конфигурационом файле httpd.conf. Для этого, выполняем следующие действия:

# vim /etc/httpd/conf/httpd.conf

И прописываем следующие строки:

[. ] GeoIPEnable On GeoIPScanProxyHeaders On GeoIPDBFile /usr/local/share/geoip/GeoIP.dat GeoIPDBFile /usr/local/share/geoip/GeoLiteCity.dat [. ]

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

# cd /usr/local/share && mkdir geoip && cd geoip && wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz && gunzip GeoIP.dat.gz
# cd /usr/local/share/geoip && wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz && gunzip GeoLiteCity.dat.gz

И переходим к тестированию.

Проверка работы GeoIP для Apache CentOS/RedHat/Fedora.

# echo "" > /home/captain/php_info.php

/home/captain — это путь, который прописан в виртуальном хосте для моего сайта.

2. Можно выполнить команду:

# vim /home/captain/geoip_test.php
 
Whence are you come to here?:

Обновление баз для GeoIP

Создаем скрипт для обновления ( так будет проще всего):

# vim /home/captain/update_geoip_db.sh
#!/bin/bash cd /usr/local/share/geoip/ mv GeoIP.dat GeoIP.dat.old && mv GeoLiteCity.dat GeoLiteCity.dat.old /usr/bin/wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz /usr/bin/wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz gunzip GeoIP.dat.gz && gunzip GeoLiteCity.dat.gz
# chmod 750 /home/captain/update_geoip_db.sh

Добавляем данный скрипт в crontab на выполнение, каждые 1-е число месяца:

# crontab -e 0 0 1 * * /home/captain/update_geoip_db.sh

Блокировка стран

Создаем файл ( если его нет) .htaccess. И для примера, например, я хочу заблокировать всех пользователей с Белорусии и Румынии, то прописываем данные строки в файл:

GeoIPEnable On GeoIPDBFile /usr/share/geoip/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE RO BlockCountry SetEnvIf GEOIP_COUNTRY_CODE RL BlockCountry Deny from env=BlockCountry

PS: можно так же вставлять в конфиг с apache. В раздел

Перенаправление пользователей по странам

Ниже пример кода будет перенаправлять пользователей на основе кода страны. Если вы хотите перенаправить всех пользователей в зависимости от страны, то нужно использовать mod_rewrite в сочетании с mod_geoip в вашем файле .htaccess. Для примера, я сделаю перенаправление для Украины и Польши следующим образом:

RewriteEngine on GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat RewriteCond % ^(UA|PL)$ RewriteRule ^(.*)$ http://www.linux-notes.org/UA_PL/$1 [L]

Вот и все, моя тема «Установка GeoIP и Mod_GeoIP для Apache CentOS/RedHat/Fedora» завершена.

Источник

Installing the PHP geolocalization extension on CentOS

Lately, I've had the need to install a geolocation database on a web server to localize (as closely as possible) a visitor based on its IP address.

For this, I've been using the MaxMind geolocation database. Although Maxmind is a commercial service, they provide a free database mapping IPs to countries. Maxmind provides a PHP geoip extension enabling a very quick access to the GeoIp database.

In this blog article, I'll describe all the required steps to install the geoip extension on a PHP server, on a CentOS distribution.

First, a quick note about Debian/Ubuntu user. They have the chance to have a nice package installed. So installing the module is as simple is typing:

First step: downloading the GeoIP databases

You must download the database mapping IP addresses to locations.
Maxmind provides a free database mapping IP addresses to countries.
It can be downloaded at the GeoLite Coutry database download page.

If you have a Maxmind account, you can download your databases in your account page.

Maxmind provides files in many formats. You must download the file in the "Binary format for APIs".

Note: if you are working on a remote server through SSH, lynx can be useful to download the files:

yum install lynx lynx http://www.maxmind.com/app/download_files

Step 2: Uncompress the files

You should uncompress the files in the directory /var/lib/GeoIP.
At the end of this operation, there should be one or many ".dat" files into the /var/lib/GeoIP directory.

Step 3: Configure the context

This step is needed only if SELinux is enabled on your system.
SELinux is a security mechanism that will prevent Apache to access the geolocalisation database if it is not explicitly allowed to.

In order to grant access to the Geolocalisation database, use these commands:

chcon -t httpd\_sys\_content_t /var/lib/GeoIP chcon -t httpd\_sys\_content_t /var/lib/GeoIP/* chcon system\_u:object\_r:textrel\_shlib\_t /usr/lib/php/modules/geoip.so

Step 4: Enable the GeoIP PECL module

The geoip PHP extension is a PECL module.
The PECL module has a dependency on the geoip C library that must be installed:

yum install GeoIP GeoIP-devel

If PECL is not installed, you must install it on the server:

yum install php-pear php-devel httpd-devel

Then, you can start retrieving and compiling the module:

Finally, you must tell PHP to load the extension. On CentOS, we can do that by adding a file in the /etc/php.d directory:

In this file, just add this line:

Finally, just restart Apache:

About the author

David is CTO and co-founder of TheCodingMachine and WorkAdventure. He is the co-editor of PSR-11, the standard that provides interoperability between dependency injection containers. He is also the lead developper of GraphQLite, a framework-agnostic PHP library to implement a GraphQL API easily.

Источник

Как установить 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

Проверяем установку библиотеки GeoIP:

Так же работу GeoIP можно проверить в PHP, для этого достаточно в скрипте обратиться к функции:

geoip_country_name_by_name($_SERVER['REMOTE_ADDR']);

Источник

Оцените статью