Während des Systemstarts von CentOS 7 schlägt nginx mit dem folgenden Fehler fehl:
2014/08/04 17:27:34 [emerg] 790#0: bind() to a.b.c.d:443 failed (99: Cannot assign requested address)
Ich vermute, dass dies passiert, weil die Netzwerkschnittstellen noch nicht aktiv sind, bevor versucht wird, eine Verbindung zu dieser IP-Adresse herzustellen, um einen vhost über SSL bereitzustellen.
Ich schätze, ich muss network.service als Voraussetzung für nginx.service angeben, kann den Netzwerkdienst jedoch überhaupt nicht in / etc / systemd / finden.
Wie kann ich den Serviceauftrag oder die Abhängigkeiten in systemd konfigurieren?
Antworten:
Sie müssen mindestens
After=network.target
im[Unit]
Abschnitt Ihrer Gerätedatei sicherstellen, dass das Netzwerk aktiv ist, bevor Sie nginx starten. Ich habe keine Ahnung, warum Ihre Unit-Datei es nicht hat.Hier ist ein vollständiges Beispiel von meinem handlichen Fedora-System, wie es von Fedora geliefert wurde:
quelle
Aus dem Fehlerprotokoll geht hervor, dass es sich um Ihre Nginx-Konfiguration handelt. Datei hat eine Listen-Direktive mit einer expliziten IP-Adresse:
Dies bedeutet, dass nginx erst gestartet wird, wenn Ihre Netzwerkschnittstelle aktiv ist und der Schnittstelle die IP-Adresse abcd zugewiesen wurde.
Sie haben zwei Möglichkeiten:
Wie in http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ beschrieben, zeigt network.target nur an, dass der Netzwerkverwaltungsstapel aktiv ist [...] und ob Netzwerkschnittstellen bereits konfiguriert sind, wenn sie erreicht sind ist nicht definiert.
Wenn Sie sicherstellen möchten, dass die IP-Adresse bereits vergeben ist und die Schnittstelle aktiv ist, müssen Sie das network-online.target zur systemd-Unit-Datei Ihres nginx hinzufügen.
Ihre /etc/systemd/system/multi-user.target.wants/nginx.service-Datei sollte network-online.target in den Zeilen After = und Requires = enthalten.
quelle
network-online.target
- falls sich jemand auch wundert: ja, beidesRequires=
undAfter=
ist notwendig, weilRequires=
(wohl überraschend) keine Bestellung zwischen der erforderlichen und der erforderlichen Einheit impliziert.