O nginx expira no início

O nginx expira no início

Eu instalei nginxusando esta sources.list.dentrada:

deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

A versão nginx é 1.12.2-1~xenial. O servidor está rodando Ubuntu 16.04 LTS, com kernel 4.4.0-36-generic.

Meu problema é que o nginxdaemon não 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.

Infelizmente, esses registros não fornecem muitas informações:

$ 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'.

Pelo que posso dizer,O nginx realmente inicia corretamente. É como se o processo pai não recebesse a mensagem "Comecei" de seu (s) processo (s) filho (s) corretamente, sendo o problema. Quando está em execução (systemd aguardando a inicialização), posso enrolá-lo com sucesso assim:

$ 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>

Sinto-me perdido nisso, além de talvez testar outra nginxversão ou algo assim. Alguma ideia? Eu poderia reiniciar o servidor, mas parece bobo em um servidor Linux.

Atualização 9:56 UTC: testado com 1.13.8-1~xenialo mesmo problema.

Responder1

Acabei descobrindo o problema, esse era bobo ...

Eu comecei minha nginxconfiguração copiando as configurações de um contêiner Docker, que tinha esta configuração em sua nginxconfiguração:

daemon off;

Isso estava certo no cenário do Docker (onde o nginxprocesso estava sendo executado com runit, ou seja, nenhum systemdestilo init o estava controlando). Teve o efeito de nginxnunca daemonizar e retornar o controle para o systemd -> seria tratado como "tempo limite esgotado com problema desconhecido", e systemdiria matá-lo.

Então, isso acabou sendo um simples erro de configuração. Queria postar aqui, pois pode ajudar outras pessoas que também cometem esse erro desajeitado. :-)

Detalhes completos sobre esta palavra-chave:http://nginx.org/en/docs/ngx_core_module.html#daemon

Responder2

O que também pode ser problemático é a configuração personalizada da localização do pid no nginx.conf:

pid../logs/nginx.pid;

ele deve estar alinhado com a configuração PIDFile no arquivo nginx.service (/lib/systemd/system/nginx.service): PIDFile=/var/run/nginx.pid

Aqui não está ;]

Responder3

Isso também pode acontecer ao copiar a configuração do nginx para o openresty. Eu tinha esta linha na configuração e o openresty não iniciava como um serviço:

pid /run/nginx.pid;

informação relacionada