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"
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
Essayez de courir Sudo nginx
avant de commencer nginx.
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.
Je le fais comme ça:
D'abord tuer le progrès
ps aux | grep nginx
kill -9 {pid}
Puis lancez nginx
nginx
Ça marche!
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.
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
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.
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.
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
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).
Pour recharger le fichier de configuration personnalisé, utilisez
nginx -s reload -c /etc/nginx/conf.d/<config file>.conf
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