Linode a de nouveau été mis à jour~ Mais comme l’ancienne machine dans la salle informatique japonaise prendra quelques semaines à être mise à jour, j’ai hâte, alors j’ai ouvert une nouvelle machine, prévoyant de rentrer chez moi, et au fait, de balayer les déchets inutiles sur le serveur.
La nouvelle machine utilise le script d’installation en un clic de lnmp que j’ai moi-même écrit (en fait, la plupart du code se trouve en ligne = =##), et après avoir créé le script sur DigitalOcean, je l’ai mis sur Linode pour l’installer. Il n’y a eu aucun problème d’installation et de déplacement, mais dès qu’il a été redémarré après l’installation, il y a eu un problème.
Après redémarrage, il est logique que Nginx démarre automatiquement, mais après une longue attente, le site web reste inaccessible. Connectez-vous à SSH et exécutez :
Service Nginx Start
Lancez Nginx manuellement, et le site web sera accessible en un rien de temps. Le script de démarrage automatique fonctionne bien, et il n’y a pas de problème de démarrage manuel, pourquoi nginx ne démarre-t-il tout simplement pas ?
En parcourant les journaux, j’ai trouvé une phrase comme celle-ci :
02/05/2014 17:02:28 [URGENCE] 2912#0 : bind() vers [2400:8900 ::f03c :91ff :fe6e :5889] :80 échoué (99 : impossible d’attribuer l’adresse demandée)
J’ai l’impression qu’au démarrage de Nginx, IPv6 n’a pas été initialisé, donc le démarrage a échoué. Quand je me connecte à SSH et que je lance Nginx manuellement, IPv6 a déjà été initialisé, donc il peut démarrer normalement.
Vous avez probablement deviné la raison, comment résoudre ça ? Après une longue journée sur Google, j’ai trouvé un problème et une solution similaires sur ServerFault, et je vais l’enregistrer ici.
Insérer dans /etc/sysctl.conf :
- sysctl -w net.ipv6.conf.eth0.dad_transmits=0
Code de copie Ou:
Ajoutez une ligne dans /etc/network/interfaces :
- post-up while ip -6 addr show tentative | grep . > /dev/null ; do sleep 1 ; done
Code de copie J’utilise cette dernière méthode pour résoudre le problème.
|