¿Cómo comenzar a usar httpd con activación de socket (systemd)?

14

El servidor httpd de apache rara vez se necesita en uno de nuestros servidores pequeños, por lo que sería bueno iniciarlo mediante la activación del socket por systemd (y luego lo detuvo cuando no se produjo tráfico durante algún tiempo). ¿Es posible? y si lo es, cómo?

Daniel
fuente
Reescribió lo anterior, y la edición expiró a los 5 minutos. Los efectos prácticos pueden no ser útiles. Un cliente necesita conectarse con un comando de 'inicio' antes de realizar solicitudes normales. El cliente no sabe de antemano si httpd está activo, por lo que el comando de inicio debe enviarse antes que cualquier solicitud normal. El retraso será alto. En la vida real, las arañas y los robots del mundo pueden seguir apache perpetuamente. La pregunta podría reformularse para permitir respuestas como 'usar un servidor http ligero como lighthttpd y dejarlo siempre activo'.
Rleir

Respuestas:

2

Esto es posible con Apache 2.5 con mod_systemd .

Para versiones anteriores de Apache, puede usar systemd-socket-proxyd (8) pero esto no detendrá automáticamente el servicio Apache después de un tiempo de espera.

Siosmo
fuente
Esto se implementa realmente en el núcleo del servidor , no en mod_systemd . (Por lo tanto, construir mod_systemd para Apache 2.4 no le permitirá activar el socket.)
Julián
0

Archivo:

httpd.socket

Contenido:

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

[Install]
WantedBy=sockets.target

Asegúrese de que el servicio apache también se llame httpd.

dizzi90
fuente
esto no funciona porque el puerto no se reenvía a httpd.service desde httpd.socket
Edward Torvalds