Read it later.

Web製作に関するサーバ構成やコーディングネタの備忘録として使ってます。

*

GeoIPのインストール

   

IPアドレスから国や都市を取得するためのライブラリが、MaxMind社のGeoIP。
辞書データが無料のものもあるので、それを利用する。

1.GeoIPライブラリをインストール
MaxMind社のホームページ(http://www.maxmind.com/)から、GeoIPライブラリをダウンロードし、インストールします。

cd /usr/local/src
wget http://www.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
tar xzvf GeoIP.tar.gz
cd GeoIP-1.4.8
./configure
make
make install

2.GeoIPで使うデータを入手
無料で利用できる国データ、町データをダウンロード、解凍し、配置します。(有料版もあります。)

# 無料版のLiteシリーズのファイルをダウンロードして解凍する。
cd /usr/local/src/
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip /usr/local/src/GeoIP.dat.gz
gunzip /usr/local/src/GeoLiteCity.dat.gz

# ダウンロードしたファイルを/usr/local/share/GeoIP/に格納。
# ファイル名を変更していることに注意。
rm -rf /usr/local/share/GeoIP/GeoIP.dat
rm -rf /usr/local/share/GeoIP/GeoIPCity.dat
rm -rf /usr/local/share/GeoIP/GeoLiteCity.dat
cp GeoIP.dat /usr/local/share/GeoIP/
cp GeoLiteCity.dat /usr/local/share/GeoIP/
mv /usr/local/share/GeoIP/GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat

3.Peclモジュールのインストール、設定

pecl install geoip

無事インストールできたら、

vim /etc/php.ini

php.iniで、geoip.soを読み込むように設定。

; geoip
extension=geoip.so

設定を反映させるために再起動。

/etc/rc.d/init.d/httpd restart

geoipのライブラリのインタフェースはどういったものがあるかは【マニュアル】を参照。

4.最後に、PHPで動作検証。

<?php
//ホワイトハウス
var_dump(geoip_record_by_name('whitehouse.gov'));
//東京タワー
var_dump(geoip_record_by_name('www.tokyotower.co.jp'));
//訪問者がどこから来たか
var_dump(geoip_record_by_name($_SERVER['REMOTE_ADDR']));
?> 

 - CentOS, PHP

Comment

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

  関連記事

mysql
[MySQL][phpMyAdmin]Allowed memory size of XXXXXX bytes exhausted (tried to allocate XXXXXX bytes)

こんな現象がおきました phpMyAdminでデータベース全体をエクスポートした …

centos
[CentOS]yumが失敗する(db3 エラー) – Thread died in Berkeley DB library

yumが実行できなくなった! yumコマンドがうまく動かない環境に遭遇した。 解 …

php
Smarty2からSmarty3へのアップグレードガイド

Smarty2を以前から愛用していたのだけど、Smarty3にそろそろ移行しよう …

centos
開いているポートを調べる(nmap)

開いているポートを調べる(nmap) 外部公開しているポートを調べる方法はいくつ …

php
$_SERVER[“REQUEST_TIME_FLOAT”]

$_SERVER[“REQUEST_TIME”]には置き …

centos
シンボリックリンクの作成

やっと、本日勘違いしていたことに気づきました(汗 思い込みはあかんねー。 ※[シ …

centos
[Linux]複数ファイルの文字コードを一括で調べる – nkf

開発をしていると、たまに文字コードが異なる状態で保存されたりする。 UTF-8の …

centos
qmailの転送設定

正確にはvpopmail用の設定らしい。 ○○○-△△△@hogehoge.co …

php
[Smarty]確認画面などで使う、Hidden項目を全力で自動生成

入力確認画面や完了通知画面で、前画面(入力画面)のリクエストを元に一気にHidd …

php
headers_list

リダイレクトやNot Found処理をする時に、header()を使用しHTTP …