Linode is weer geüpgraded~ Maar omdat de oude machine in de Japanse computerruimte een paar weken nodig heeft om te upgraden, kan ik niet wachten, dus heb ik een nieuwe machine geopend, met het plan om naar huis te verhuizen, en trouwens, het onnodige afval van de server weg te vegen.
De nieuwe machine gebruikt het lnmp één-klik installatiescript dat ik zelf heb geschreven (in feite is het grootste deel van de code online te vinden = =##), en nadat ik het script op DigitalOcean had gemaakt, heb ik het op Linode gezet om te installeren. Er was geen probleem met installatie en verplaatsen, maar zodra het opnieuw werd opgestart na de installatie, was er een probleem.
Na het herstarten is het logisch dat Nginx automatisch zou moeten starten, maar na lange tijd wachten is de website nog steeds niet toegankelijk. Log in op SSH en voer uit:
Dienst nginx start
Start Nginx handmatig en de website is in een mum van tijd toegankelijk. Het zelfstartende script werkt prima, en er is geen probleem met handmatig starten, waarom start nginx gewoon niet?
Toen ik de logboeken doorzocht, vond ik een regel als deze:
2014/05/02 17:02:28 [emerg] 2912#0: bind() aan [2400:8900::f03c:91FF:FE6e:5889]:80 mislukt (99: Kan het gevraagde adres niet toewijzen)
Het voelt alsof IPv6 bij het starten van Nginx nog niet is geïnitialiseerd, dus de opstart is mislukt. Wanneer ik inlog op SSH en Nginx handmatig start, is IPv6 al geïnitialiseerd, dus het kan normaal starten.
Waarschijnlijk had ik de reden geraden, hoe los je het op? Na een lange dag Google vond ik een soortgelijk probleem en oplossing op ServerFault, en ik zal het hier vastleggen.
Invoegen in /etc/sysctl.conf:
- sysctl -w net.ipv6.conf.eth0.dad_transmits=0
Code kopiëren Of:
Voeg een lijn toe in /etc/network/interfaces:
- post-up while ip -6 addr show tentative | grep . > /dev/null ; do sleep 1 ; done
Code kopiëren Ik gebruik de laatste methode om het probleem op te lossen.
|