Installing GeoIP Module On Apache2, Ubuntu 16.04
- 以下面這個指令尋找Geoip的相關程式:
apt search geoip
將會從相關的套件裡找到 libapache2-mod-geoip
- 進行套件安裝與更新
apt update apt upgrade apt install geoip-bin geoip-database libapache2-mod-geoip libgeoip1
新增後,會產生 /usr/share/GeoIP/ 目錄。
- 下載GeoIP資料庫
cd /usr/share/GeoIP/ ls rm GeoIP.dat wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz gunzip GeoIP.dat.gz wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz gunzip GeoLiteCity.dat.gz wget http://download.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz gunzip GeoIPASNum.dat.gz
在 /usr/share/GeoIP/ 目錄裡,會有三個檔案GeoIP.dat, GeoLiteCity.dat, GeoIPASNum.dat。
- 更新apache2的geoip設置:nano /etc/apache2/mods-enabled/geoip.conf
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
GeoIPDBFile /usr/share/GeoIP/GeoLiteCity.dat
GeoIPDBFile /usr/share/GeoIP/GeoIPASNum.dat基本上就已經設定完成。 - 重新啟動apache2
apachectl -t sudo systemctl restart apache2.service
最後做一個範本試試看:
<?php $geoip_country_code = getenv(GEOIP_COUNTRY_CODE); $geoip_country_name = getenv(GEOIP_COUNTRY_NAME); $geoip_region = getenv(GEOIP_REGION); $geoip_city = getenv(GEOIP_CITY); $geoip_postal_code = getenv(GEOIP_POSTAL_CODE); $geoip_latitude = getenv(GEOIP_LATITUDE); $geoip_longitude = getenv(GEOIP_LONGITUDE); echo 'Country code: '.$geoip_country_code.'<br>'; echo 'Country name: '.$geoip_country_name.'<br>'; echo 'Region: '.$geoip_region.'<br>'; echo 'City: '.$geoip_city.'<br>'; echo 'Postal code: '.$geoip_postal_code.'<br>'; echo 'Latitude: '.$geoip_latitude.'<br>'; echo 'Longitude: '.$geoip_longitude.'<br>'; ?>
大功告成!!