19 avril 2024

Systemd, Nginx et NFS : modification du démarrage

Avec Linux, ce qui est bien, c’est que même lorsque l’on pense qu’un serveur est au point, on se rend toujours compte à un moment qu’un truc ne fonctionne pas tout à fait comme prévu, ou alors qu’un petit quelque chose nous était passé sous le nez pendant longtemps. La preuve, lors de mes tests, j’ai été confronté à un soucis que je n’avais pas anticipé et qui concerne mes serveurs Web. Pour cette fois, il s’agit d’un problème d’ordre de chargement de service avec Systemd au démarrage d’un serveur.
Je m’en vais donc vous expliquer dans cet article comment modifier cet ordre.

I – Problématique

Mes serveurs Web (Nginx) utilisent des montages NFS pour les sites. Le problème étant qu’au démarrage de ces VMS, Nginx se charge par défaut avant que le montage NFS soit OK d’où un service qui provoque une erreur au chargement et qui nécessite donc qu’après le boot de mes machines, je le démarre à la main.
Comme je le dis souvent, c’est bien, mais pas top…
Il faut donc faire en sorte qu’Nginx ne se charge qu’une fois le montage NFS prêt.

II – Modification Systemd

Pour que cette solution fonctionne, il faut que votre point de montage soit présent dans /etc/fstab. Si vous faites les choses correctement, il n’y a pas de raison pour que ce ne soit pas le cas.
Pour ma part, il est présent et est monté dans /diststock.
Du coup, pour connaitre l’unité systemd correspondante :

# systemctl list-units | grep '/diststock' | awk '{ print $1 }'

Ce qui donne, assez logiquement :

diststock.mount

Il ne reste donc plus qu’a aller dans le fichier de démarrage de Nginx : /etc/systemd/system/multi-user.target.wants/nginx.service et de modifier la ligne :

After=network.target

en

After=network.target diststock.mount

Ensuite, on recharge la nouvelle configuration avec :

# systemctl daemon-reload

On peut tester en rebootant. Nginx se chargera bien après le montage NFS.
Rapide, efficace, que demander de plus !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *