Deamon avec systemd

De knowledge
Aller à la navigation Aller à la recherche

Créer un service systemd personnalisé

Des lors qu'on écrit soit même un process serveur pour réaliser un service on aimerait que celui-ci soit lancé automatiquement au boot du serveur. On aimerait aussi pouvoir l'arrêter le démarrer avoir une idée de son état, voir ses logs....

C'est systemd qui va nous y aider (même si il y a d'autres solutions)

1. Préparer le script de lancement

Créer un script exécutable contenant les commandes à lancer :

#!/bin/bash
# Exemple : activer un environnement virtuel et lancer une application
source /home/utilisateur/chemin/env/bin/activate # SI c'est du code python avec un virtual env
exec nom_de_la_commande --option

Rendre le script exécutable :

chmod +x /home/utilisateur/chemin/start.sh

2. Créer le fichier de service systemd

Créer un fichier dans /etc/systemd/system/ :

[Unit]
Description=Nom du service
After=network.target

[Service]
Type=simple
User=utilisateur
WorkingDirectory=/home/utilisateur/chemin
ExecStart=/home/utilisateur/chemin/start.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

Adapter les chemins et le nom d’utilisateur selon le contexte.

3. Activer et démarrer le service

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable nomduservice.service
sudo systemctl start nomduservice.service

4. Vérifier le statut et les logs

systemctl status nomduservice.service
journalctl -u nomduservice.service

Notes

  • Le service sera lancé automatiquement au démarrage.
  • Le script peut contenir n’importe quelle commande : serveur web, tâche de fond, tunnel, etc.
  • Pour les services complexes, envisager Type=exec, Environment=, ou ExecStop=.