Archive for 3月, 2011

installコマンドについて

火曜日, 3月 8th, 2011
mkdirだとディレクトリを作って、パーミッション設定して、オーナーとグループを設定してと。3回もコマンドを打たないといけない。
しかもどれか一つ抜けるとメンドイ事になる事もある。
そこでinstallコマンドです。
mkdirコマンドを利用した場合
mkdir /tmp/shibari
chown shibari.shibari /tmp/shibari
chmod 640 /tmp/shibari
installコマンドを利用した場合
install -d /tmp/shibari -o shibari -g shibari -m 640
好みとかシチュエーションにもよりますけどね。
今後はinstallコマンドを積極的に使ってみようかな。

pasteコマンドについて

火曜日, 3月 8th, 2011

csvで作成されたファイルが、使いたい用途によっては行列が逆の場合があります。

例)cat hoge

1

2

3

上記のようなデータを1行のデータとして、扱いたい場合に使えるコマンドです。

paste -s hoge

1 2 3

文字列のデリミタはデフォルトでtが指定されているので、-dで任意のデリミタを指定すると一手間省けるでしょう。

オプションをつけない、通常の使い方は下記のようになります。

$cat hoge

1 2 3

4 5 6

$cat foo

abc

def

$paste hoge foo

1 2 3 abc

4 5 6 def

2つのファイルの同じ行を結合します。

Apache mod_geoipのインストール

火曜日, 3月 1st, 2011
cd /usr/local/src/
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
tar  xzvf GeoIP.tar.gz
cd GeoIP-1.4.6/
./configure
make
make check
make install
cd ..
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
tar xzvf mod_geoip2_1.2.5.tar.gz
cd mod_geoip2_1.2.5
apxs -i -a  -L /usr/lib64/httpd/modules/ -I /usr/include/httpd/ -lGeoIP -c ./mod_geoip.c
 #上記のパスは適宜変更してください。

#GeoIP.datは定期的に更新が必要。
#データベースファイルに引っかからなければ、スルーされる。
wget -P /tmp/ http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
mv GeoIP.dat /usr/local/share/GeoIP/
 #バックアップを取ってcpで上書きしてもいいと思います。

#httpd.confを修正
vi <PATH>/httpd.conf

<IfModule geoip_module>
  GeoIPEnable On
  GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat {MemoryCache|IndexCache|MMapCache}
 #右のオプションは左から順番にメモリ使用量が大きいです。どれか一つ選択してください。
</IfModule>

#ディレクティブ毎の設定、rewriteの利用、Order deny,allowの利用、ログへの掃き出し等に使えます。
<Directory "/var/www/html">
GeoIPEnable On
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^JP$
RewriteRule ^(.*)$ - [F]
</Directory>

<Directory "/var/www/html">
GeoIPEnable On
Order deny,allow
SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry
Deny from all
Allow from env=AllowCountry
</Directory>

<Location /xxx>
  GeoIPEnable On
</Location>

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" "%{GEOIP_COUNTRY_CODE}e"" geoip_log
 #"%{GEOIP_COUNTRY_CODE}e"これで環境変数の呼び出しができるので、ログに吐かれます。
 #210.172.***.*** - - [28/Feb/2011:22:37:06 +0900] "GET /php/test.php HTTP/1.1" 200 58 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13" "JP"
 #14.136.194.138 - - [28/Feb/2011:22:36:21 +0900] "GET /php/test.php HTTP/1.1" 403 279 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13" "HK"
 #上記のようにカントリーコードが取得できているのが、確認できます。

apachectl configtest
/etc/init.d/httpd restart