Introduction
En informatique, les choses ne se passent pas toujours comme prévu. Souvent, des plantages système inattendus incitent les administrateurs système à lancer des redémarrages et à relancer des services individuels. Déterminer et redémarrer chaque service dont votre application a besoin pour fonctionner après un plantage système ou un redémarrage peut être fastidieux. Dans ce premier volet de ce tutoriel en deux parties, nous allons vous montrer comment configurer des services pour qu'ils démarrent automatiquement après un plantage système ou un redémarrage du serveur à l'aide d'exemples pratiques. La deuxième partie couvrira les informations théoriques sur ce que nous avons accompli dans la première partie.
Nous utiliserons le service de base de données MySQL pour les exemples pratiques. Cependant, les mêmes principes s'appliquent aux autres processus qui composent un serveur complet tel que Nginx, Apache, Redis, ou d'autres applications. Vous pouvez consulter nos tutoriels sur comment installer MySQL, Nginx, et Apache.
Dans les distributions Linux, il existe trois principaux systèmes d'initialisation (init), selon la distribution que vous utilisez. Certaines distributions peuvent être fournies avec deux systèmes init ou plus, comme indiqué ci-dessous :
- System V – un système init plus ancien que l'on trouve dans des distributions plus anciennes comme :
- Ubuntu 9.04 et versions antérieures
- CentOS 5 et versions antérieures
- Debian 6 et versions antérieures
- Upstart – utilisé dans d'anciennes distributions telles que :
- CentOS 6
- Ubuntu 9.10 à Ubuntu 14.10 et Ubuntu 14.04
- Systemd – utilisé dans les distributions les plus récentes telles que :
- CentOS 7
- Debian 7 et 8.
- Ubuntu 15.04 et versions plus récentes
Contexte
Il est courant pour les systèmes d'exploitation, et en particulier les systèmes Linux et Unix d'avoir des processus et des services qui s'exécutent en arrière-plan. Ces services peuvent avoir été fournis avec le système d'exploitation. Certains peuvent provenir des applications utilisateur que vous installez.
Les services du système d'exploitation comprennent :
- sshd – C'est le démon qui permet les connexions à distance.
- cupsd – C'est le démon qui contrôle l'impression.
Les services d'applications installées comprennent :
- httpd/apache2 – Un service fourni avec le serveur web Apache2.
- nginx – Un service fourni avec le serveur web Nginx.
Pour garantir que nos applications web, bases de données, serveurs de messagerie, etc. soient accessibles, ces services doivent fonctionner en continu. Si vous êtes un administrateur système ou un développeur d'applications curieux, vous voulez vous assurer que ces services fonctionnent en continu et, dans le cas malheureux d'un plantage du système, qu'ils démarrent automatiquement après le redémarrage du système. Et c'est exactement ce que nous allons apprendre dans ce tutoriel pratique.
Bien que la configuration d'alertes et la surveillance continue de votre distribution Linux soient cruciales, certains services Linux peuvent s'auto-guérir s'ils sont bien configurés, grâce aux systèmes init qui gèrent les services.
Dans les distributions Linux, il existe des modes de fonctionnement qui implémentent l'initialisation du système appelés niveaux d'exécution. Pour qu'un service démarre automatiquement, il doit être ajouté à un niveau d'exécution. Chaque système de type Linux et Unix possède quatre niveaux d'exécution courants, comme indiqué ci-dessous :
- 0 – Le niveau d'exécution 0 indique l'arrêt du système.
- 1 – Le niveau d'exécution 1 indique le mode mono-utilisateur, de secours.
- 2, 3, 4 – Ces niveaux d'exécution indiquent des états où le système a démarré en mode multi-utilisateur, avec réseau, en mode texte.
- 5 – Le niveau d'exécution 5 indique le mode multi-utilisateur avec réseau, en mode graphique.
- 6 – Le niveau d'exécution 6 indique le redémarrage du système.
Dans ce tutoriel, vous apprendrez à configurer un service Linux pour qu'il démarre automatiquement au redémarrage du système à l'aide des trois différents modes init expliqués précédemment : System V, Upstart et Systemd.
Prérequis
Ce tutoriel pratique suppose que vous disposez d'un VPS Linux que vous pouvez utiliser pour suivre. Vous pouvez profiter de la période d'essai gratuite chez Cloudsigma et démarrer quelques serveurs pour essayer les commandes. Vous pouvez suivre notre tutoriel étape par étape sur la configuration de vos serveurs Ubuntu.
Les serveurs que vous créez dans ce tutoriel sont uniquement destinés à suivre les travaux pratiques et vous ne devriez pas essayer les commandes sur un serveur de production car de nombreux services seraient perturbés.
Certaines des distributions dont vous aurez besoin :
- Ubuntu 9.04 et versions antérieures, ou Debian 6 x64 (sera utilisé pour faire la démonstration du système init System V)
- Ubuntu 14.04 x64 (sera utilisé pour faire la démonstration d'Upstart)
- CentOS 7 x64 (sera utilisé pour faire la démonstration de systemd).
Assurez-vous d'avoir configuré un utilisateur non-root avec des privilèges sudo. Vous pouvez jeter un œil à notre tutoriel sur la configuration du fichier sudoers ici.
Utilisation de System V
Il s'agit du plus ancien système d'initialisation qui était utilisé dans les anciennes distributions Linux telles que :
- Debian 6 et versions antérieures
- CentOS 5 et versions antérieures
- Ubuntu 9.04 et versions antérieures
La plupart des applications serveur installables telles que MySQL et Nginx sont fournies avec des scripts d'initialisation enregistrés dans le répertoire /etc/init.d par défaut. Ces scripts leur permettent de démarrer après un redémarrage. Cependant, ils peuvent ne pas être configurés pour démarrer automatiquement après un plantage du système.
Liste de contrôle pour le démarrage automatique sous System V
La première étape consiste à vérifier la disponibilité d'un script d'initialisation Bash fonctionnel dans le répertoire /etc/init.d/service. Pour activer le service, dans les distributions Debian ou Ubuntu, utilisez la commande update-rc.d, dans un système CentOS, utilisez chkconfig. Remplacez par le nom réel de votre service :
|
1 |
sudo update-rc.d service enable |
La commande ci-dessus crée un lien symbolique dans le répertoire /etc/rc2.d qui ressemble à la sortie ci-dessous. Ne le créez pas vous-même car il est généré automatiquement :
|
1 |
lrwxrwxrwx 1 root root 20 Dec 10 07:09 S02mysql -> ../init.d/service |
Au bas du fichier /etc/inittab ajoutez une ligne respawn comme indiqué dans l'exemple générique ci-dessous. N'oubliez pas de la remplacer par le chemin d'accès réel au script de démarrage de votre application :
|
1 |
id:2345:respawn:/bin/sh /path/to/your-application/startup |
Saisissez les commandes suivantes pour arrêter et démarrer le service :
|
1 2 |
sudo service service-name stop sudo service service-name start |
Ensuite, redémarrez le serveur :
|
1 |
sudo reboot |
Comment tester les modifications ?
Après avoir redémarré le serveur, vérifiez que le service est actif en recherchant le numéro de processus à l'aide de la commande :
|
1 |
ps -ef | grep service-name |
Tuez le processus à l'aide de la commande :
|
1 |
sudo kill -9 process_number |
Après cinq minutes, vérifiez que le service est opérationnel.
Configuration pratique de System V avec un service réel
Dans les étapes suivantes, nous allons essayer une application serveur réelle telle que MySQL. Vous devriez avoir accès à une machine virtuelle Debian 6. Avec un compte disposant des privilèges sudo, connectez-vous-y en utilisant SSH ou putty si vous êtes sur un bureau Windows.
Step 1: Install MySQL
Saisissez la commande suivante pour installer MySQL :
|
1 |
sudo apt-get install mysql-server -y |
Lorsque l'installation commence, un mot de passe root vous sera demandé. Saisissez ensuite le mot de passe de votre choix et confirmez-le. Attendez que l'installation se termine, puis saisissez la commande suivante pour commencer à sécuriser MySQL :
|
1 |
mysql_secure_installation |
Le mot de passe root que vous avez saisi précédemment vous sera demandé. Appuyez sur N pour le conserver. Ensuite, appuyez sur Y pour accepter les invites suivantes visant à supprimer les utilisateurs anonymes, désactiver la connexion root à distance et supprimer la base de données de test. Enfin, acceptez de recharger la table des privilèges pour que les modifications soient prises en compte automatiquement.
Ceci termine l'installation de MySQL. Vous pouvez vérifier si le service est en cours d'exécution en saisissant la commande suivante :
|
1 |
service mysql status |
Étape 2 : Configurer MySQL pour qu'il démarre automatiquement après le redémarrage
MySQL est configuré par défaut pour démarrer après un redémarrage du système. Vous pouvez trouver le lien symbolique vers le script d'initialisation de MySQL dans le répertoire /etc/rc2.d. Ces liens symboliques ne sont pas créés manuellement. Vous pouvez utiliser la commande update-rc.d pour activer et désactiver des services.
Saisissez la commande suivante pour lister le contenu du répertoire :
|
1 |
ls -l /etc/rc2.d |
Vérifiez si vous remarquez le lien symbolique vers le script d'initialisation de MySQL :
|
1 |
lrwxrwxrwx 1 root root 15 Dec 2 10:42 S01mysql -> ../init.d/mysql |
Le S est important, car tant que vous pouvez voir un S script sous le répertoire du niveau d'exécution par défaut pour le service, le système d'initialisation démarrera le service au démarrage du serveur. Pour vérifier que MySQL démarrera automatiquement après le redémarrage, saisissez la commande suivante pour redémarrer le système :
|
1 |
sudo reboot |
Votre connexion ssh se termine pendant un redémarrage. Attendez une minute ou deux et reconnectez-vous. Exécutez la commande suivante pour vérifier si le service est en cours d'exécution :
|
1 |
service mysql status |
La sortie indiquera que le service est en cours d'exécution. Cela signifie qu'il a démarré automatiquement après le redémarrage. Pour les services qui ne sont pas configurés pour démarrer automatiquement, vous devrez les configurer vous-même.
We can disable the MySQL service and reboot the system to test if it auto-starts. In Debian and Ubuntu systems, you can use the update-rc.d command to add or remove services from the init system. Enter the following command to disable the MySQL service:
|
1 |
sudo update-rc.d mysql disable |
Redémarrerez le système et reconnectez-vous en utilisant ssh. Essayez de vous connecter à MySQL en utilisant la commande suivante :
|
1 |
mysql -u root -p |
Vous obtiendrez une erreur MySQL telle que :
|
1 |
ERROR 2002 (HY000): Can't connect to local MySQL server |
Ensuite, saisissez la commande suivante pour réactiver le service :
|
1 |
sudo update-rc.d mysql enable |
Si vous êtes sur une distribution CentOS, la commande sera :
|
1 |
sudo chkconfig mysql enable |
Puisque MySQL ne démarrait pas initialement, vous devez le démarrer. Saisissez la commande suivante :
|
1 |
sudo service mysql start |
Étape 3 : Configurer un service (MySQL) pour qu'il démarre automatiquement après un plantage du système
System V ne démarrera pas un processus automatiquement après un plantage. Nous pouvons simuler un plantage du système en trouvant l'ID de processus de MySQL et en le tuant. Saisissez la commande suivante pour trouver l'ID de processus de MySQL :
|
1 |
ps -ef | grep mysql |
Dans la sortie, trouvez les processus MySQL. Les principaux processus exécutant MySQL sont mysqld_safe et mysqld. Notez leurs ID de processus (ce sont des chiffres) et utilisez les commandes suivantes pour les tuer :
|
1 2 |
sudo kill -9 mysqldsafe_number sudo kill -9 mysqld_number |
Vérifiez le statut du service MySQL à l'aide de la commande :
|
1 |
sudo service mysql status |
La sortie indiquera que MySQL s'est arrêté. Nous pouvons le redémarrer manuellement en utilisant la commande de démarrage du service. Cependant, nous voulons un processus automatique. Pour obtenir ce comportement automatique, nous devons modifier le fichier /etc/inittab . C'est le premier fichier que System V init lit lors du démarrage. Le fichier /etc/inittab contient des instructions sur la façon dont un processus doit se comporter s'il plante. S'il est configuré correctement, il redémarre le système à nouveau en cas de plantage. Dans notre cas, nous voulons nous assurer que MySQL fait partie de ces services.
Le fichier /etc/inittab est extrêmement crucial pour une distribution Linux. Il détermine si votre système va redémarrer ou non. Si vous faites une erreur dans les commandes, le système pourrait ne pas démarrer lors du redémarrage. Comme nous l'avions indiqué, nous espérons que vous n'essayez ces commandes que dans un environnement de serveur de test et non dans un environnement de production.
Tout d'abord, faites une copie du fichier avant de commencer à le modifier :
|
1 |
sudo cp /etc/inittab /etc/inittab.original |
Ensuite, ouvrez le fichier en utilisant nano :
|
1 |
sudo nano /etc/inittab |
Faites défiler jusqu'à la fin du fichier et ajoutez l'extrait de code suivant :
|
1 |
ms:2345:respawn:/bin/sh /usr/bin/mysqld_safe |
La commande ci-dessus redémarre le processus mysql_safe après un plantage du système. Elle comporte quatre champs séparés par des deux-points, comme expliqué ci-dessous :
- ms : Spécifie un identifiant pour le processus.
- 2345 : Spécifie les niveaux d'exécution auxquels la commande s'applique. Dans ce cas : niveaux d'exécution 2, 3, 4, 5.
- respawn : Spécifie l'action. Dans ce cas, nous recréons (respawn) ou redémarrons le processus.
- /bin/sh /usr/bin/mysqld_safe : La dernière partie définit le processus – la commande qui est exécutée pour redémarrer le processus.
Appuyez maintenant sur Ctrl + O et Entrée pour enregistrer le fichier. Ensuite, appuyez sur Ctrl + X pour fermer l'éditeur. Entrez la commande suivante pour démarrer le service :
|
1 |
sudo service mysql start |
Redémarrez le serveur, puis exécutez les commandes expliquées précédemment pour trouver le numéro de processus. Ensuite, tuez les processus, en commençant par la commande ps -ef | grep mysql. Attendez quelques minutes et entrez la commande suivante pour vérifier le statut de MySQL :
|
1 |
sudo service mysql status |
La sortie devrait indiquer que le service MySQL est opérationnel, ce qui signifie qu'il a pu redémarrer après un plantage. Vous pouvez suivre le même processus pour d'autres services sur votre serveur.
Démarrage automatique des services avec Upstart
Upstart est un autre système d'initialisation qui a été initialement introduit dans Ubuntu 6 et est devenu plus tard le système par défaut dans Ubuntu 9.10. RHEL 6 et ses dérivés, ainsi que Chrome OS de Google, utilisent également le système d'initialisation Upstart. Pour les étapes de cette section, vous devriez avoir un serveur exécutant l'une des distributions suivantes :
- Ubuntu 9.10 à Ubuntu 14.10, et la version LTS d'Ubuntu, c'est-à-dire Ubuntu 14.04.
- CentOS 6
Voyons comment vous pouvez configurer les fichiers Upstart pour démarrer automatiquement les services de votre serveur en cas de redémarrage ou de plantage du système. Upstart utilise des fichiers de configuration stockés sous le répertoire /etc/init pour contrôler les services dans une distribution Linux. Les versions les plus récentes des applications serveur telles que MySQL et Nginx installent leurs propres scripts d'initialisation dans le répertoire /etc/init. Ainsi, ils démarreront après un redémarrage et après un plantage du système sans que vous n'ayez rien à faire.
Liste de contrôle de démarrage automatique pour Upstart
Voici quelques configurations de référence à vérifier pour vous assurer que votre service est configuré pour démarrer automatiquement.
- Assurez-vous que le service dispose d'un script d'initialisation dans le répertoire /etc/init/service_name.conf – service_name étant le nom réel de votre service particulier. Vous devriez vérifier la présence des deux lignes suivantes dans le fichier /etc/init/service_name.conf :
- Une ligne contenant quelque chose comme start on runlevel [2345]. Elle indique que le service sera démarré au redémarrage du système.
- Une ligne contenant quelque chose comme respawn. Elle indique que le service sera relancé/redémarré après un plantage du système.
- Assurez-vous qu'il n'y a pas de fichier de substitution de service dans le répertoire : /etc/init/service_name.override. À moins que vous ou un autre administrateur système ne l'ayez créé auparavant.
- Entrez les commandes suivantes pour arrêter et démarrer le service :
|
1 2 |
sudo initctl stop service_name sudo initctl start service_name |
- Redémarrez le système et reconnectez-vous après quelques minutes. Maintenant, effectuez quelques tests pour voir si tout fonctionne
- Après le redémarrage, vérifiez que le service est opérationnel. Entrez la commande suivante pour rechercher le numéro de processus, en remplaçant service_name par le nom réel du service que vous testez :
|
1 |
ps -ef | grep service_name |
- Une fois que vous avez le numéro de processus, entrez la commande suivante pour tuer le processus :
|
1 |
sudo kill -9 process_number |
- Attendez quelques secondes, puis vérifiez à nouveau que le processus est opérationnel.
Configuration pratique d'Upstart avec un service réel
Dans la section suivante, nous allons essayer de démontrer comment vous pouvez utiliser Upstart avec un service réel. Nous effectuerons les tests sur un serveur virtuel Ubuntu 14.04 avec MySQL comme service. Connectez-vous à votre serveur de test Ubuntu 14.04 en utilisant ssh ou putty si vous êtes sous Windows. Comme d'habitude, vous devriez utiliser un utilisateur non-root avec des privilèges sudo. Une fois connecté, nous pouvons commencer les étapes :
Étape 1 : Installer MySQL
N'oubliez jamais de mettre à jour vos paquets avant d'installer un nouveau logiciel :
|
1 |
sudo apt-get update |
Maintenant, entrez la commande suivante pour installer le serveur MySQL :
|
1 |
sudo apt-get install mysql-server –y |
Créez un mot de passe root lorsque vous y êtes invité. Attendez que l'installation soit terminée et exécutez la commande suivante pour commencer à sécuriser votre installation MySQL :
|
1 |
mysql_secure_installation |
Suivez les instructions, comme vous l'avez fait dans la section précédente. Ensuite, actualisez les privilèges pour que les modifications prennent effet immédiatement.
Étape 2 : Configurer un service (MySQL) pour qu'il démarre automatiquement après un redémarrage du système
MySQL est configuré pour démarrer automatiquement après un redémarrage. Nous examinons uniquement ses fichiers de configuration pour apprendre comment configurer nos applications personnalisées pour qu'elles démarrent également automatiquement après un redémarrage. Le service MySQL a été démarré automatiquement après l'installation. Cependant, confirmons qu'il est en cours d'exécution en saisissant la commande suivante :
|
1 |
sudo initctl status mysql |
Vous devriez voir un résultat indiquant que le service MySQL est en cours d'exécution, quelque chose comme :
|
1 |
mysql start/running, process 2553 |
Redémarrez votre serveur et reconnectez-vous. Saisissez à nouveau la commande suivante pour vérifier qu'il est en cours d'exécution :
|
1 |
sudo initctl status mysql |
Le résultat indiquera que MySQL est en cours d'exécution, ce qui signifie qu'il a été démarré automatiquement après le redémarrage. Dans ce cas, rien n'a besoin d'être modifié. Cependant, ce comportement peut ne pas être le même pour d'autres applications. Vous vous demandez peut-être comment le système d'initialisation Upstart sait qu'il doit démarrer automatiquement MySQL après le redémarrage. MySQL installe son fichier de configuration de démarrage Upstart à l'emplacement /etc/init/mysql.conf. Les fichiers Upstart ne sont pas des scripts shell, mais des fichiers texte contenant des blocs de script pour les événements de pré-démarrage (pre-start) et de post-démarrage (post-start). Les blocs indiquent au système Upstart ce qu'il doit exécuter lorsque le processus MySQLd démarre ou lorsqu'il a déjà démarré.
Saisissez la commande suivante pour ouvrir le fichier dans l'éditeur avec nano :
|
1 |
sudo nano /etc/init/mysql.conf |
Le contenu du fichier peut ressembler à ceci :
|
1 2 3 4 5 6 7 8 |
description "MySQL Server" author "Mario Limonciello <superm1@ubuntu.com>" start on runlevel [2345] stop on starting rc RUNLEVEL=[016] respawn respawn limit 2 5 |
Comme on peut le voir, le bloc start indique à MySQL de démarrer sur les runlevels 2, 3, 4, 5, et non 0, 1, 6. Si vous définissez une configuration Upstart pour votre application, vous la définirez dans cette section. Le bloc respawn indique à Upstart ce qu'il doit faire après un plantage. Nous en discuterons dans la section suivante, alors gardez le fichier ouvert dans l'éditeur nano.
Étape 3 : Configurer un service (MySQL) pour qu'il démarre automatiquement après un plantage
La directive respawn dans le fichier /etc/init/mysql.conf indique à Upstart de redémarrer le service MySQL après un plantage.
La directive respawn limit indique à Upstart combien de fois il doit tenter de redémarrer le service MySQL planté dans un intervalle spécifié en secondes. Le premier argument, (2), indique le nombre de tentatives. Le deuxième argument, (5), indique l'intervalle en secondes. Si, après un plantage, Upstart ne parvient pas à relancer (respawn) le service MySQL dans la limite définie, celui-ci restera arrêté. Ce comportement est conçu pour protéger la stabilité du système dans le cas où il essaierait continuellement de redémarrer des services qui plantent en boucle. Vous pouvez maintenant fermer l'éditeur sans apporter de modifications.
Testons si MySQL redémarre automatiquement après un plantage. Saisissez la commande suivante pour vérifier le statut et obtenir le numéro de processus du service MySQL :
|
1 |
sudo initctl status mysql |
Le résultat devrait ressembler à ceci. Notez le numéro de processus car nous l'utiliserons plus tard :
|
1 |
mysql start/running, process 738 |
Ensuite, saisissez la commande suivante pour tuer le processus. Cela simule un plantage. Remplacez par le numéro de processus que vous avez obtenu dans la commande précédente :
|
1 |
sudo kill -9 7738 |
Vérifiez à nouveau le statut de MySQL en saisissant la commande suivante :
|
1 |
sudo initctl status mysql |
Il devrait être à nouveau en cours d'exécution, mais probablement avec un numéro de processus différent :
|
1 |
mysql start/running, process 1428 |
Cela se produit en raison de la directive respawn dans le /etc/init/mysql.conf fichier. Il garantit qu'en cas de panne du système, MySQL démarrera automatiquement. Par conséquent, votre application qui dépend d'une base de données MySQL continuera à fonctionner comme prévu.
Démarrage automatique des services avec Systemd
Systemd est un système d'initialisation présent dans la plupart des distributions Linux récentes. C'est probablement ce que vous utiliserez lorsque vous déploierez un nouveau VPS. Il a été introduit pour la première fois dans Fedora. Il est fourni avec RHEL 7 et ses dérivés comme CentOS 7. À partir d'Ubuntu 15.04, vous trouverez Systemd nativement. Systemd est rétrocompatible avec les scripts et commandes d'initialisation de System V. Par conséquent, tout service System V devrait fonctionner sous Systemd. La plupart des commandes utilisées dans System V et Upstart ont été modifiées pour fonctionner avec Systemd.
Avec Systemd, la plupart des applications serveur telles que MySQL et Nginx démarreront automatiquement après un redémarrage ou un arrêt, sans que vous ayez à modifier quoi que ce soit. Pour vos applications personnalisées, vous devez créer vos propres scripts d'initialisation pour redémarrer automatiquement les services.
Pour des informations plus détaillées sur Systemd, consultez notre tutoriel sur la gestion des services et des unités Systemd avec Systemctl.
Liste de contrôle du démarrage automatique pour Systemd
Voici quelques configurations de référence à vérifier pour vous assurer que votre service est configuré pour démarrer automatiquement avec Systemd.
- Le service doit avoir un script d'initialisation Systemd fonctionnel situé à /etc/systemd/system/multi-user.target.wants/serviceName.service. ServiceName est le nom réel du service que vous configurez.
- La commande pour activer le service est :
|
1 |
sudo systemctl enable serviceName.service |
- La commande crée un lien symbolique dans le répertoire /etc/systemd/system/multi-user.target.wants/ qui peut ressembler à :
|
1 |
lrwxrwxrwx 1 root root 11 déc 1 04:43 /etc/systemd/system/multi-user.target.wants/serviceName.service -> /usr/lib/systemd/system/serviceName.service |
- Une fois ce lien symbolique en place, vous aurez activé le redémarrage automatique après le démarrage.
- Pour activer les modifications, rechargez le démon système puis rechargez le service à l'aide des commandes suivantes :
|
1 2 3 |
sudo systemctl daemon-reload sudo systemctl restart serviceName.service |
- Pour tester si vos configurations démarreront le service après un redémarrage, vous pouvez redémarrer le système :
|
1 |
sudo reboot |
- Lorsque le système redémarre, recherchez le numéro de processus à l'aide de la commande :
|
1 |
ps -ef | grep serviceName |
- Notez le numéro de processus et tuez-le à l'aide de la commande :
|
1 |
sudo kill -9 process_number |
- Attendez quelques secondes et recherchez à nouveau le service pour vérifier qu'il est de nouveau opérationnel.
Configuration pratique de Systemd avec un service réel
Dans cette section, nous allons essayer de configurer le service MySQL sur une machine virtuelle Ubuntu 20.04.
Étape 1 : Connectez-vous à votre serveur privé virtuel (Ubuntu 20.04 ou CentOS 7 x64)
Connectez-vous à votre VPS ou créez-en un depuis le panneau Cloudsigma et connectez-vous en utilisant ssh ou putty si vous êtes sous Windows. Nous utilisons le serveur Ubuntu 20.04 pour cette section du tutoriel. Les mêmes commandes peuvent s'appliquer à CentOS 7. Veillez à utiliser un utilisateur non-root avec des privilèges sudo.
Étape 2 : Installez MySQL (le service que nous configurons)
Tout d'abord, mettez à jour votre système :
|
1 |
sudo apt update |
Ensuite, vous pouvez installer le serveur MySQL à l'aide de la commande :
|
1 |
sudo apt install mysql-server –y |
Ensuite, exécutez la commande suivante pour commencer à sécuriser MySQL :
|
1 |
sudo mysql_secure_installation |
Le script vous demande si vous souhaitez configurer le composant VALIDATE PASSWORD ou appuyer sur n'importe quelle touche pour continuer sans activer le composant. Suivez ce lien pour en savoir plus sur le composant de validation de mot de passe MySQL.
Appuyez sur 1 pour l'activer, puis choisissez le niveau moyen en appuyant sur 1. Saisissez un mot de passe fort : une combinaison de majuscules, de minuscules, de caractères spéciaux et de chiffres. Confirmez le mot de passe et confirmez l'invite qui vous demande si vous souhaitez utiliser le mot de passe saisi comme mot de passe root. Pour le reste des autres invites, appuyez sur y pour les accepter comme vous l'avez fait dans les sections précédentes. Enfin, videz les privilèges pour que MySQL recharge les modifications.
Étape 3 : Configurer MySQL pour qu'il démarre automatiquement après un redémarrage
MySQL est configuré pour démarrer après un redémarrage, il n'y a donc aucune modification à apporter. Cependant, nous pouvons utiliser les fichiers de configuration de MySQL pour apprendre à configurer nos fichiers personnalisés.
Tout d'abord, vérifiez si le service MySQL a été configuré pour démarrer au démarrage du système. Saisissez la commande suivante (notez que sous CentOS, le service MySQL s'appelle mysqld) :
|
1 |
sudo systemctl is-enabled mysql.service |
Voici le résultat :

Ensuite, redémarrez le VPS en saisissant la commande suivante :
|
1 |
sudo reboot |
Reconnectez-vous en utilisant SSH et saisissez la commande suivante pour vérifier l'état du service MySQL :
|
1 |
sudo systemctl status mysql.service |
Vous devriez obtenir un résultat similaire à celui de la capture d'écran ci-dessous :

Pour désactiver le service MySQL, saisissez la commande suivante :
|
1 |
sudo systemctl disable mysql.service |
Le résultat indique que les liens symboliques vers le service MySQL ont été supprimés de Systemd :

Vous pouvez tester si le service est activé avec le système d'initialisation Systemd en saisissant la commande suivante :
|
1 |
sudo systemctl is-enabled mysql.service |
Le résultat indiquera qu'il est désactivé. Si vous redémarrez votre système, MySQL ne démarrera pas au démarrage :
![]()
Activez le service en saisissant la commande suivante :
|
1 |
sudo systemctl enable mysql.service |
Le résultat montre le lien symbolique vers le service MySQL créé dans l'initialisation Systemd :

Lorsque vous redémarrerez, le service MySQL démarrera automatiquement.
Étape 4 : Configurer MySQL pour qu'il démarre automatiquement après un plantage
MySQL est configuré pour redémarrer automatiquement après un plantage. Voyons comment cette configuration est implémentée dans Systemd. Systemd utilise des fichiers d'unité pour la configuration. Saisissez la commande suivante pour ouvrir le fichier de configuration mysql.service dans nano :
|
1 |
sudo nano /etc/systemd/system/multi-user.target.wants/mysql.service |
Le résultat ressemble à ceci :

Ce qui nous intéresse est la directive Restart. Comme défini, MySQL redémarrera en cas de défaillance. La directive Restart définit ce qui doit se passer dans Systemd, tout comme la directive Respawn dans Upstart.
Tous les services n'ont pas cette directive. Pour permettre à un service de redémarrer après un plantage, vous pouvez toujours ajouter la directive Restart sous le bloc [Service] du fichier d'unité de configuration du service. Si l'en-tête [Service] n'existe pas, ajoutez-le. Maintenant, quittez l'éditeur en appuyant sur Ctrl + X.
Pour simuler un plantage, recherchez l'identifiant du processus de MySQL en saisissant la commande suivante :
|
1 |
sudo systemctl status mysql.service |
La commande de vérification de l'état affiche un identifiant de processus, dans notre cas il s'agit de 3555 :

Saisissez la commande suivante pour tuer le processus. Remplacez-le par l'identifiant de processus que vous avez obtenu sur votre serveur :
|
1 |
sudo kill -9 3555 |
Saisissez la commande suivante pour vérifier l'état :
|
1 |
sudo systemctl status mysql.service |
Le résultat montre que MySQL est en cours d'exécution, mais avec un nouvel identifiant de processus. Cela signifie qu'il a redémarré automatiquement après le plantage :

Conclusion
Dans ce tutoriel, nous vous avons présenté les trois systèmes d'initialisation des distributions Linux : System V, Upstart et Systemd. Nous avons appris à utiliser l'un de ces systèmes d'initialisation pour configurer vos services en cours d'exécution continue afin qu'ils démarrent automatiquement après un redémarrage ou un plantage du système. Cela devrait vous servir de point de départ lorsque vous devez configurer vos services. La première partie de cette série était principalement un tutoriel pratique. Le la deuxième partie est plus théorique et présente plus de détails sur ce que nous avons fait dans la première partie. Ne supprimez pas encore vos serveurs de test car vous les utiliserez également dans la deuxième partie.
Bonne informatique !
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.