На сервере Apache (2.4.37), работающем на CentOS 8, должно быть перенаправление HTTP-трафика с порта 8765 на порт https по умолчанию. . Поэтому я пытаюсь заставить сервер прослушивать порт 8765, чтобы настроить виртуальный хост, который прослушивает этот порт. Но здесь уже ничего не получается.
Когда я просто добавляю строку Listen 8765
в строку 4 файла conf в /etc/httpd/conf.d/
и перезапускаю apache, появляется следующая ошибка:
AH00526: Syntax error on line 4 of /etc/httpd/conf.d/redirect-8765.conf:
Systemd socket activation is used, but this port is not configured in systemd
(Вопреки сообщению об ошибке, возможно, это не синтаксическая ошибка, поскольку проблема связана с конфигурацией порта systemd.)
Просмотр справочной страницы httpd.socket ( 8)
, я нашел следующие инструкции:
Конфигурация прослушивателя httpd должна точно соответствовать параметрам ListenStream, настроенным для модуля httpd.socket. [...] Если в конфигурацию httpd добавлены дополнительные директивы Listen, соответствующие параметры ListenStream должны быть добавлены через добавляемые файлы, например, через systemctl edit httpd.socket.
Был добавленный файл для ssl ( называется 10-listen443.conf
) по адресу /usr/lib/systemd/system/httpd.socket.d/
, где я написал другой файл с именем 20-redir8765 .conf
со следующим содержимым:
[Socket]
ListenStream=8765
Это ничего не решило, поэтому я попытался выполнить, согласно справочной странице, systemctl edit httpd.socket
, который редактировал файл / и т.д. / systemd / system / httpd.socket.d / override.conf
. Там я вставил те же строки, что и выше. Это также привело к тому же сообщению об ошибке, но при удалении директивы Listen
из файла конфигурации httpd (не из конфигурации сокета systemd) и перезапуске сервера статус сервера показал следующее:
httpd.socket - Apache httpd Server Socket
Loaded: loaded (/usr/lib/systemd/system/httpd.socket; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/httpd.socket.d
└─10-listen443.conf, 20-redir8765.conf
/etc/systemd/system/httpd.socket.d
└─override.conf
Active: active (running) since Fri 2020-09-11 14:18:09 UTC; 2h 2min ago
Docs: man:httpd.socket(8)
Listen: [::]:80 (Stream)
[::]:443 (Stream)
[::]:8765 (Stream)
[::]:8765 (Stream)
CGroup: /system.slice/httpd.socket
Предполагая, что теперь порты активируются через systemd, я повторно вставил директиву Listen
. Но затем возникла та же самая начальная ошибка.
В этих обстоятельствах, как я могу добавить VirtualHost, который прослушивает порт?
РЕДАКТИРОВАТЬ: В systemctl status httpd.socket
отображается другая информация. 11138369] по сравнению с
systemctl status httpd
, который я ранее не заметил. Удаление override.conf
, вставка директивы Listen 8765
, остановка httpd.service
, а также httpd.socket
и, наконец, запуск httpd.socket
до httpd.service
заставлял все работать - на данный момент. Чтобы проверить, сохранятся ли настройки после перезагрузки, компьютер был перезагружен, но теперь время ожидания соединения SSH истекло и эхо-запрос не прошел.
Следует отметить существенную разницу при запросе статуса httpd.service
и httpd.socket
, последний из которых был позвонил непреднамеренно. Раньше я упускал это из виду, что усложняло отладку.
Проблема, похоже, заключалась в неправильной перезагрузке конфигурации. Можно было бы перезагрузить машину, но если вам нужно, чтобы она работала, перезапуска httpd.socket
может быть достаточно на некоторых машинах. Однако это не сработало для меня. Надежно работали следующие команды в указанном порядке:
systemctl daemon-reload
systemctl stop httpd.socket
systemctl stop httpd.service
systemctl start httpd.socket
systemctl start httpd.service
Чтобы сохранить пользовательский вставной файл от перезаписи обновлениями пакета, я переместил его из /usr/lib/systemd/system/httpd.socket. .d/
— /etc/systemd/system/httpd.socket.d/
.
Неудачная перезагрузка после обновления OP была не связанной с RAID проблемой.