Как начать использовать httpd с активацией сокета (systemd)?

14

Сервер Apache httpd редко требуется на одном из наших небольших серверов, поэтому было бы неплохо запустить его через активацию сокета с помощью systemd (а затем остановить его, когда в течение некоторого времени не было трафика). Возможно ли это и если да, то как?

Даниил
источник
Перефразировано выше, и время редактирования истекло на 5 минут. Практические эффекты могут быть бесполезны. Клиент должен подключиться с помощью команды запуска, прежде чем делать обычные запросы. Клиент заранее не знает, работает ли httpd, поэтому команду запуска необходимо отправить перед любыми обычными запросами. Задержка будет высокой. В реальной жизни пауки и боты мира могут постоянно поддерживать апач. Вопрос можно перефразировать, чтобы дать ответы типа «используйте легкий http-сервер, такой как lighthttpd, и оставляйте его всегда включенным».
Rleir

Ответы:

2

Это возможно с Apache 2.5 с mod_systemd .

Для более старых выпусков Apache вы можете использовать systemd-socket-proxyd (8), но это не приведет к автоматической остановке службы Apache после истечения времени ожидания.

Siosm
источник
На самом деле это реализовано в ядре сервера , а не в mod_systemd . (Таким образом, сборка mod_systemd для Apache 2.4 не даст вам активацию сокета.)
Julian
0

Файл:

httpd.socket

Содержание:

[Socket]
ListenStream=80
ListenStream=0.0.0.0:80
#BindIPv6Only=ipv6-only
After=network.target
Requires=network.target

[Install]
WantedBy=sockets.target

Убедитесь, что служба apache также называется httpd.

dizzi90
источник
это не работает, потому что порт не перенаправляется на httpd.service с httpd.socket
Эдвард Торвальдс,