it-swarm.com.de

So starten Sie nginx unter OS X neu

Ich verwende nginx unter OS X 10.8. Frisch installiert nginx, kann aber keinen Weg finden, nginx neu zu starten, außer kill nginx_pid sagen kill 64116. Ich frage mich, ob es bessere Möglichkeiten gibt, nginx neu zu starten.

Einige Methoden bei Google und SO gefunden, aber nicht funktioniert:

nginx -s restart

Sudo fuser -k 80/tcp ; Sudo /etc/init.d/nginx restart

Die Fehlermeldung für nginx -s restart ist

nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)

Manchmal wird auch diese Fehlermeldung angezeigt:

nginx: invalid option: "-s restart"
50
clwen

Wo befindet sich Ihre Nginx-PID-Datei? Dies wird in der Konfigurationsdatei angegeben, die Standardpfade werden zur Kompilierungszeit im Konfigurationsskript angegeben. Sie können danach suchen:

find / -name nginx.pid 2>/dev/null (muss bei laufendem nginx auftreten)

Lösung:

Sudo mkdir -p /usr/local/var/run/
ln -s /current/path/to/pid/file /usr/local/var/run/nginx.pid
17

Versuchen Sie es mit Sudo nginx vor dem Start von Nginx.

95

So laden Sie Konfigurationsdateien neu:

Sudo nginx -s reload

So starten Sie nginx vollständig neu:

Sudo nginx -s quit
Sudo nginx

Details

Es gibt kein restart Signal für Nginx. In den Dokumenten finden Sie die Signale, die der Master-Prozess akzeptiert:

SIGINT, SIGTERM  Shut down quickly.
SIGHUP           Reload configuration, start the new worker process with a new configuration, and gracefully shut down old worker processes.
SIGQUIT          Shut down gracefully.
SIGUSR1          Reopen log files.
SIGUSR2          Upgrade the nginx executable on the fly.
SIGWINCH         Shut down worker processes gracefully.

Vermutlich könnten Sie diese Signale manuell an die Prozess-ID senden, aber der Befehl nginx hat das Flag nginx -s <signal>, der für Sie Signale an den Master-Prozess sendet. Ihre Möglichkeiten sind:

stop    SIGTERM
quit    SIGQUIT
reopen  SIGUSR1
reload  SIGHUP

Keine Notwendigkeit, mit der PID manuell zu futz.


Bearbeiten: Gerade erst wurde klar, dass ein Großteil dieser Informationen bereits in Kommentaren zu den anderen Antworten enthalten war. Lassen Sie dies trotzdem hier, um die Situation zusammenzufassen.

17
tobek

So mach ich es:

Töte zuerst den Fortschritt

ps aux | grep nginx
kill -9 {pid}

Dann starte nginx

nginx

Es klappt!

6
wangchi

Als zukünftige Ressource können Sie http://wiki.nginx.org/CommandLine

Nginx wird wahrscheinlich als root ausgeführt, daher müssen Sie eine Variante des folgenden Befehls ausführen, um dies zu bewirken.

Sudo nginx -s stop | reload | quit | reopen

Normalerweise gibt es nicht viel Grund, Nginx neu zu starten, wie es Apache erfordern würde. Wenn Sie eine Konfigurationsdatei geändert haben, möchten Sie möglicherweise nur die Option zum erneuten Laden.

2
anEffingChamp

Dies könnte einfach bedeuten, dass Nginx bereits gestoppt ist und momentan nicht mehr ausgeführt wird.
Überprüfen Sie zunächst, ob nginx ausgeführt wird, und führen Sie Folgendes aus:

$ ps aux | grep nginx
1
ericn

Versuche dies:

Sudo nginx -s stop

gefolgt von einem:

Sudo nginx

Es scheint, dass Nginx seinen Zustand verfolgt. Wenn Sie es zweimal anhalten, wird es sich beschweren. Aber das Obige hat bei mir funktioniert.

1

überprüfen Sie, ob dieses Verzeichnis existiert:

/usr/local/var/run

dieser Fehler kann auftreten, wenn Nginx versucht, eine PID-Datei in einer nicht vorhandenen Lokalisierung zu initialisieren.

1
jkaluzka

ich habe den gleichen Fehler Link, den Sie, ich habe viele Möglichkeiten, um es zu beheben, aber es funktioniert nicht danach ich die Befehlszeile ausführen und es funktioniert gut: nginx -c /usr/local/etc/nginx/nginx.conf

die Informationen, die ich von hier erhielt https://blog.csdn.net/wn1245343496/article/details/77974756

1
css.cutter

Hier ist ein Fehler. Abhängig davon, ob nginx ausgeführt wird, während Sie Apache ändern/neu starten und/oder nginx-Konfigurationen ändern, kann diese Datei (die im Wesentlichen nur ein Prozess-ID-Zeiger ist) zerstört werden.

Wenn Sie versuchen, ein Signal an nginx wie zu senden

nginx -s quit;
nginx -s stop;
nginx -s reload;

nginx verwendet diese Datei, um auf die ID des Prozesses zu verweisen, an den das Signal gesendet werden soll. Wenn die Datei nicht vorhanden ist, wird die Verbindung zwischen dem aktiven Ausführungsprozess von nginx und der CLI-App effektiv unterbrochen.

Ich landete tatsächlich in einem Zustand, in dem zwei Nginx-Prozesse gleichzeitig abliefen, sodass beide beendet wurden.

Um dies zu umgehen, können Sie entweder die Beendigung bestehender Nginx-Prozesse über den Aktivitätsmonitor erzwingen (dann Nginx ausführen und von der CLI-App eine neue Nginx.pid-Datei erstellen lassen) oder, wenn Sie Nginx WIRKLICH am Laufen halten müssen, aber Nginx ausführen möchten - s reload - Erstellen Sie manuell eine Datei im Pfad/run mit dem Namen nginx.pid und fügen Sie die PID der aktuell ausgeführten nginx-Prozesse ein (über Activity Monitor abgerufen).

1

Um die benutzerdefinierte Konfigurationsdatei neu zu laden, verwenden Sie

nginx -s reload -c /etc/nginx/conf.d/<config file>.conf
1
JRomio

Eine Möglichkeit zum Stoppen oder erneuten Laden ist der folgende Befehl:

Zum stoppen:

Sudo /usr/local/nginx/sbin/nginx -s stop 

Führen Sie das Neuladen nur aus, wenn der Nginx ausgeführt wird:

Sudo /usr/local/nginx/sbin/nginx -s reload

Wenn Sie wie oben beschrieben vorgehen, wird dieses Problem nicht durch nginx: [error] open () "/usr/local/var/run/nginx.pid" verursacht

0
santhosh