
Установить 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 завершена, если есть вопросы пишите в комментарии. Отвечу и помогу в настройке.
http://ftp.uni-erlangen.de/pub/mirrors/FreeBSD/distfiles/mod_geoip2_1.2.8.tar.gz
Не работает сслылка
Спасибо что написали. Я исправил, теперь можете скачивать данный архив. Как выяснилось, ФТП сервер с которого я скачивал ( приводил пример) — уже не доступен, я нашел другой.
после добавления в конфиг 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
Не так ли?
Так же, пожалуйста, предоставьте лог-фал апача чтобы я смог посмотреть данную ошибки и помочь исправить.
Изменил конфигурацию httpd.conf переместил строки GeoIP GeoLiteCity.dat
после
/usr/local/share/GeoIP/GeoIP.dat
/usr/local/share/GeoIP/GeoLiteCity.dat
и apache запустился нормально
I think the admin of this site is genuinely working hard for his site, because here every data is quality based information.
А где здесь блокируются *.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 и пользователи с Китая, будут заблокированы.
Пожалуйста 😉
Спасибо. Только вот не работает так как Вы пишите. Я еще не разбирался с директивами апача но … с такими как у Вас
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
Работает в таком виде.
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
то он перебивает разрешения модуля. И ничего не блочится.