現象
httpdを再起動しようとすると、Address already in use
と言われ再起動できない。
$ sudo /etc/init.d/httpd restart
httpd を停止 [ OK ]
httpd を起動中: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
[失敗]
環境
$ httpd -v
Server version: Apache/2.2.29 (Unix)
Server built: Mar 12 2015 03:50:17
原因
httpdが異常終了する等して古いhttpdプロセスが残っていることが原因。
対策
lsofコマンドで古いプロセスを表示し、killすればよい。
$ sudo lsof -i | grep http
httpd 27512 apache 4u IPv6 90360 0t0 TCP *:http (LISTEN)
httpd 27520 apache 4u IPv6 90360 0t0 TCP *:http (LISTEN)
27512, 27520のidをもつプロセスが残っていることが分かる。
$ sudo kill -9 27512
$ sudo kill -9 27520
これで起動するようになる。
$ sudo /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]