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 !