Το Linode αναβαθμίστηκε ξανά~ Αλλά επειδή το παλιό μηχάνημα στην ιαπωνική αίθουσα υπολογιστών θα χρειαστεί μερικές εβδομάδες για να αναβαθμιστεί, ανυπομονώ, οπότε άνοιξα ένα νέο μηχάνημα, σχεδιάζοντας να μετακομίσω στο σπίτι και, παρεμπιπτόντως, να σκουπίσω τα περιττά σκουπίδια στον διακομιστή.
Το νέο μηχάνημα χρησιμοποιεί το σενάριο εγκατάστασης lnmp με ένα κλικ που έγραψα μόνος μου (στην πραγματικότητα, το μεγαλύτερο μέρος του κώδικα βρίσκεται στο διαδίκτυο = =##), και αφού έφτιαξα το σενάριο στο DigitalOcean, το έβαλα στο Linode για εγκατάσταση. Δεν υπήρχε πρόβλημα με την εγκατάσταση και τη μετακίνηση, αλλά μόλις επανεκκινήθηκε μετά την εγκατάσταση, παρουσιάστηκε πρόβλημα.
Μετά την επανεκκίνηση, είναι λογικό ότι το Nginx θα πρέπει να ξεκινήσει αυτόματα, αλλά μετά από αρκετή αναμονή, ο ιστότοπος εξακολουθεί να μην είναι προσβάσιμος. Συνδεθείτε στο SSH και εκτελέστε:
Υπηρεσία NGINX START
Εκκινήστε το Nginx με μη αυτόματο τρόπο και ο ιστότοπος θα είναι προσβάσιμος σε ελάχιστο χρόνο. Το σενάριο αυτόματης εκκίνησης είναι εντάξει και δεν υπάρχει πρόβλημα με τη χειροκίνητη εκκίνηση, γιατί το nginx απλά δεν ξεκινά;
Κοιτάζοντας τα αρχεία καταγραφής, βρήκα μια γραμμή όπως αυτή:
2014/05/02 17:02:28 [emerg] 2912#0: bind() σε [2400:8900::f03c:91ff:fe6e:5889]:80 απέτυχε (99: Δεν είναι δυνατή η εκχώρηση της ζητούμενης διεύθυνσης)
Φαίνεται ότι κατά την εκκίνηση του Nginx, το ipv6 δεν έχει αρχικοποιηθεί, επομένως η εκκίνηση απέτυχε. Όταν συνδέομαι στο SSH και ξεκινάω χειροκίνητα το Nginx, το ipv6 έχει ήδη αρχικοποιηθεί, ώστε να μπορεί να ξεκινήσει κανονικά.
Μάλλον μαντέψατε τον λόγο, πώς να το λύσετε; Μετά από μια κουραστική μέρα Google, βρήκα ένα παρόμοιο πρόβλημα και λύση στο ServerFault και θα το καταγράψω εδώ.
Εισαγωγή στο /etc/sysctl.conf:
- sysctl -w net.ipv6.conf.eth0.dad_transmits=0
Αντιγραφή κώδικα Ή:
Προσθέστε μια γραμμή στο /etc/network/interfaces:
- post-up while ip -6 addr show tentative | grep . > /dev/null ; do sleep 1 ; done
Αντιγραφή κώδικα Χρησιμοποιώ την τελευταία μέθοδο για να λύσω το πρόβλημα.
|