web-dev-qa-db-ja.com

ubuntu 18.04LTSの `/etc/Apache2/ports.conf`のファイルでSSLポート443を開くと、apace2を再起動できません

18.04で問題が発生します。WebサイトのSSLを設定したいので、etc/Apache2/ports.confでプロファイルを編集し、Listen 443のような行を追加しますが、service Apache2 restart apahceサービスは再起動できませんが、16.04のように正常に動作します。その後、Listen 443行を削除すると、Apacheサービスが再び動作します。

それは言う:Job for Apache2.service failed because the control process exited with error code.See "systemctl status Apache2.service" and "journalctl -xe" for details.

journalctl -xe

 ubuntu apachectl[2867]: AH00526: Syntax error on line 8 of /etc/Apache2/ports.conf:
 ubuntu apachectl[2867]: Cannot define multiple Listeners on the same IP:port
 ubuntu apachectl[2867]: Action 'start' failed.
 ubuntu apachectl[2867]: The Apache error log may have more information.
 ubuntu systemd[1]: Apache2.service: Control process exited, code=exited status=1
 ubuntu systemd[1]: Apache2.service: Failed with result 'exit-code'.
 ubuntu systemd[1]: Failed to start The Apache HTTP Server.

行8は、私が追加したものです。16.04で機能します。同じことをした場合、18.04で何か変更がありますか?

1
OBENMO

私は小さな調査を実施しました-はい、Ubuntu 16.04とUbuntu 18.04に付属するApache2のバージョン間で異なる動作があります。

  • 16.04にはApache/2.4.18が付属しており、どのように関係なく何回も同じListenディレクティブを繰り返します-私はそれを仮想マシンでテストしました。

  • 18.04にはApache/2.4.29現在のApache2.4ドキュメント が書かれています:

    エラー状態

    同じIPアドレスとポートに対して複数のListenディレクティブを使用すると、アドレスが既に使用中のエラーメッセージが表示されます。

あなたの場合、ディレクティブListen 443はApacheの設定内に2回出現するため、これらの新しいルールによれば、上記のエラーを受け取るのは正常です。

デフォルトでは、ports.conf内で、ディレクティブListen 443は次のように<IfModule>タグで囲まれています。

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

つまり、mod_ssl(またはmod_gnutls)が有効な場合にのみアクティブになります。したがって、mod_sslを有効にしている場合は、Listen 443を追加する必要はありません。


次のコマンドを使用して、構成内のディレクティブListen 443が何回出現し、どこにあるかを調べることができます。

grep -rni 'listen 443' /etc/Apache2/

次のコマンドにより、どのApacheのモジュールが有効になっているかを確認できます。

Sudo apachectl -M
Sudo apachectl -M | grep 'ssl\|tls'

次のコマンドにより、サービスがポート443をリッスンしているかどうかを確認できます。

Sudo lsof -i -n -P | grep ':443'
Sudo netstat -peanut | grep ':443'

さらに読む: Let's Encrypt でApacheを保護する方法。

0
pa4080