Активация сокета Systemd для нескольких портов на Apache

На сервере 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 истекло и эхо-запрос не прошел.

0
задан 14 September 2020 в 15:22
1 ответ

Следует отметить существенную разницу при запросе статуса 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 проблемой.

0
ответ дан 18 September 2020 в 10:42

Теги

Похожие вопросы