O Linode foi atualizado de novo~ Mas como a máquina antiga na sala de computadores japonesa vai levar algumas semanas para atualizar, mal posso esperar, então abri uma nova máquina, planejando voltar para casa e, aliás, varrer o lixo desnecessário do servidor.
A nova máquina usa o script de instalação lnmp com um clique que eu mesmo escrevi (na verdade, a maior parte do código está disponível online = =##), e depois de criar o script no DigitalOcean, coloquei no Linode para instalar. Não houve problema com a instalação e a mudança, mas assim que foi reiniciado após a instalação, surgiu um problema.
Após reiniciar, faz sentido que o Nginx inicie automaticamente, mas após esperar muito, o site ainda não pode ser acessado. Faça login no SSH e execute:
Início do serviço NGINX
Inicie o Nginx manualmente e o site estará acessível em pouco tempo. O script de auto-início está ok, e não há problema com inicialização manual, por que o nginx simplesmente não inicia?
Olhando os logs, encontrei uma frase como esta:
02/05/2014 17:02:28 [emergência] 2912#0: bind() para [2400:8900::f03c:91ff:fe6e:5889]:80 falhou (99: Não é possível atribuir endereço solicitado)
Parece que, ao iniciar o Nginx, o IPv6 não foi inicializado, então a inicialização falhou. Quando faço login no SSH e inicio o Nginx manualmente, o IPv6 já foi inicializado, então ele pode iniciar normalmente.
Provavelmente já adivinhou o motivo, como resolver isso? Depois de um longo dia no Google, encontrei um problema e solução semelhantes no ServerFault, e vou registrar aqui.
Insira em /etc/sysctl.conf:
- sysctl -w net.ipv6.conf.eth0.dad_transmits=0
Copiar código Ou:
Adicione uma linha em /etc/network/interfaces:
- post-up while ip -6 addr show tentative | grep . > /dev/null ; do sleep 1 ; done
Copiar código Eu uso o último método para resolver o problema.
|