Durante a inicialização do sistema CentOS 7, o nginx start falha com o seguinte erro:
2014/08/04 17:27:34 [emerg] 790#0: bind() to a.b.c.d:443 failed (99: Cannot assign requested address)
Suspeito que isso esteja acontecendo devido ao fato de as interfaces de rede ainda não estarem ativadas antes de tentar se vincular a esse endereço IP para servir um vhost sobre SSL.
Meu palpite é que preciso especificar o network.service como um requisito para o nginx.service, mas não consigo encontrar o serviço de rede em / etc / systemd /.
Como posso configurar a ordem de serviço ou dependências no systemd?
Respostas:
Você precisa, no mínimo,
After=network.target
na[Unit]
seção do arquivo da sua unidade, para garantir que a rede esteja funcionando antes de iniciar o nginx. Não faço ideia por que o arquivo da sua unidade não o possui.Aqui está um exemplo completo do meu prático sistema Fedora, enviado pelo Fedora:
fonte
No log de erros, parece com a sua configuração nginx. O arquivo possui uma diretiva de escuta com um endereço IP explícito:
Isso significa que o nginx não será iniciado a menos que sua interface de rede esteja ativa e o abcd IP tenha sido atribuído à interface.
Você tem duas opções:
Conforme descrito em http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/, o network.target indica apenas que a pilha de gerenciamento de rede está ativa [...] Se alguma interface de rede já está configurada quando é alcançada está indefinido.
Se você quiser ter certeza de que o endereço IP já está atribuído e a interface está ativa, adicione o network-online.target ao arquivo de unidade systemd do nginx.
Seu arquivo /etc/systemd/system/multi-user.target.wants/nginx.service deve ter network-online.target nas linhas Após = e Requer =.
fonte
network-online.target
- caso alguém também esteja se perguntando: sim, ambosRequires=
eAfter=
são necessários porqueRequires=
(sem dúvida surpreendentemente) não implica uma ordem entre a unidade necessária e a necessária.