WebminでSSL用の仮想サイトを起こして再起動しようとしました。
……が、起動しません。
先ほどまで動いており、やったことは上述の仮想サイトを追加したことだけ。そんな変な設定はしていないはずなのに……と予想外のところで嵌まってしまいました。
# systemctl start httpd.service
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
それは分かった。
# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 月 YYYY-mm-dd hh:ii:ss JST; 4s ago
## 略
mm月 dd hh:ii:ss example.jp httpd[21116]: [WWW MMM dd hh:ii:ss.xxxxxx YYYY] [so:warn] [pid 21116] AH01574: module rewrite_module is already loaded, skipping
mm月 dd hh:ii:ss example.jp httpd[21116]: (98)Address already in use: AH00072: make_sock: could not bind to address XXX.XXX.XXX.XXX:443
mm月 dd hh:ii:ss example.jp httpd[21116]: no listening sockets available, shutting down
mm月 dd hh:ii:ss example.jp httpd[21116]: AH00015: Unable to open logs
mm月 dd hh:ii:ss example.jp systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
mm月 dd hh:ii:ss example.jp kill[21118]: kill: cannot find process ""
mm月 dd hh:ii:ss example.jp systemd[1]: httpd.service: control process exited, code=exited status=1
mm月 dd hh:ii:ss example.jp systemd[1]: Failed to start The Apache HTTP Server.
mm月 dd hh:ii:ss example.jp systemd[1]: Unit httpd.service entered failed state.
mm月 dd hh:ii:ss example.jp systemd[1]: httpd.service failed.
確かに起動していませんね……何故。
(98)Address already in use: make_sock: could not bind to address
のエラーメッセージで検索すると、ポートを占有しているからだ、という記事がヒットしました。
Address already in use
でcould not bind to address
なので確かにダメなのでしょうけど、心当たりがない。
# lsof -i | grep httpd
#
# netstat -lnp | grep :443
#
何故か生き残っているプロセスとかいませんね。そしてlistenしているポートもなさそう。
「いないはずの何者かにポートが占有されているって、もはや幽霊かなにかか」と感じていたところ。
# less /etc/httpd/conf.d/ssl.conf
#
# When we also provide SSL we have to listen to the
# the HTTPS port in addition.
#
Listen 443 https
Listen 192.0.2.1:443
ssl.conf
の先頭にListen
が2つ。
……まさかこれでしょうか?
試しに
Listen 443 https
#Listen 192.0.2.1:443
片方をコメントアウトしてみます。
# systemctl start httpd.service
#
動いた……。
ssl.conf
なんて編集していないのですが、何故このタイミングで発生してしまったのか……謎ですが、とりあえず解決しました。