Linode er blevet opgraderet igen~ Men fordi den gamle maskine i det japanske computerrum vil tage et par uger at opgradere, kan jeg næsten ikke vente, så jeg åbnede en ny maskine, planlagde at flytte hjem, og for resten, feje det unødvendige skrald væk på serveren.
Den nye maskine bruger det lnmp one-click installationsscript, jeg selv har skrevet (faktisk findes det meste af koden online = =##), og efter at have lavet scriptet på DigitalOcean, lagde jeg det på Linode for at installere. Der var ingen problemer med installation og flytning, men så snart den blev genstartet efter installationen, opstod der et problem.
Efter genstart er det rimeligt, at Nginx burde starte automatisk, men efter lang ventetid kan hjemmesiden stadig ikke tilgås. Log ind på SSH og udfør:
Service nginx start
Start Nginx manuelt, og hjemmesiden vil være tilgængelig på ingen tid. Det selvstartende script fungerer fint, og der er ikke noget problem med manuel opstart, hvorfor starter nginx bare ikke?
Da jeg kiggede gennem logbøgerne, fandt jeg en linje som denne:
2014/05/02 17:02:28 [emerg] 2912#0: bind() til [2400:8900::f03c:91ff:fe6e:5889]:80 mislykkedes (99: Kan ikke tildele den ønskede adresse)
Det føles som om, at når jeg starter Nginx, er IPv6 ikke blevet initialiseret, så opstarten fejlede. Når jeg logger ind på SSH og manuelt starter Nginx, er IPv6 allerede initialiseret, så det kan starte normalt.
Har sikkert gættet på grunden, hvordan løser man det? Efter en lang dag med Google fandt jeg et lignende problem og en løsning på ServerFault, og jeg vil notere det her.
Indsæt i /etc/sysctl.conf:
- sysctl -w net.ipv6.conf.eth0.dad_transmits=0
Kopier kode Eller:
Tilføj en linje i /etc/network/interfaces:
- post-up while ip -6 addr show tentative | grep . > /dev/null ; do sleep 1 ; done
Kopier kode Jeg bruger sidstnævnte metode til at løse problemet.
|