2008.02.09

Apache のログ管理

Apache のログ管理は大半のディストリから RPM やらでインスコすると「logrotate」で
世代管理しつつローテーションされる。
個人的にはこの方法でローテーションされるのは嫌なので Apache 付属の「rotatelogs」を用いる。

(more…)

2007.11.17

いい Apache のログ解析ソフトみっけ!!

今は Webalizer という割とメジャーなアクセス解析ソフトをサーバーにぶち込んで、
毎日定時 00:05 に解析させるようにしている。

CGI とかで WebSite に埋め込んだアクセス解析とは違って、格段に信用性が高い。
なんせ Web サーバーがはき出すログを元に解析するわけだからね。

今日はこの Webalizer から派生した AWFull というソフトの存在を知った。

(more…)

2007.08.07

OpenSSL でサーバー証明書再作成

http で始まるアドレスの Web サイトはデータノーマル垂れ流し通信。
https だと送受信共に SSL 通信を用いた暗号化経路を通ってデータが来る。
その為、データを中継するネットワーク間やらなんやらからデータを保護する
目的で多用されている。例えば通販とかの個人情報入力フォームとかね。

こいつをうちのサーバーでも出来るようにしていたんだけど証明書に初めて
知った物があったので再度作成してあげた。 (more…)

2007.07.02

eAccelerator でセグっちゃう PHP スクリプトの対応。

先日いれたアクセラレーターである eAccelerator は導入すれば全てが旨く
キャッシングされて速度向上に繋がる物でも無いということです。

実際、動作不能になった PHP スクリプトがあったのでその対応方法を
書いておこうかなと。

(more…)

2007.06.30

PHP5 でアクセラレーターをかます。

WordPress を導入してからサーバーのチューニングじみた事ばかり
している気がしないでもないが、今回は体感できるチューニングってことで、
PHP のアクセラレーターである eAccelerator を導入した。

で、メモメモ。(長い YO)

(more…)

2007.06.29

Apache によるアクセス制御

まぁ SetEnvIf ディレクティブを用いて「Order Allow,Deny」とかしちゃって
Apache の設定に手を加えるわけですが、ややこしい。

今日なって盲点を見つけたので Fix してみた。
12:05 もう一箇所追記してみた。

(more…)

2006.06.27

Webalizer で Apache のログ解析

Apache のログは垂れ流したところで分かるのは見てるところだけ。
過去を辿って何千行ものログを見たくは無い。
良く CGI とかで使用されているアクセス解析を使う手もあるのだが、折角自由の効く
自宅サーバーなのだからこれはやるしかないというか、入れ忘れていたのでインスコ。
アクセス解析にも色々ソフトはある。
大御所の analog から今回いれた Webalizer や AWstats 。
最後に書いた AWstats は UI 等良くできているのだが、その分負荷が高い。
うちのサーバーではアクセスするだけで数秒待たされたりとかした経緯も過去にあり。
analog はテキストベースでシンプル過ぎる。
Webalizer なら GD ライブラリつかってグラフ化もしてくれたりするけど、出力は Static
となるので閲覧には負荷は無い。
そんなもんで今回はこいつをチョイス。
さて、アクセス解析をかけるターゲットは Apache のログだ。
ログの保存形式が簡単に logrotate で回していれば簡単な設定で済むのだが、
うちのサーバーでは日付毎に管理させている。
例えば今日のログなら "xxxx_access_log.20060627" ってな感じだ。
実際のログの吐き出し設定は以下の通り。

CustomLog "| /usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/www_access_log.%Y%m%d 86400 +540" combined

このままでは直にログファイル名を渡すことが出来ない。
解析対象が前日のログとなるから…。
そんなもんで簡単なシェルを書いてやる。
一時的に前日のログファイル名をソフトリンクを用いてユニークで固定な名前にする。
んでもって解析が終わったら削除するという手法をとってみた。
解析するドメインは引数として与えてやる。エラーチェックも忘れちゃいかん。
自分で使うだけなので汎用ではないが、参考になればこれ幸い。
webalizer.sh

#!/bin/sh
# Webalizer for an apache logfile of date format.
# To analyze log filename set.
# Argument is sub-domain name.
USER=$1
ORG_LOG=/var/log/httpd/${USER}_access_log.`date –date '1 day ago' +%Y%m%d`
NEW_LOG=/var/log/httpd/${USER}_access_log
# Exist check
if [ ! -d /home/${USER} ]; then
echo 'no such a domain.'
exit 1
fi
# make a temporary logfile
/bin/ln -s ${ORG_LOG} ${NEW_LOG}
# run webalizer
/usr/local/bin/webalizer -c /etc/webalizer_${USER}.conf ${NEW_LOG}
# unlink a temporary logfile
/bin/rm -f ${NEW_LOG}

流れとしては
前日のログファイル -> xxxxx_access_log と固定化 -> webalizer に解析させるという感じ。
無論、webalizer の設定ファイルは解析するドメイン毎に用意してやる。
今回は自分の管轄としている 3 つのドメインを解析とした。
メインとなる www ドメイン。ブログ用となる bucci ドメイン。ゲーム用の abyss ドメイン
の 3 つ。
それぞれの設定を "/etc/webalizer_{www,bucci,abyss}.conf" と 3 つに分け、各種設定を行う。
www ドメインだけはいろいろあるだけに設定は細かく変更済み。
他は汎用的にいけるよう、使う設定箇所だけにして設定内容を見やすくしてあげた。
ひとまず設定を終えて、テストで昨日分のログを出力させることに成功。
あとは過去 1 ヶ月分のログファイルを順次読み込ませて今月分全て解析させる。
それが終わったら root の crontab にぶち込んで終わり。
1 ヶ月分のログファイルを 1 こずつやっとったら手が疲れるので 1 行野郎で済ます。

# for i in `ls /var/log/httpd/www_access_log.200606* | grep -v "27$"`; do webalizer -c /etc/webalizer_www.conf $i; done

当日分までやってしまうと何かと面倒なので 27 日分は解析させない。
これで 30~120 秒待てば解析は完了。
ログファイル名と設定ファイル名を書き換えて 3 ドメイン分繰り返すだけで OK 。
最後に cron へ登録させるのだが、1 ドメイン 1 行なんてやっとれんし、メンテナンス
大変になるからさらにシェルを書く。
webalizer_all.sh

#!/bin/sh
# Analyze All Domains at Webalizer
#
domains='www bucci abyss'
for i in ${domains};
do
/path/to/webalizer.sh $i
done

これであとは解析対象が増えても domains 変数にドメイン名を追加して行ってやれば
らくちんになるのであります。
このシェルを毎日 00:05 に走らせるようにする。
# crontab -e
で以下のように追記編集して :wq して終わり。

5 0 * * * /root/bin/webalizer_all.sh > /dev/null

エラーは吐かせておかないとイクナイので "> /dev/null" とした。
完全に軌道に乗ってしまえば "> /dev/null 2>&1" なんてして全て捨てても良いかなと。
あとは cron でセットした時間にエラーメールがすっとんで来ないことを祈る(笑

2006.04.12

OpenSSL でやっとこさ作成した独自認証局とサーバー証明書

このサーバーはいままで全て “http” プロトコルのみでの通信を提供していたんだけど、
かなーりめんどくさい OpenSSL をつかった “https” での暗号化通信に対応させました。
全てのサブドメインに付けるのではなくて、1 つの https 専用サブドメインを作成し、
このサーバーを利用いただいているユーザーのパスワードやらなんやら変更するときに
使用するソフト設置時に使う予定。まぁこのソフトってのは Usermin だったりするんだけど。
Webmin でサーバー管理が楽になるとかなんたら良く目にするけど、このへんはこだわりで
全部 CUI によるオペでやるつもりなのでパス。
後考えられる用途は Webmail とかくらいかな。
もちっと勉強すれば MTA で START TLS とかにも応用が利くのでやっておいて
よかったかなと。

ということで、やっと Web サーバー構築時につけたオプションが生きてきた。
Apache + OpenSSL + PHP + MySQL + Perl が今の Web サーバー稼働構成かな。