Lo he instalado nginx
usando esta sources.list.d
entrada:
deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx
La versión de nginx es 1.12.2-1~xenial
. El servidor ejecuta Ubuntu 16.04 LTS, con kernel 4.4.0-36-generic
.
Mi problema es que el nginx
demonio no se inicia:
$ sudo systemctl start nginx
Job for nginx.service failed because a timeout was exceeded. See "systemctl status nginx.service" and "journalctl -xe" for details.
Lamentablemente, estos registros no proporcionan mucha información:
$ sudo journalctl -xe
Feb 05 10:43:50 SERVERNAME nginx[17035]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Feb 05 10:43:50 SERVERNAME nginx[17035]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Feb 05 10:45:21 SERVERNAME systemd[1]: nginx.service: Start operation timed out. Terminating.
Feb 05 10:45:21 SERVERNAME systemd[1]: Failed to start nginx - high performance web server.
-- Subject: Unit nginx.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit nginx.service has failed.
--
-- The result is failed.
Feb 05 10:45:21 SERVERNAME systemd[1]: nginx.service: Unit entered failed state.
Feb 05 10:45:21 SERVERNAME systemd[1]: nginx.service: Failed with result 'timeout'.
Por lo que puedo decir,De hecho, nginx se inicia correctamente.. Es como si el proceso principal no recibiera correctamente el mensaje "Estoy iniciado" de sus procesos secundarios, siendo el problema. Cuando se está ejecutando (systemd esperando a que se inicie), puedo rizarlo exitosamente de esta manera:
$ curl http://localhost:8000
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.12.2</center>
</body>
</html>
Me siento perdido en esto, aparte de probar quizás otra nginx
versión o algo así. ¿Algunas ideas? Podría reiniciar el servidor pero parece una tontería en un servidor Linux.
Actualización 9:56 UTC: Probado con 1.13.8-1~xenial
el mismo problema.
Respuesta1
Finalmente encontré el problema, era una tontería...
Comencé mi nginx
configuración copiando la configuración de un contenedor Docker, que tenía esta configuración en su nginx
configuración:
daemon off;
Esto estaba justo en el escenario de Docker (donde el nginx
proceso se ejecutaba con runit
, es decir, ningún systemd
estilo init lo controlaba). Tenía el efecto de que nginx
nunca se demonizaría y devolvería el control a systemd -> se trataría como "se agotó el tiempo de espera con problema desconocido", y systemd
lo mataría.
Entonces, esto terminó siendo un simple error de configuración. Quería publicarlo aquí, ya que podría ayudar a otros que también cometen este torpe error. :-)
Detalles completos sobre esta palabra clave:http://nginx.org/en/docs/ngx_core_module.html#daemon
Respuesta2
Lo que también podría ser problemático es la configuración personalizada de la localización de pid en nginx.conf:
pid ../logs/nginx.pid;
debe estar alineado con la configuración PIDFile en el archivo nginx.service (/lib/systemd/system/nginx.service): PIDFile=/var/run/nginx.pid
Aquí no está ;]
Respuesta3
Esto también puede suceder al copiar la configuración de nginx a openresty. Tenía esta línea en la configuración y openresty no se iniciaba como servicio:
pid /run/nginx.pid;