apacheでstopやrestartが出来なくなった場合

現象

apacheでstopやrestartをするとエラーになって、stopもrestartも出来なくなる現象が発生しました。
startは出来ます。

restartの時は、stopが失敗するので、startで既に80番ポートが使用されているというエラーに。

環境

CentOS
Apache2.3

原因

原因は、httpd.confと/etc/rc.d/init.d/httpdでpidファイルのパスの指定がずれているからでした。
pidファイルのパスを合わせてあげると、stop、restartが出来るようになります。

/etc/rc.d/init.d/httpdでのpid指定箇所

pidfile=xxxxxxxx

それでも解決しない場合

もし、pidファイルのパスが一致している場合は別の原因です。
いろいろ試して原因が見つからない又は、さくっと停止、再起動したい場合は、
無理矢理プロセスをkillすることでapacheを停止 or 再起動(起動)することが出来ます。

以下、apacheのプロセスをkillする手順

1.apacheのプロセスを確認

$ ps aux | grep httpd
root    2354 2.1 3.7 15138 7719 ?   Ss  11:13  0:00 /usr/sbin/httpd

2番目の「2354」の部分がpid(プロセス番号)になります。

2.確認したプロセスのpid(プロセス番号)を指定してapacheを停止

$ kill [pid]