Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!

Utilisez le code à la caisse :

Skills
06.11.2024

Utiliser systemd pour lancer un service Linux au démarrage

Pour ceux qui gèrent des applications ou des services sur un hébergement VPS Linux, s’assurer que les services critiques démarrent automatiquement au démarrage est essentiel pour maintenir un fonctionnement ininterrompu. En utilisant systemd, un système init puissant et flexible, vous pouvez facilement configurer les services pour qu’ils se lancent dès le démarrage du système, ce qui est crucial pour les applications web, les bases de données et d’autres services essentiels fonctionnant dans des environnements VPS. Ce guide vous guidera dans la configuration d’une unité de service systemd personnalisée, afin que vous puissiez automatiser le démarrage des services, rationaliser la gestion et garantir la fiabilité de votre configuration d’hébergement VPS Linux

Utiliser systemd pour démarrer un service Linux au démarrage

systemd est le système init moderne utilisé par de nombreuses distributions Linux pour gérer les services et les ressources du système. L’une de ses principales caractéristiques est la possibilité de démarrer des services automatiquement au démarrage, ce qui garantit que les applications et les services critiques sont opérationnels dès que le système démarre. Cet article vous guidera dans les étapes à suivre pour créer une unité de service systemd et lui permettre de démarrer au démarrage

Qu’est-ce que systemd ?

systemd est un système d’initialisation qui remplace les anciens systèmes d’initialisation tels que SysVinit et Upstart. Il gère les processus et les services du système, ce qui permet de paralléliser le démarrage des services, de démarrer les démons à la demande et de mieux contrôler les ressources. Grâce à sa structure de fichiers unitaires, systemd offre un moyen flexible de gérer les services, les sockets, les périphériques et les autres ressources du système

Création d’un service systemd

Pour démarrer un service au démarrage à l’aide de systemd, vous devez créer un fichier d’unité de service. Ce fichier contient toutes les informations nécessaires pour que systemd puisse gérer le service. Voici comment créer et configurer un fichier d’unité de service

Étape 1 : Vérifier le répertoire de travail

Ouvrez votre fichier d’unité de service pour vérifier la directive WorkingDirectory

sudo nano /etc/systemd/system/myapp.service
##

Recherchez la ligne WorkingDirectory. Elle devrait ressembler à ceci( Look for : Create the Service Unit File)

WorkingDirectory=/etc/systemd/myapp
##

Vérifiez que le répertoire spécifié existe

ls -l /etc/systemd/myapp
##

* /chemin/vers/myapp – remplacer par le chemin d’accès que vous souhaitez utiliser. Si vous recevez une erreur indiquant que le répertoire n’existe pas, vous devrez le créer

Étape 2 : Créer le répertoire de travail

Si le répertoire n’existe pas, créez-le

sudo mkdir -p /etc/systemd/myapp
##

Définissez les permissions appropriées pour que l’utilisateur spécifié dans la directive User de votre service puisse y accéder. Par exemple, si votre service s’exécute en tant que myuser

sudo chown myuser:myuser /etc/systemd/myapp
##

Créer le fichier d’unité de service

  1. Ouvrez un terminal sur votre système Linux.
  2. Créez un nouveau fichier d’unité de service dans le répertoire /etc/systemd/system/. Le nom du fichier doit se terminer par .service. Par exemple, pour créer un service pour une application personnalisée appelée myapp, vous devez exécuter
    sudo nano /etc/systemd/system/myapp.service
    #
  3. Ajoutez le contenu suivant au fichier, en le modifiant si nécessaire pour votre application :
    [Unit]
    Description=My Custom Application
    After=network.target
    [Service]
    ExecStart=/usr/bin/myapp
    Restart=always
    User=myuser
    WorkingDirectory=/etc/systemd/myapp
    [Install]
    WantedBy=multi-user.target
    #
  • section [Unit]: Cette section fournit des métadonnées et des dépendances pour le service
      • Description : Brève description du service.
      • Après : Spécifie que le service doit démarrer une fois que le réseau est disponible.
  • section [Service]: Cette section définit le comportement du service
      • ExecStart : La commande de démarrage du service. Remplacez /usr/bin/myapp par le chemin de votre exécutable.
      • Restart (Redémarrer) : Définit le comportement de redémarrage. always signifie que le service redémarrera s’il se plante.
      • User : Spécifie l’utilisateur sous lequel le service doit s’exécuter.
      • WorkingDirectory (Répertoire de travail) : Définit le répertoire de travail du service.
  • section [Install]: Cette section définit comment le service doit être activé.
      • WantedBy : Ceci définit la cible sous laquelle le service doit être démarré. multi-user.target est une cible commune pour les services utilisateurs.

Étape 3 : Vérifier les autorisations

Vérifiez que l’utilisateur dispose des autorisations nécessaires pour accéder au répertoire de travail

ls -ld /etc/systemd/myapp
#

Assurez-vous que les autorisations permettent à l’utilisateur de lire et d’exécuter les fichiers dans ce répertoire

Étape 4 : Test de l’exécutable dans le répertoire de travail

Assurez-vous que votre application peut s’exécuter à partir de ce répertoire de travail. Vous pouvez le tester en passant à l’utilisateur et en naviguant jusqu’au répertoire

sudo -u myuser bash
##
cd /etc/systemd/myapp
/usr/bin/myapp
#
Vérifiez qu’il s’exécute sans erreur. En cas d’échec, dépannez l’application elle-même.

Étape 5 : Recharger systemd et démarrer le service

Après s’être assuré que le répertoire de travail existe et qu’il est correctement configuré, rechargez la configuration de systemd

sudo systemctl daemon-reload
##

Essayez de redémarrer le service

sudo systemctl start myapp.service
##

Étape 6 : Vérifier l’état

Vérifiez l’état du service pour voir s’il a démarré avec succès

sudo systemctl status myapp.service
##

Étape 7 : Examiner les journaux à la recherche d’erreurs supplémentaires

Si le service ne démarre toujours pas, consultez les journaux pour obtenir des informations supplémentaires

journalctl -u myapp.service##

Étape 8 : (Facultatif) Arrêter et désactiver le service

Si vous devez arrêter le service ou l’empêcher de démarrer au démarrage, vous pouvez utiliser les commandes suivantes

  • Pour arrêter le service
    sudo systemctl stop myapp.service
    ##
  • Pour empêcher le service de démarrer au démarrage
    sudo systemctl disable myapp.service
    #

Conclusion

L’utilisation de systemd pour démarrer un service Linux au démarrage est un processus simple qui améliore la fiabilité et la gestion du système. En créant un fichier d’unité de service, vous pouvez définir comment votre application doit s’exécuter et vous assurer qu’elle démarre automatiquement avec votre système. Cette méthode simplifie non seulement la gestion des services, mais fournit également des fonctionnalités puissantes pour contrôler leur comportement, ce qui fait de systemd un outil essentiel pour l’administration moderne des systèmes Linux. Avec ces étapes, vous pouvez configurer et gérer efficacement vos propres services, améliorant ainsi la fonctionnalité globale de votre environnement Linux. Si vous rencontrez des problèmes, l’examen des journaux à l’aide de journalctl peut vous fournir des informations utiles sur ce qui ne va pas.

Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!

Utilisez le code à la caisse :

Skills