Apacheのエラー [warn] pid file C:/Apache2.2/logs/httpd.pid overwritten —

この記事を読むのに必要な時間は約 8 分です。

この[warn] pid file・・・なんちゃらかんちゃら・・・overwritten
ずっと以前から気になってはいたのですが、
不具合というほどの不具合はなかったので、 放置していました。

今日、解決しましたので備忘録として。

下のerror.logにもあるように、
「c:apache2.2logsに前回起動した際のpidファイルが残っているので
「http.pid」ファイルを上書きしてapacheを起動しますよ。」

という意味の英語のエラーメッセージが、サーバーを立ててからapacheの起動時に繰り返し残っていました。

前から1416という数字がこのファイル内にあったのですが、
「これは何かのカウントかも?消してはダメなもの」
と思っていました。

調べたところ、UNIX系サーバーでは、apache停止時に削除されるものだということがわかりました。

放っておいても問題があるわけではないのですが、なんか気になるので、サーバーをバックアップ後、pidファイルをファイルごと削除してみました。
すると下の2回目のrestartのログからもわかるように上記のエラーが消えていました。

ずっと前から[warn] なのはおかしいな?と思っていたのですが、特に不具合もなく放置していました。
ちなみにこの「http.pid」ファイル、restartで復活します。

Apacheのログをきちんとよく読むことは大切だと思い知った1日でした。

【後日追記】
ググってみると、この問題、apache2.2をwinサービスとして登録している場合、
「前回起動した際のpidファイルが削除されない為、起きる」
という既知の不具合らしいことが判明しました。

通常、pidファイルはapache停止時に削除され、残ったままだと再起動しない、いわゆる二重起動防止のためにあるものらしいのですが、win系サーバーの場合、削除されず、また、残っていても上書きで再起動するため、問題ないということです。win系以外は起動を妨げる場合があるとのこと。

なので、このエラーはwinサーバーでは「放置」で問題ないようです。

※もしも他に情報がありましたら教えて下さい。

[Sat Dec 03 16:48:14 2011] [warn] pid file C:/Apache2.2/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Sat Dec 03 16:48:18 2011] [notice] Apache/2.2.21 (Win32) PHP/5.2.9 mod_ssl/2.2.21 OpenSSL/0.9.8r configured -- resuming normal operations
[Sat Dec 03 16:48:18 2011] [notice] Server built: Sep  9 2011 10:26:10
[Sat Dec 03 16:48:18 2011] [notice] Parent: Created child process 352
[Sat Dec 03 16:48:25 2011] [notice] Disabled use of AcceptEx() WinSock2 API
[Sat Dec 03 16:48:30 2011] [notice] Child 352: Child process is running
[Sat Dec 03 16:48:30 2011] [notice] Child 352: Acquired the start mutex.
[Sat Dec 03 16:48:30 2011] [notice] Child 352: Starting 250 worker threads.
[Sat Dec 03 16:48:30 2011] [notice] Child 352: Listening on port 443.
[Sat Dec 03 16:48:30 2011] [notice] Child 352: Listening on port 80.
<!--pidファイルを削除後、再起動-->
The Apache2.2 service is restarting.
The Apache2.2 service has restarted.
arent: Received restart signal -- Restarting the server.
[Sat Dec 03 17:22:55 2011] [notice] Child 3884: Exit event signaled. Child process is ending.
[Sat Dec 03 17:22:56 2011] [notice] Child 3884: Released the start mutex
[Sat Dec 03 17:22:59 2011] [notice] Apache/2.2.21 (Win32) PHP/5.2.9 mod_ssl/2.2.21 OpenSSL/0.9.8r configured -- resuming normal operations
[Sat Dec 03 17:22:59 2011] [notice] Server built: Sep  9 2011 10:26:10
[Sat Dec 03 17:22:59 2011] [notice] Parent: Created child process 2436
[Sat Dec 03 17:23:00 2011] [notice] Disabled use of AcceptEx() WinSock2 API
[Sat Dec 03 17:23:05 2011] [notice] Child 3884: All worker threads have exited.
[Sat Dec 03 17:23:06 2011] [notice] Child 2436: Child process is running
[Sat Dec 03 17:23:06 2011] [notice] Child 2436: Acquired the start mutex.
[Sat Dec 03 17:23:06 2011] [notice] Child 2436: Starting 250 worker threads.
[Sat Dec 03 17:23:07 2011] [notice] Child 2436: Listening on port 443.
[Sat Dec 03 17:23:07 2011] [notice] Child 2436: Listening on port 80.
[Sat Dec 03 17:23:10 2011] [notice] Child 3884: Child process is exiting

※後日、2008R2にApache2.4を入れて運用していますが、このエラーは一度も出ていません。2.2系のみに見られるエラーなのかも知れません。