Home > 備忘録 > Apache に関すること > Apache に mod_geoip を導入する( 88 )
Fedora18 に mod_geoip をインストール方法について記録します。
# httpd -v
Server version: Apache/2.4.3 (Fedora)
Server built: Jan xx 20xx 13:46:23# yum install mod_geoip# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip GeoIP.dat.gz
# mv -f GeoIP.dat /usr/share/GeoIP/GeoIP.dat
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# gunzip GeoLiteCity.dat.gz
# mv -f GeoIP.dat /usr/share/GeoIP/GeoLiteCity.dat1ヶ月ごとにデータベースを自動更新させる。
[root@server ~]# vi /etc/cron.monthly/geoip
#! /bin/sh
update(){
GEOIPDIR=/usr/share/GeoIP
GEM=4
if [ -e $GEOIPDIR/$2.gz ];then
##日付けで世代管理する(4世代)
cp $GEOIPDIR/$2.gz $GEOIPDIR/$2.gz-`/bin/date "+%Y%m%d"`
while [ `find $GEOIPDIR -name $2.gz-* | sort -r | wc -l` -gt $GEM ];do
find $GEOIPDIR -name $2.gz-* | sort -r | tail -1 | xargs rm
done
fi
wget -O $GEOIPDIR/tmp.gz $1/$2.gz 2>&1 | grep "保存完了"
if [ $? -eq 0 ];then
##解凍し tmp.gz ファイル名を変更する
if [ -e $GEOIPDIR/tmp.gz ];then
gunzip -cdf $GEOIPDIR/tmp.gz > $GEOIPDIR/$2
mv $GEOIPDIR/tmp.gz $GEOIPDIR/$2.gz
fi
else
rm $GEOIPDIR/tmp.gz
fi
}
update http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry GeoIP.dat
update http://geolite.maxmind.com/download/geoip/database GeoLiteCity.dat# chmod +x /etc/cron.monthly/geoip[root@server ~]# vi /etc/httpd/conf.d/geoip.conf
<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
</IfModule>
<Location /> ←以下を追加する
SetEnvIf GEOIP_COUNTRY_CODE JP BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry
<RequireAll>
Require all granted
Require not env BlockCountry
</RequireAll>
</Location>[root@server ~]# vi /etc/httpd/conf.d/geoip.conf
<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
</IfModule>
<Location /> ←以下を追加する
SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
<RequireAny>
Require env AllowCountry
</RequireAny>
</Location># systemctl restart httpd.service