Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 12629|Antwort: 0

[Web] Nginx Selbststart ist fehlgeschlagen

[Link kopieren]
Veröffentlicht am 30.05.2015 23:46:28 | | |

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:
  1. sysctl -w net.ipv6.conf.eth0.dad_transmits=0
Code kopieren
Oder:

Füge eine Leitung in /etc/network/interfaces hinzu:
  1. 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.




Vorhergehend:Über Discuz! (X3.1) Wie man HTTPS-Verschlüsselung aktiviert
Nächster:Teilnehmende Projekte des Houpu Cup
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com