web-dev-qa-db-fra.com

Comment redémarrer nginx sur OS X

J'utilise nginx sur OS X 10.8. Fraîchement installé nginx mais ne trouve pas de moyen de redémarrer nginx sauf kill nginx_pid dire kill 64116. Vous vous demandez s’il existe de meilleurs moyens de redémarrer nginx.

Quelques méthodes trouvées sur Google et SO mais ne fonctionnaient pas:

nginx -s restart

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

Le message d'erreur pour nginx -s restart est

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

Parfois, obtenez aussi cette erreur msg:

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

Quel est votre emplacement de fichier pid nginx? Ceci est spécifié dans le fichier de configuration, les chemins par défaut spécifiés au moment de la compilation dans le script de configuration. Vous pouvez le rechercher en tant que tel:

find / -name nginx.pid 2>/dev/null _ (doit être émis pendant que nginx est en cours d'exécution)

Solution:

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

Essayez de courir Sudo nginx avant de commencer nginx.

95
Benjamin Crouzier

Pour recharger des fichiers de configuration:

Sudo nginx -s reload

Pour redémarrer complètement nginx:

Sudo nginx -s quit
Sudo nginx

Détails

Il n'y a pas de signal restart pour nginx. Parmi les documents, voici les signaux que le processus maître accepte:

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.

Vous pouvez probablement envoyer ces signaux à l’identificateur de processus manuellement, mais la commande nginx a le drapeau nginx -s <signal> qui envoie des signaux au processus maître pour vous. Vos options sont:

stop    SIGTERM
quit    SIGQUIT
reopen  SIGUSR1
reload  SIGHUP

Pas besoin de jouer avec le pid manuellement.


Edit: vient de réaliser qu'une grande partie de cette information figurait déjà dans les commentaires des autres réponses. Laissant cela ici de toute façon pour résumer la situation.

17
tobek

Je le fais comme ça:

D'abord tuer le progrès

ps aux | grep nginx
kill -9 {pid}

Puis lancez nginx

nginx

Ça marche!

6
wangchi

En tant que ressource future, vous pouvez consulter http://wiki.nginx.org/CommandLine

Nginx fonctionne probablement en tant que root, vous devrez donc exécuter une variante de la commande suivante pour l'affecter.

Sudo nginx -s stop | reload | quit | reopen

Il n'y a généralement pas de raison de redémarrer Nginx comme Apache aurait besoin. Si vous avez modifié un fichier de configuration, vous souhaiterez peut-être uniquement l'option de rechargement.

2
anEffingChamp

Cela pourrait simplement signifier que nginx est déjà arrêté - ne fonctionne pas pour le moment.
Tout d’abord, confirmez si nginx est en cours d’exécution, exécutez:

$ ps aux | grep nginx
1
ericn

Essaye ça:

Sudo nginx -s stop

suivi d'un:

Sudo nginx

Il semble que nginx garde la trace de son état. Si vous l’arrêtez deux fois, il se plaindra. Mais ce qui précède a fonctionné pour moi.

1

vérifiez si ce répertoire existe:

/usr/local/var/run

cette erreur peut se produire lorsque nginx tente d'initialiser un fichier pid dans une localisation inexistante.

1
jkaluzka

j'ai le même lien d'erreur que vous, j'ai essayé de nombreuses façons de le réparer, mais cela ne fonctionne pas après que j'ai lancé la ligne de commande et que cela fonctionne bien: nginx -c /usr/local/etc/nginx/nginx.conf

les informations que j'ai obtenues d'ici https://blog.csdn.net/wn1245343496/article/details/77974756

1
css.cutter

Il y a un bug ici. Selon que nginx est en cours d’exécution pendant que vous modifiez/redémarrez Apache et/ou modifiez les configurations nginx, il est possible de détruire ce fichier (qui est essentiellement un pointeur de processus).

Lorsque vous essayez d’envoyer un signal à nginx comme

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

nginx utilise ce fichier pour référencer l'ID du processus auquel il doit envoyer le signal. Si le fichier n'existe pas, le lien entre le processus en cours d'exécution de nginx et l'application cli est effectivement rompu.

En fait, je me suis retrouvé dans un état où deux processus nginx étaient exécutés simultanément, ce qui a tué les deux.

Pour contourner ce problème, vous pouvez forcer l'arrêt des processus nginx existants via Activity Monitor (puis exécutez nginx et demandez à l'application cli de créer un nouveau fichier nginx.pid), ou si vous devez VRAIMENT garder nginx en cours d'exécution, mais souhaitez exécuter nginx - ■ reload - créez manuellement un fichier dans le chemin/run appelé nginx.pid et insérez le PID des processus nginx en cours d'exécution (obtenus via Activity Monitor).

1
Michael Angstadt

Pour recharger le fichier de configuration personnalisé, utilisez

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

Une façon d'arrêter ou de recharger consiste à utiliser la commande ci-dessous,

Pour arrêter:

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

Exécutez reload uniquement si le nginx est en cours d'exécution:

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

En procédant comme ci-dessus, vous n'obtiendrez pas nginx: [erreur] open () "/usr/local/var/run/nginx.pid" ce problème

0
santhosh