Установить geoip и mod_geoip из исходников на FreeBSD

Установить geoip и mod_geoip из исходников на FreeBSD

Мне нужно было сделать следующее:
1. Установить на FreeBSD geoIP и Geoip_mod.
2. Нужно заблокировать доступ к файлам *.php из страны CN
!!!Как я выяснил для моего апача нужен был именно GeoIP-1.4.8!!!
# mkdir /usr/local/src/GeoIP
# cd /usr/local/src/GeoIP
Скачиваем архив и распаковываем его:
# wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
# tar –zxvf GeoIP.tar.gz
Перейдем в директорию и начнем установку:
# cd GeoIP-1.4.8
# ./configure && make && make check && make install
Все! Сам ГеоИП мы установили, нужно для работы скачать еще и мод геоИП:
# fetch https://fossies.org/linux/www/apache_httpd_modules/legacy/mod_geoip2_1.2.8.tar.gz
# tar zxf mod_geoip2_1.2.8.tar.gz
# cd mod_geoip2_1.2.8
# /usr/local/apache2/bin/apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c
Качаем базу и ложем /usr/local/share/GeoIP/
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# gunzip GeoLiteCity.dat.gz
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip GeoIP.dat.gz
# cp GeoIP.dat /usr/local/share/GeoIP/GeoIP.dat
#cp GeoLiteCity.dat /usr/local/share/GeoIP/GeoLiteCity.dat
 /usr/local/apache2/conf/httpd.conf, а именно
................................................................................................
;Установить geoip и mod_geoip из исходников на FreeBSD. Его настройка в конфиге апача(httpd.conf)
<Directory "/usr/home/captain/">
    Options FollowSymLinks Includes
    AllowOverride All
    Order deny,allow
    Allow from all
GeoIPEnable On
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
Deny from env=BlockCountry
</Directory>
............................................................................
Или поправим vhosts.conf
.................................................................................................................
<VirtualHost 127.0.0.1:80 >
    ;Установить geoip и mod_geoip из исходников на FreeBSD. Его настройка в конфиге апача(vhosts.conf)
    DocumentRoot /usr/home/captain/test.com/www
    ServerAdmin webmaster@test.com
    ServerName test.com
    ServerAlias www.test.com
    ScriptAlias /cgi-bin/ /usr/home/captain/test.com/cgi-bin/
GeoIPEnable On
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
Deny from env=BlockCountry
</VirtualHost>
.................................................................................................................

Для проверки работоспособности напишем пхп код, который покажет нужную информацию. Этот файл должен лежать в домашней каталоге apache:

# ee /home/captain/test.com/www/geoip.php
<pre>
Ot kuda prishel:
<?php
$country_code = apache_note("GEOIP_COUNTRY_CODE");
$region = apache_note("GEOIP_REGION");
$country_name = apache_note("GEOIP_COUNTRY_NAME");
$city = apache_note("GEOIP_CITY");
echo "Country code: " . $country_code . "\n";
echo "Region:     " . $region . "\n";
echo "Name of country: " . $country_name . "\n";
echo "City:  " . $city . "\n";
?>
</pre>

Перезапустите веб-серверApache

# /usr/local/apache2/bin/apachectl restart

Запустим этот php скрипт, перейдя по ссылке, у меня так:
http://localhost/geoip.php

Установить geoip и mod_geoip из исходников на FreeBSD завершена, если есть вопросы пишите в комментарии. Отвечу и помогу в настройке.

10 thoughts on “Установить geoip и mod_geoip из исходников на FreeBSD

    • Спасибо что написали. Я исправил, теперь можете скачивать данный архив. Как выяснилось, ФТП сервер с которого я скачивал ( приводил пример) — уже не доступен, я нашел другой.

  1. после добавления в конфиг httpd.conf

    GeoIPEnable On
    GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
    GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat
    SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
    Deny from env=BlockCountry

    не запускается apache
    файлы лежат в указаном месте GeoIP.dat

    Syntax error on line 216 of /usr/local/etc/apache22/httpd.conf:
    GeoIPDBFile not allowed here

    • Напишите пожалуйста что находится в конфиге httpd.conf в 216-й строчке.
      Скажите, Вы используете этот виртуальный хост:


      ;Установить geoip и mod_geoip из исходников на FreeBSD. Его настройка в конфиге апача(vhosts.conf)
      DocumentRoot /usr/home/captain/test.com/www
      ServerAdmin webmaster@test.com
      ServerName test.com
      ServerAlias http://www.test.com
      ScriptAlias /cgi-bin/ /usr/home/captain/test.com/cgi-bin/
      GeoIPEnable On
      GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
      GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat
      SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
      Deny from env=BlockCountry

      Не так ли?
      Так же, пожалуйста, предоставьте лог-фал апача чтобы я смог посмотреть данную ошибки и помочь исправить.

  2. Изменил конфигурацию httpd.conf переместил строки GeoIP GeoLiteCity.dat

    после
    /usr/local/share/GeoIP/GeoIP.dat
    /usr/local/share/GeoIP/GeoLiteCity.dat

    и apache запустился нормально

  3. А где здесь блокируются *.php ?
    GeoIPEnable On
    GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
    GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat
    SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
    Deny from env=BlockCountry

    • #Включаем модуль GeoIP:
      GeoIPEnable On
      #Подключаем базу стран и городов:
      GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
      GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat
      #Блокируем страну, у меня для примера взята China — Китай
      SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
      Deny from env=BlockCountry

      Собственно, если сайт на писан на PHP, то обращение будет index.php и пользователи с Китая, будут заблокированы.

      Пожалуйста 😉

  4. Спасибо. Только вот не работает так как Вы пишите. Я еще не разбирался с директивами апача но … с такими как у Вас
    Options FollowSymLinks Includes
    AllowOverride All
    Order deny,allow
    Allow from all
    не работает Форбиден! Если поменять на
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    дело налаживается НО всплывает ошибка GeoIPDBFile not allowed here . У меня нет виртуалов и директория стандартная, может быть дело в том, что нужно делать как тут http://dev.maxmind.com/geoip/legacy/mod_geoip2/#Server_vs_Directory_context ? А именно в httpd.conf вставить строки

    GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
    GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat

    DocumentRoot «/usr/local/apache2/htdocs»

    Options FollowSymLinks Includes
    AllowOverride All
    Order deny,allow
    Allow from all

    GeoIPEnable On
    SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
    Deny from env=BlockCountry

  5. Работает в таком виде.

    GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
    GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat

    Options FollowSymLinks Includes
    # AllowOverride All
    # Order deny,allow
    # Allow from all

    GeoIPEnable On
    SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
    #SetEnvIf GEOIP_COUNTRY_CODE UA BlockCountry
    Deny from env=BlockCountry

    Если оставить этот блок незакоментаренным
    # AllowOverride All
    # Order deny,allow
    # Allow from all
    то он перебивает разрешения модуля. И ничего не блочится.

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.