nginx falha ao iniciar na inicialização com o systemd no Ubuntu 15.04 e 15.10

5

O nginx não inicia na inicialização, mas inicia bem manualmente. Os logs dizem algo como

nginx: [emerg] host not found in upstream "{some hostname}" in /etc/nginx/conf.d/some_site.conf
nginx: configuration file /etc/nginx/nginx.conf test failed

Failed to start A high performance web server and a reverse proxy server.
nginx.service: Unit entered failed state.
nginx.service: Failed with result 'exit-code'.

Parece que, no bootup, o dns ainda não está pronto e o nginx está tentando procurar um host que eu tenha como proxy reverso.

    
por Paul 16.01.2016 / 23:17

1 resposta

8

Após algumas pesquisas, o systemd usa o arquivo abaixo para iniciar o nginx

/lib/systemd/system/nginx.service

O arquivo no Ubuntu 15.04, no Ubuntu 15.10 e até mesmo no próprio site nginx dizem para usar a linha After como abaixo

After=network.target

Isso faz com que uma pessoa pense que a rede deve estar pronta e pronta para funcionar. No entanto, encontrei o link link que diz

network.target has very little meaning during start-up. It only indicates that the network management stack is up after it has been reached.

O link continua dizendo

network-online.target is a target that actively waits until the nework is "up", where the definition of "up" is defined by the network management software.

Então eu mudei o After use que ao invés de

After=network-online.target

Agora o nginx inicia bem no boot. Não estou afirmando que essa é a solução totalmente correta, pois é possível que um destino After diferente seja usado, o que seria mais correto de alguma outra forma, mas isso parece funcionar nas últimas reinicializações.

    
por 16.01.2016 / 23:17