# SystemD ne tue pas correctement NGinX via le pre-hook de certbot

**URL:** <https://www.debian-fr.org/t/systemd-ne-tue-pas-correctement-nginx-via-le-pre-hook-de-certbot/86983>\
**Category:** Support Debian\
**Tags:** ssl, systemd\
**Created:** [Août 18, 2022, 6:25 UTC](https://www.debian-fr.org/t/systemd-ne-tue-pas-correctement-nginx-via-le-pre-hook-de-certbot/86983 "2022-08-18T06:25:46Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![kevin\_gaspard](https://www.debian-fr.org/user_avatar/www.debian-fr.org/kevin_gaspard/32/12058_2.png) [@kevin\_gaspard](https://www.debian-fr.org/u/kevin_gaspard)\
**Post date:** [Août 18, 2022, 6:25 UTC](https://www.debian-fr.org/t/systemd-ne-tue-pas-correctement-nginx-via-le-pre-hook-de-certbot/86983/1 "2022-08-18T06:25:46Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Août 18, 2022, 6:47 UTC](https://www.debian-fr.org/t/systemd-ne-tue-pas-correctement-nginx-via-le-pre-hook-de-certbot/86983/2 "2022-08-18T06:47:12Z")

</div>

Bonjour,

Pour ton renouvellement de certificat, tu demandes à `certbot` de démarrer un serveur web, coupant celui qui est actuellement en service.  
Je ne sais pas si tu as une bonne raison de faire ça, mais je trouve quand même plus simple d’utiliser directement celui qui est lancé : `nginx`.  
Tu peux demander à `certbot` de mettre un fichier dans le dossier servi par ton serveur avec l’option `--webroot`.  
Par exemple, pour ajouter mon domaine `mail.almtesh.net`, j’ai utilisé la commande

```bash
certbot certonly --webroot -w /srv/www/almtesh.net -d mail.almtesh.net

```

et mon serveur web est configuré pour exposer le dossier `/srv/www/almtesh.net` pour les requêtes en HTTP sur le domaine `mail.almtesh.net`.

Ce que je fais aussi, pour éviter de redémarrer le serveur s’il n’y a aucun renouvellement, c’est de faire un truc du genre

```bash
if [$(date '+%s' --date=yesterday) -lt $(stat --printf='%Y' /etc/letsencrypt/live/mail.almtesh.net/fullchain.pem)];then
	systemctl restart apache2 dovecot postfix@-
fi

```
