プロが教える店舗&オフィスのセキュリティ対策術

長い質問ですみません。随分試行錯誤した上でまだ悩んでいます。

無料プロバイダを個人運営でやっているものなんですが、
サーバーのログをhttp.confの設定でこんな感じで作成し、

CustomLog /var/log/apache/XXX.XXX.ne.jp-access.log combined

これをCSV扱いしてCGIで読み取り、解析をしています。
自動的に一週間でログの切り替えを行っている様で最初はこれでよかったのですが、アクセスが増えるにつれcgiとログファイルが非常に重くなってきました。

そこで、以下のことをしようと思っています。
cronを使えば良いのではないかと思いました。

1.一定のアクセスの少ない時刻にログ圧縮をかける
(圧縮ファイルは上書きでよい。どっちみちそんなに遡っては見ないので)
2.apacheを再起動する
(再起動かけないと新しいlogファイルが作成されない様なので)

ちなみに手動では以下の方法で出来ました。
gzip /var/log/apache/XXX.XXX.ne.jp-access.log
ps x
kill プロセスID
/usr/sbin/apache

でも自動だと kill プロセスIDがダメなんです。
同じIDでapacheが起動してくれないので・・・。

1.apacheを一定時間に確実に再起動させる方法

2.それ以外の1日単位でログファイルの切り替えを行う方法
CGIが一定ファイルを読む仕掛けになってるので現在アクティブなファイルは
同じのままという条件で

のどちらかを教えてください。

ちなみに、
http://www.rfs.co.jp/server/apache/06.html
の方法はhttpd.pidがwhereisとかfind探しても見つからないという
理由により挫折してますのでこれはアドバイスしないでください。
見つける方法がわかればそれでもまあいいのですが。

A 回答 (2件)

apacheがインストールされているOSは何でしょう?


もしRH-Linuxだとしたら、/etc/rc.d/init.d に、httpd.init という起動スクリプトが存在しますので、それを介し、停止と起動を行うのが宜しいかと思います。

/etc/rc.d/init.d/httpd.init stop
/etc/rc.d/init.d/httpd.init start

apacheのバージョンによっては、restart 引数も存在します。
また、やはりバージョンによっては apachectlコマンド(apacheの制御用シェルスクリプト)が別途インストールされている場合もあります。

その辺り、elthyさんの環境をもう一度調べてみてください。
    • good
    • 0
この回答へのお礼

Debine Linuxです。
共通のファイルがある可能性もあると思うので、
もう一度調べてみます。

お礼日時:2001/06/11 18:20

そうそう、どうしてもkillコマンドでプロセスを処理したい場合は、httpd.conf に



PidFile /var/run/httpd.pid

といった様な記述が見つかるかと思います。
この /var/run/httpd.pid ファイルに、apacheのプロセスIDがテキスト数字で保存されますので、

kill -KILL `cat /var/run/httpd.pid`

とすれば、現在起動中のapacheのプロセスIDを指定出来ます。

この回答への補足

この方法でうまくみつかりました。
こうなったらしめたものです。有難うございました。

補足日時:2001/06/11 23:12
    • good
    • 0
この回答へのお礼

なるほど、そこにあったんですね。
もう一度httpd.confをスミズミまで読み直してみます。
あればイイのですが。

お礼日時:2001/06/11 18:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!