Il m'a fallu un certain temps pour le savoir, mais à la suite d'une récente mise à jour, je ne peux pas arrêter Nginx sur aucun de mes serveurs Ubuntu 12.04 ou Ubuntu 14.04.
Je lance Sudo service nginx stop
, et je reçois nginx start/running, process 16178
.
J'essaie encore Sudo service nginx stop
et j'obtiens nginx start/running, process 16206
.
Notez comment le numéro de processus change.
Dans /var/log/syslog
je peux voir pourquoi:
Jun 11 11:57:51 kernel: [2318556.994508] init: nginx main process ended, respawning
.
Nginx est réapparu chaque fois que je lance Sudo service nginx stop
. Il ne s'arrête jamais complètement.
J'ai essayé de mettre à jour Ubuntu, je l'ai redémarré et j'ai réinstallé mes serveurs sur des images de test locales (j'utilise Puppet). Rien ne fait de différence. J'ai aussi essayé de chercher des bugs liés à cela sans succès.
Est-ce que quelqu'un sait comment je peux résoudre ce problème? J'aimerais pouvoir exécuter Sudo service nginx stop
et ainsi arrêter tous les processus nginx.
Il semble que votre serveur Nginx soit géré par un processus initial.
Recherchez dans le dossier/etc/init et vérifiez s’il n’ya pas de fichier gérant nginx.
grep -r nginx /etc/init
Editez ensuite ce fichier et supprimez l’option respawn
dans le fichier de configuration.
Vous pouvez arrêter le processus nginx à l'aide de Sudo nginx -s quit
Vous pouvez voir dans /etc/init/nginx
J'ai eu le même problème quand je voulais mettre à jour mes certificats avec un serveur Web temporaire par certbot
: chaque fois, j'ai arrêté nginx avec
service stop nginx
après quelques secondes, il a redémarré automatiquement. Ainsi, lorsqu'il s'est agi de servir la preuve de mon domaine certbot, le port 443 était déjà utilisé par le nginx respectif.
J'étais vraiment pressé de résoudre ce problème, alors j'ai commencé une solution de contournement vraiment sale, mais cela a fonctionné:
while true; do service nginx stop; sleep 2; done
Maintenant, je pouvais actualiser mes certificats et découvrir plus tard comment arrêter nginx définitivement de manière plus correcte;)