Saltar al contenido

¿Cómo establecer las dependencias del servicio systemd?

No olvides que en las ciencias informáticas un error puede tener diferentes soluciones, por lo tanto aquí te enseñamos lo más óptimo y eficiente.

Solución:

Solución 1:

Necesitas, como mínimo, After=network.target en el [Unit] sección de su archivo de unidad, para asegurarse de que la red esté activa antes de iniciar nginx. No tengo idea de por qué su archivo de unidad no lo tiene.

Aquí hay un ejemplo completo de mi práctico sistema Fedora, tal como lo envió Fedora:

[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Solución 2:

Desde el registro de errores, parece que su configuración de nginx. El archivo tiene una directiva de escucha con una dirección IP explícita:

listen a.b.c.d:443

Esto significa que nginx no se iniciará a menos que su interfaz de red esté activa y la IP abcd ha sido asignada a la interfaz.

Tienes dos opciones:

  • cambie la directiva listen a: listen 443; (vincular a todas las direcciones IP)
  • hacer que nginx dependa de network-online.target

Como se describe en http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ the network.target solo indica que la pila de administración de red está activa […] No está definido si alguna interfaz de red ya está configurada cuando se alcanza.

Si desea asegurarse de que la dirección IP ya esté asignada y la interfaz esté activa, debe agregar network-online.target al archivo de unidad systemd de su nginx.

Su archivo /etc/systemd/system/multi-user.target.wants/nginx.service debe tener network-online.target en las líneas After= y Requires=.

[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target network-online.target
Requires=network-online.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Recuerda dar recomendación a esta crónica si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *