SSL用の仮想サイトを追加しようとしたらApacheが起動しなくなった

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 usecould 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なんて編集していないのですが、何故このタイミングで発生してしまったのか……謎ですが、とりあえず解決しました。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。