Linode har blitt oppgradert igjen~ Men fordi den gamle maskinen i det japanske datarommet vil ta noen uker å oppgradere, gleder jeg meg, så jeg åpnet en ny maskin, planla å flytte hjem, og forresten, feie bort unødvendig søppel på serveren.
Den nye maskinen bruker lnmp ett-klikk installasjonsskriptet jeg skrev selv (faktisk finnes mesteparten av koden på nettet = =##), og etter å ha laget skriptet på DigitalOcean, la jeg det på Linode for installasjon. Det var ingen problemer med installasjon og flytting, men så snart den ble startet på nytt etter installasjon, oppsto det et feil.
Etter omstart er det rimelig å anta at Nginx starter automatisk, men etter lang venting kan nettsiden fortsatt ikke nås. Logg inn på SSH og utfør:
Tjeneste NGINX Start
Start Nginx manuelt, og nettsiden vil være tilgjengelig på kort tid. Det selvstartende skriptet fungerer fint, og det er ikke noe problem med manuell oppstart, hvorfor starter nginx bare ikke?
Da jeg så gjennom loggene, fant jeg en linje som dette:
2014/05/02 17:02:28 [emerg] 2912#0: bind() til [2400:8900::f03c:91ff:fe6e:5889]:80 feilet (99: Kan ikke tildele forespurt adresse)
Det føles som om når jeg starter Nginx, har ikke ipv6 blitt initialisert, så oppstarten feilet. Når jeg logger inn på SSH og manuelt starter Nginx, er IPv6 allerede initialisert, så det kan starte normalt.
Sannsynligvis gjettet grunnen, hvordan løse det? Etter en lang dag med Google fant jeg et lignende problem og en løsning på ServerFault, og jeg vil skrive det ned her.
Sett inn i /etc/sysctl.conf:
- sysctl -w net.ipv6.conf.eth0.dad_transmits=0
Kopier koden Eller:
Legg til en linje i /etc/network/interfaces:
- post-up while ip -6 addr show tentative | grep . > /dev/null ; do sleep 1 ; done
Kopier koden Jeg bruker sistnevnte metode for å løse problemet.
|