Salut,
Lorsque je fais un:
systemctl stop nginx
Aucun message d’erreur, je peux aussi le start sans problème.
Cependant, lors d’un certbot renew en dry-run, le pre-hook qui est censé stopper NGinX ne fait pas correctement le travail puisque le post hook plante en disant dans les logs de journalctl:
certbot renew --dry-run --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
(...)
nginx: [emerg] bind() to 0.0.0.0:443 failed (98: Address already in use)
nginx: [emerg] still could not bind()
(...)
Et ps me montre qu’effectivement le processus maître est toujours là:
# ps faux | grep "nginx"
root 461300 0.0 0.0 5912 652 pts/0 S+ 08:20 0:00 | \_ grep nginx
root 461178 0.0 0.0 5520 2312 pts/1 S+ 08:15 0:00 \_ less /etc/init.d/nginx
root 461236 0.0 0.2 65296 9764 ? Ss 08:18 0:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 461268 0.0 0.1 65296 6724 ? S 08:19 0:00 \_ nginx: worker process
www-data 461269 0.0 0.1 65296 4008 ? S 08:19 0:00 \_ nginx: worker process
www-data 461270 0.0 0.1 65296 4008 ? S 08:19 0:00 \_ nginx: worker process
www-data 461271 0.0 0.1 65296 4008 ? S 08:19 0:00 \_ nginx: worker process
Je dois le tuer pour pouvoir démarrer NGinX à nouveau.
Un peu problématique pour automatiser mon renouvellement de certificats SSL.
En googlant un peu j’ai lu que le problème pouvait être qu’nginx.pid (par défaut chez moi /run/nginx.pid) définit dans /etc/nginx/nginx.conf pouvait différer de celui inscrit dans /etc/init.d/nginx.
Or, ils sont bien tout deux définit sur /run/nginx.pid. Quand NGinX est bien fonctionnel il est bien là.
Une idée ?
Solution de contournement temporaire que j’ai cru pouvoir mettre en place, mais qui ne marche pas:
systemctl stop nginx && certbot renew --dry-run && systemctl start nginx
Donc je dirai que certbot fout un peu le merdier quelque part.