#navi(Linuxサーバ操作管理編)
- サーバ管理はlog解析が基本らしいのですが、実は、ファイルがどこにあるのかもよく分からないところから始まります。やっと探して、logを開いてみても膨大な記録がずらずら並んでいるだけで、どう読んでよいのかまた悩むという有様です。
- 何かのトラブルの原因を調べるときには、logファイルの検索作業が必要になるでしょうが、日常的な状態管理という意味では、管理ツールのお世話になるのが一番です。
- WWWサーバには「Webalizer」という管理ツールがあり、実は、インストール時点で勝手に動作しています。主な機能としては、毎日のアクセス記録を分析集計し、どのページは読まれているか、どこからアクセスしてきているかなどを、分かりやすい図表で見れるようにしてくれるものです。
- 2年ほど前に一応動かしてみたのですが、もともとメンバーが少ないことや、コンテンツも知れた量だから、何を管理する必要もなくほったらかしになっていました。昨年、オープンなブログを始めたこともあって、きちんと使える環境にしておこうということで設定記録をまとめました。 (2007/1/21記)
#contents
*Webalizerとは [#p6c54448]
&ref(webalizer_top.jpg,,50%,top);&br;
&ref(webalizer_top.jpg,,50%,top);&br;
- これは、Webalizerのトップ画面です。アクセス記録の集計結果が、グラフと表で概要表示されています。この画面は月別ですが、詳細画面では、各月の日別集計結果を見ることができます。
- このツールは、サーバOS:Whiteboxをインストールする際に標準的に組み込まれています。ただ、いわゆるサーバソフト(デーモン)ではなくて、ログファイルを集計してブラウザで視覚的に表示するアプリケーションソフトです。1日1回(午前4時頃)実行するように自動的に設定されているので、管理者が何も設定しなくても、毎日せっせとアクセス記録を蓄積し、レポートを更新しています。
- したがって、ブラウザでページを指定するだけで、先ほどのような集計結果を見ることができます。
http://kurarinet.com/usage/
**Webalizerの設定ポイント [#x7b5f406]
- このままでも使えないわけではないのですが、一応以下の2点が、今回の調整内容となります。
+ アクセス制限の調整
+ 表示の日本語化
*Webalizerのアクセス権限 [#p64928d5]
- Webalizerのレポートは、このディレクトリー内に保存されています。
/var/www/usage
通常、ホームページのコンテンツは
/var/www/html
配下ですから、この範囲外にあるファイルには、通常はアクセスできません。
- Webalizerの設定ファイルは、ここにあります。
/etc/httpd/conf.d/webalizer.conf
- この設定内容は、デフォルトで次のようになっています。
#
# This configuration file maps the webalizer log analysis
# results (generated daily) into the URL space. By default
# these results are only accessible from the local host.
#
Alias /usage /var/www/usage
<Location /usage>
Order deny,allow
Deny from all
Allow from localhost
# Allow from .example.com
</Location>
- エイリアス設定があり、"/usage"という別名で、ドキュメントルート上に存在するとみなされるので、アクセスできるわけです。
- ただし、"Allow"ディレクティブ で、アクセス制限が行われています。デフォルトでは、localhostだけです。つまり、サーバ自体からしかアクセスできません。もし、サーバにXwindow環境が設定されていない場合は、レポートを表示する方法がないということになります。
- 管理情報なので外部には公開しませんが、LAN内の端末からは自由に検索できるようにします。したがって、設定を以下のように変更します。
【webalizer.confの変更箇所】
Allow from localhost ⇒ Allow from 192.168.1.0/24
- 最初の画面は、実は、設定変更した後のものなのです。
*Webalizerの日本語化とは [#x1c75087]
- WhiteboxのCDにあらかじめ含まれているパッケージは
webalizer-2.01_10-15.ent.i386.rpm
です。Webalizer自身はもともと日本語対応しているのですが、ソースから英語版として作られているらしいのです。
- したがって、日本語表示するためには、ソースプログラムから日本語版を作り直さなくてはいけないことになります。ところが、Linuxの場合、一つのソフトが別のソフトがインストールされていることを前提(依存関係)にしていることが多く、あるソフトのソースを見つけてきてコンパイルしても、依存関係のチェック等ではねられるケースが多く、次々と追加ソフトの入手に迫られることがあります。
- rpmファイルというのは、Red hat Package Manager の名のとおり、Redhat社が開発したパッケージ管理システムのことです。アプリケーションソフトなどに必要なプログラムファイルやリソースファイル、設定ファイルなどを一式パッケージ化してまとめて配布しています。パッケージ化されたrpmファイルの場合は、ユーザ側は余分な心配は不要で、ただダウンロードしてインストールすれば、容易に使うことができます。
- 今回の日本語表示化というのは、rpmに依らずにソースからコンパイルし直すという作業を行うわけで、様々な困難性が予想もされましたが、案の定、ハマリました。機能的にはなんら変わりませんので、無理に日本語にこだわらなければ、敢えて面倒なことはしなくてもよいのですが、何事も経験ということで試してみました。
- Webalizerの設定という主題を少し離れますが、その経過を記録することになります。
*Webalizer日本語表示の作業手順 [#c3b70b8e]
- 参考にしたサイトは2つあります。
-- [[Redhat EnterpriseのWebalizerを日本語出力化する>http://www.13hz.jp/2004/03/redhat_enterpri_1.html]]
-- [[Webalizerの表示を日本語化しましょう>http://www.obenri.com/_webalizer/webalizer_jp.html]]
- どちらも同じですが、後者の解説はとても懇切丁寧です。(自分のwikiで記事を書くのがイヤになるくらい、よくできたサイトです。実は、終わった後で見つけたのですが。。。)
- 主な作業の流れは、以下のとおりですが、3つ目のところでハマることになります(^^;)順を追って、記録しました。
++ ソースファイルを入手 (webalizer-2.01_10-15.ent.src.rpm)
++ パッケージ作成時の初期設定ファイルを変更 (webalizer.spec)
++ 日本語版rpmパッケージの作成 (rpmbuild)
++ 日本語版rpmパッケージのインストールと再設定&br;
**ソースファイルをダウンロード [#icaeff73]
- 通常のディストリビューション配布サイトならどこにでもありますが、ソース関係はディレクトリが異なるので要注意です。
ftp://ftp.riken.go.jp/Linux/whitebox/3.0/en/os/i386/SRPMS/
- wgetコマンドで、直接、自宅サーバにダウンロードします。
# wget ftp://ftp.riken.go.jp/Linux/whitebox/3.0/en/os/i386/SRPMS/webalizer-2.01_10-15.ent.src.rpm
--16:58:55-- ftp://ftp.riken.go.jp/Linux/whitebox/3.0/en/os/i386/SRPMS/webalizer-2.01_10-15.ent.src.rpm
=> `webalizer-2.01_10-15.ent.src.rpm'
ftp.riken.go.jp をDNSに問いあわせています... 134.160.38.1
ftp.riken.go.jp[134.160.38.1]:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。 ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。 ==> CWD /Linux/whitebox/3.0/en/os/i386/SRPMS ... 完了しました。
==> PASV ... 完了しました。 ==> RETR webalizer-2.01_10-15.ent.src.rpm ... 完了しました。
長さ: 273,220 (確証はありません)
100%[====================================>] 273,220 --.--K/s
16:58:55 (1.91 MB/s) - `webalizer-2.01_10-15.ent.src.rpm' saved [273,220]
**パッケージ作成時の初期設定ファイル変更 [#o6e23ae7]
- ソースファイル自体も、rpmパッケージになっています。インストールのときと同じようなrpmコマンドを実行します。
# rpm -ivh webalizer-2.01_10-15.ent.src.rpm
警告: webalizer-2.01_10-15.ent.src.rpm: V3 DSA signature: NOKEY, key ID db42a60e
1:webalizer ########################################### [100%]
-実行すると、/usr/src/redhat 配下の適当なディレクトリに解凍(展開)されます。インストールするわけではありません。
- 変更が必要なのは、次のファイルです。
/usr/src/redhat/SPECS/webalizer.spec
- ディレクトリを移動して、このファイルを開いて編集します。
# vi webalizer.spec
configureパラメータ探して、以下のように、日本語化のためのオプションを追記します。
configure --enable-dns --with-dblib=/lib
↓ (変更)
configure --enable-dns --with-dblib=/lib --with-language=japanese
**パッケージの作成 [#cf19daf1]
- いよいよrpmパッケージを作り直す山場です。rebuildというコマンドを使います。
- オプションの "-ba" を指定すると、 "/usr/src/redhat/RPMS" 以下の該当する アーキテクチャ 名のディレクトリの下にRPMが作成されると同時に "/usr/src/redhat/SRPMS" 以下に ソース 形式のRPMが作成されます。
# rpmbuild -ba webalizer.spec
エラー: Failed build dependencies:
gd-devel is needed by webalizer-2.01_10-15.ent
libpng-devel is needed by webalizer-2.01_10-15.ent
- 残念ながら、早速エラーメッセージがでましたです(^^;)
- めげずに、エラー内容を読めば、パッケージが2つ足りないみたいです。gd-devel と libpng-devel のようです。
実際に確認してみると、インストールされてないと出ます。
rpm -q rpm-build gd-devel libpng-devel
rpm-build-4.2.3-21_nonptl.WB1
パッケージ gd-devel はインストールされていません
パッケージ libpng-devel はインストールされていません
- じゃぁ、その2つをインストールするしかないわけですが、ここでは "yum install" コマンドを使います。
# yum install gd-devel libpng-devel
Gathering header information file(s) from server(s)
Server: White Box Enterprise Linux 3.0 - i386 - Base
Server: White Box Enterprise Linux 3.0 - i386 - Released Updates
Finding updated packages
Downloading needed headers
(中略)
Resolving dependencies
Dependencies resolved
I will do the following:
[install: libpng-devel 2:1.2.2-25.i386]
[install: gd-devel 1.8.4-12.3.1.i386]
Is this ok [y/N]: y
Downloading Packages
Getting libpng-devel-1.2.2-25.i386.rpm
libpng-devel-1.2.2-25.i38 100% |=========================| 163 kB 00:00
Getting gd-devel-1.8.4-12.3.1.i386.rpm
gd-devel-1.8.4-12.3.1.i38 100% |=========================| 49 kB 00:00
Running test transaction:
Test transaction complete, Success!
gd-devel 100 % done 1/2
libpng-devel 100 % done 2/2
Installed: libpng-devel 2:1.2.2-25.i386 gd-devel 1.8.4-12.3.1.i386
Transaction(s) Complete
- 最初にハマッたと書きましたが、このパッケージ追加作業に失敗しました。
-- 一つは、"yum update" としてしまったことです。単なるコマンドの使い方の勘違いですが、もともとインストールされていないわけなので、updateもくそもありません。堂々巡りをしていました。このログは何の役にも立ちませんが、失敗の記録です。
# yum update libpng-devel
Gathering header information file(s) from server(s)
Server: White Box Enterprise Linux 3.0 - i386 - Base
Server: White Box Enterprise Linux 3.0 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Cannot find any package matching libpng-devel available to be updated.
No actions to take
-- しからばと、それぞれのパッケージファイルを個別に入手して、サーバ上でインストールを試みたのですが、エラーの嵐で、どうしてよいのか分からず頓挫してしまいました。同じく失敗ログ。既にインストール済みだ!とか、依存性が未解決だ!とか、どうしようもなく怒られています。
# rpm -ivh gd-devel-1.8.4-12.3.1.i386.rpm
警告: gd-devel-1.8.4-12.3.1.i386.rpm: V3 DSA signature: NOKEY, key ID a7048f8d
Preparing... ########################################### [100%]
1:gd-devel ########################################### [100%]
# rpm -ivh libpng-devel-1.0.14-0.7x.4.i386.rpm
rpmdb: Program version 4.2 doesn't match environment version
エラー: db4 error(22) from dbenv->open: 無効な引数です
エラー: cannot open Packages index using db3 - 無効な引数です (22)
警告: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/whitebox
エラー: Failed dependencies:
libpng = 1.0.14 is needed by libpng-devel-1.0.14-0.7x.4
# rpm -ivh libpng-1.0.14-0.7x.4.i386.rpm
Preparing... ########################################### [100%]
package libpng-1.2.2-25 (which is newer than libpng-1.0.14-0.7x.4) is already installed
file /usr/share/man/man5/png.5.gz from install of libpng-1.0.14-0.7x.4 conflicts with file from package libpng-1.2.2-25
- 蛇足の失敗ログは読み飛ばして、yum install の後は、再度 rpmコマンドです。オプションの "-bb" では、"-ba"と違って、ソースファイルのパッケージは作成しません。
# rpmbuild -bb webalizer.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.25120
+ umask 022
+ cd /usr/src/redhat/BUILD
(中略)
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/webalizer-root
書き込み中: /usr/src/redhat/RPMS/i386/webalizer-2.01_10-15.ent.i386.rpm
書き込み中: /usr/src/redhat/RPMS/i386/webalizer-debuginfo-2.01_10-15.ent.i386.rpm
**日本語版のインストール [#l78cb488]
- ここまでくれば、もうシメタもの。
-まず、現在のWebalizerをuninstallします。
# rpm -e webalizer-2.01_10-15.ent
警告: /etc/httpd/conf.d/webalizer.conf saved as /etc/httpd/conf.d/webalizer.conf.rpmsave
- 警告が出ますが、Webalizerのconfに修正等を加えた場合は、削除の際に、別名で保存しておいてくれますので、再インストール時には、それをまた使えるというわけです。
- いよいよ再インストールです。
# rpm -ivh /usr/src/redhat/RPMS/i386/webalizer-2.01_10-15.ent.i386.rpm
Preparing... ########################################### [100%]
1:webalizer ########################################### [100%]
- これで完了!
最後の作業ですが、
++設定ファイルを書き戻します。
# cd /etc/httpd/conf.d
# cat webalizer.conf.rpmsave > webalizer.conf
++念のため、httpdを再起動します
# /etc/rc.d/init.d/httpd restart
httpdを停止中: [ OK ]
httpdを起動中: [ OK ]
++webalizerの実行が必要です。アプリケーションソフトですから、インストールは終わっても実行しないとレポートを作成してくれません。(ほうっておいても、明日の朝までには動いているのですが ^^;)
# webalizer
- あらためてアクセスし直すと、日本語表示になりました。
&ref(webalizer_top_j.jpg,,50%,jtop);&br;
- ほとんど代わり映えはしないのですが、まぁ、ご苦労様でした。
**yum設定ファイルの修正を! [#k1ffcdb8]
- せっかく苦労して日本語化したのに、このままでは怖いことがあります。 今後、yum update を実行すると元の英語版に戻ってしまうかもしれないのです。yumの標準パッケージのwebalizerが更新された場合に、起こりうることです。
- このため、yum の設定ファイルで、webalizerを更新対象から除外しておかなければなりません。
# vi /etc/yum.conf
- 設定ファイルを開いて、[main]セクション以下に "exclude=webalizer*" と記述します。
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=whitebox-release
( 中略 )
exclude=webalizer*
- これで安心。
#navi(Linuxサーバ操作管理編)