Apache,MySQL用top

apachetopとmytopというApache用、MySQL用のtopのようなものを見つけたのでインストールして試してみました。

mytopのインストール

mytop – a top clone for MySQL
http://jeremy.zawodny.com/mysql/mytop/

入手したtarボールを展開
# mv mytop-1.6.tar.gz /usr/local/src/
# cd /usr/local/src/
# tar zxf mytop-1.6.tar.gz
# cd mytop-1.6

Makefileの作成
# perl Makefile.PL
Checking if your kit is complete…
Looks good
Warning: prerequisite Term::ReadKey 2.1 not found.
Writing Makefile for mytop

コンパイル
# make
cp mytop blib/script/mytop
/usr/bin/perl “-MExtUtils::MY” -e “MY->fixin(shift)” blib/script/mytop
Manifying blib/man1/mytop.1

テスト
# make test
PERL_DL_NONLAZY=1 /usr/bin/perl “-Iblib/lib” “-Iblib/arch” test.pl
1..1
ok 1

インストール
# make install
Installing /usr/local/man/man1/mytop.1
Installing /usr/local/bin/mytop
Writing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/auto/mytop/.packlist
Appending installation info to /usr/local/lib/perl5/5.8.7/i386-freebsd/perllocal.pod

試しに実行
# mytop
Can’t locate Term/ReadKey.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.7/i386-freebsd /usr/local/lib/perl5/5.8.7 /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd /usr/local/lib/perl5/site_perl/5.8.7 /usr/local/lib/perl5/site_perl .) at /usr/local/bin/mytop line 175.

実行にはReadKey.pmが必要ということで失敗したのでReadKeyを追加します。

ReadKeyをCPANから入手して展開

Jonathan Stowe – TermReadKey-2.30 – search.cpan.org
http://search.cpan.org/~jstowe/TermReadKey-2.30/

# mv TermReadKey-2.30.tar.gz /usr/local/src/
# cd /usr/local/src/
# tar zxf TermReadKey-2.30.tar.gz
# cd TermReadKey-2.30

Makefileの作成
# perl Makefile.PL
Checking if your kit is complete…
Looks good
Writing Makefile for Term::ReadKey

コンパイル
# make
cp ReadKey.pm blib/lib/Term/ReadKey.pm
AutoSplitting blib/lib/Term/ReadKey.pm (blib/lib/auto/Term/ReadKey)
/usr/bin/perl -I/usr/local/lib/perl5/5.8.7 genchars.pl

インストール
# make install
Installing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/auto/Term/ReadKey/ReadKey.so
Installing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/auto/Term/ReadKey/ReadKey.bs
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/Term/ReadKey.pm
Installing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/auto/Term/ReadKey/autosplit.ix
Installing /usr/local/man/man3/Term::ReadKey.3
Writing /usr/local/lib/perl5/site_perl/5.8.7/i386-freebsd/auto/Term/ReadKey/.packlist
Appending installation info to /usr/local/lib/perl5/5.8.7/i386-freebsd/perllocal.pod

mytopの再実行
# mytop -uhoge -phogehoge
オプションの内容は-u[ユーザ名] -p[パスワード]です。
これでMySQLの負荷を簡単に確認できるようになりました。

次にapachetopを試します。

apachetopを入手して展開

ApacheTop – Trac
http://www.webta.org/projects/apachetop/

# mv apachetop-0.12.6.tar.gz /usr/local/src/
# cd /usr/local/src/
# tar zxf apachetop-0.12.6.tar.gz
# cd apachetop-0.12.6

設計
# ./configure

コンパイル
# make

インストール
# make install
Making install in man
/bin/sh ../config/mkinstalldirs /usr/local/man/man1
/usr/bin/install -c -m 644 ./apachetop.1 /usr/local/man/man1/apachetop.1
Making install in src
/bin/sh ../config/mkinstalldirs /usr/local/bin
/usr/bin/install -c apachetop /usr/local/bin/apachetop
Making install in config

実行
/usr/local/bin/apachetop -f ログファイル名
apachetopはログファイルのリアルタイム監視を行います。私の環境ではログファイル名を常に変える形のローテーションなので日付変更と同時に中断して新しいログファイル名でコマンドを打ちます。rpm版Apacheのようにデフォルトがシステムでローテーションさせてる場合はどうなるんでしょうね?そこまで気長に放置しませんがw

Apacheクックブックは駄本でした。。。

最近凄い勢いで他人のソースを見てデバッグする機会が多く、多重にrequireしているソースになるともうかなり面倒です。特に動的ページ同士のパラメータのやり取りに関しては仕様書がないとソース解析の範囲が一気に増えて面倒です。

そうなって来るとプログラムにトレースを打ちまくって確認するのですが、他人が管理しているプログラムに改造しまくるのはサーバが余っていてコピー環境作成できないと難しい…。あとファイル数やポイントが多ければそれだけでも大変な作業になる。

GETに関してはApacheログに普通に出せるので楽だが、殆どはPOSTの中が重要だったりします。それでApacheでPOSTの情報を出せないかと探索してもPOSTの長さを出すのが精一杯。さらに検索すると『Apacheクックブック』の目次に『POSTの内容をログに記録する』というのがあるじゃありませんか、早速Googleブック検索で調べたら日本語版なし、まぁApacheの設定だし英語でもドンと来い状態なので英語も検索するとログの章は非公開。

買うしかないのかと即注文して今日届いたのですが、

本書を執筆している時点では、そのようなフィルタは存在しない。

目次では2ページ分だったので少しは期待しましたが1ページ目が7行(3行は回答、残りは言い訳)で2ページ目は言い訳の残りが2行で終了です。

他にも『クライアントのMACアドレスをログに記録する』で、ネットワークの仕様上、常識的に不可能でMACアドレス取得しても直近のルータやロードバランサーのMACアドレスだから負荷分散等に使うのかな?て見たら。

Aapcheでは全くできない

この項目も全部で6行です。他の項目もApacheサイトや一般的なApache本で普通に書いてることと同じだし、こんな個人ブログにだらだらと書いた内容の寄せ集めみたいな本だったので無駄投資。買う人が詐欺被害に会ったみたいでかわいそうだし面倒で転売する気も起きません。。。orz

他のものに例えたらフォローが中途半端な質問掲示板そのものですね。質問だけあって、解決になって無い無駄書きと不可能発言のスレッドみたいです。(ググってもこういうのによく当たりますね:;)

さてApache2でPOST内容の書き出しは一旦置いといて別のサーバ構築しますか(´・ω・)

ApacheのBASIC認証

あまりにも定番過ぎてどこにも書いてなかったw 健忘録としてカキコ。

下記はディレクトリ/usr/local/apache/htdocs/test2に
testuserで認証する場合の記述です。
AuthUserFileはパスワードファイルの設置場所
AuthNameは認証ダイアログに記述するメッセージです。

#httpd.conf内で設定する場合の記述
<directory “=”” usr=”” local=”” apache=”” htdocs=”” test2″=””>
AuthType Basic
AuthName “Please enter username and password”
AuthUserFile /usr/local/apache/conf/.htpasswd
Require user testuser

#対象ディレクトリに.htaccessを作成する場合の記述
AuthType Basic
AuthName “Please enter username and password”
AuthUserFile /usr/local/apache/conf/.htpasswd
Require user testuser

ユーザを指定せずにパスワードファイルに入っているユーザ全てに許可する場合は
Require user testuserの行をRequire valid-userにします。

パスワードファイルの生成方法は
/usr/local/apache/bin/htpasswd -c /usr/local/apache/conf/.htpasswd testuser

というようにします。
-cはcreate(新規作成)なので同じパスワードファイルにユーザを追加する時は
-cオプションを外してください。

.htaccessを使う場合はhttpd.confで利用可能にされているかどうかとディレクトリで設定の上書き可能かのチェックが必要です。