Linode wurde wieder aufgerüstet~ Aber da der alte Rechner im japanischen Computerraum ein paar Wochen zum Upgrade braucht, kann ich es kaum erwarten, also habe ich einen neuen Rechner geöffnet, mit dem Plan, nach Hause zu ziehen, und übrigens den unnötigen Müll vom Server wegzufegen.
Die neue Maschine verwendet das lnmp-Ein-Klick-Installationsskript, das ich selbst geschrieben habe (tatsächlich ist der Großteil des Codes online zu finden = =##), und nachdem ich das Skript auf DigitalOcean erstellt hatte, habe ich es auf Linode installiert. Es gab kein Problem mit der Installation und dem Umzug, aber sobald es nach der Installation neu gestartet wurde, gab es ein Problem.
Nach einem Neustart liegt es nahe, dass Nginx automatisch starten sollte, aber nach langer Wartezeit ist die Website immer noch nicht zugänglich. Melde dich bei SSH an und führe aus:
Dienst NGINX Start
Starten Sie Nginx manuell, und die Website ist im Handumdrehen zugänglich. Das Selbststart-Skript ist in Ordnung, und es gibt kein Problem mit manuellem Start – warum startet nginx einfach nicht?
Beim Durchsehen der Protokolle fand ich eine Zeile wie diese:
2014/05/02 17:02:28 [emerg] 2912#0: bind() zu [2400:8900::f03c:91ff:fe6e:5889]:80 fehlgeschlagen (99: Angeforderte Adresse kann nicht zugewiesen werden)
Es fühlt sich so an, als wäre IPv6 beim Start von Nginx nicht initialisiert worden, sodass der Start fehlgeschlagen ist. Wenn ich mich bei SSH anmelde und Nginx manuell starte, wurde IPv6 bereits initialisiert, sodass es normal starten kann.
Wahrscheinlich habe ich den Grund erraten, wie man das löst? Nach einem langen Tag mit Google habe ich auf ServerFault ein ähnliches Problem und eine ähnliche Lösung gefunden, und ich werde es hier festhalten.
Insert in /etc/sysctl.conf:
- sysctl -w net.ipv6.conf.eth0.dad_transmits=0
Code kopieren Oder:
Füge eine Leitung in /etc/network/interfaces hinzu:
- post-up while ip -6 addr show tentative | grep . > /dev/null ; do sleep 1 ; done
Code kopieren Ich benutze letztere Methode, um das Problem zu lösen.
|