Я не могу перезапустить apace2, если я открываю порт SSL 443 в файле `/etc/apache2/ports.conf ` в ubuntu 18.04LTS
У меня проблема в 18.04
Я хочу настроить 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 ответ
Я провел небольшое исследование - да, в версиях Apache2, которые поставляются с Ubuntu 16.04 и Ubuntu 18.04, существует разное поведение.
16.04 поставляется с Apache/2.4.18, и неважно, сколько раз вы будете повторять идентичные директивы Listen - я проверял это на виртуальной машине.
18.04 поставляется с Apache/2.4.29 и в текущей документации Apache2.4 написано:
Состояние ошибки
Многократные директивы Listen для одного и того же IP-адреса и порта приведут к сообщению об ошибке "Адрес уже используется".
В вашем случае директива Listen 443
появляется дважды в конфигурации Apache, поэтому в соответствии с этими новыми правилами нормально получить вышеуказанную ошибку.
По умолчанию в пределах 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'
Дальнейшее чтение: Как обезопасить Apache с Let's Encrypt.