Installation de l'application pour un démarrage au redémarrage (Debian Linux)

Créer un lien symbolique dans "/etc/init.d"

La première étape pour configurer l'application afin qu'elle s'arrête proprement lorsque le système s'arrête puis qu'elle démarre dans le bon ordre au démarrage du système consiste à créer un lien symbolique vers le script de l'application dans le répertoire /etc/init.d. De nombreuses applications se contentent de copier leur script de démon dans ce répertoire, mais les scripts du Wrapper exigent l'utilisation d'un lien symbolique afin que l'emplacement des autres fichiers de l'application puisse être déterminé sans modification du script.

Pour créer un lien symbolique dans /etc/init.d, vous devez être un utilisateur « root ». Saisissez simplement la séquence de commandes suivante :

ln -s /usr/lib/myapp/bin/myapp /etc/init.d/myapp

Vérifiez maintenant que le lien symbolique fonctionne correctement en changeant le répertoire courant pour /etc/init.d et en exécutant la commande suivante.

./myapp console

Veillez à exécuter la commande en tant qu'utilisateur root, car ce sera le cas lorsque l'application sera démarrée au démarrage du système. Il est assez fréquent qu'il y ait des différences d'environnement entre l'utilisateur root et l'utilisateur avec lequel vous êtes habituellement connecté. Ces différences peuvent provoquer des problèmes, comme l'impossibilité de localiser la JVM par exemple.

L'application devrait démarrer normalement. Appuyez sur CTRL-C pour arrêter l'application.

Enregistrement des niveaux d'exécution

Vous voudrez que votre application soit démarrée pour tous les niveaux d'exécution multi-utilisateurs et arrêtée pour les niveaux d'exécution halt, mono-utilisateur et reboot. Cela peut être réalisé en changeant le répertoire courant pour /etc/init.d puis en exécutant la commande update-rc.d en tant qu'utilisateur root :

update-rc.d myapp start 20 2 3 4 5 . stop 20 0 1 6 .

Vous devriez voir la sortie suivante :

 Adding system startup for /etc/init.d/myapp ...
   /etc/rc0.d/K20myapp -> ../init.d/myapp
   /etc/rc1.d/K20myapp -> ../init.d/myapp
   /etc/rc6.d/K20myapp -> ../init.d/myapp
   /etc/rc2.d/S20myapp -> ../init.d/myapp
   /etc/rc3.d/S20myapp -> ../init.d/myapp
   /etc/rc4.d/S20myapp -> ../init.d/myapp
   /etc/rc5.d/S20myapp -> ../init.d/myapp

L'environnement au moment du démarrage est assez limité, de sorte que toute référence utilisant le PATH ou des variables d'environnement peut échouer. Pour vous éviter des problèmes, lorsque vous tenterez de redémarrer afin de tester votre installation, je vous suggère de définir dès maintenant la propriété wrapper.logfile.loglevel sur DEBUG.

Vous pouvez maintenant redémarrer votre système pour tester l'installation :

shutdown -r now

Lorsque le système sera de nouveau opérationnel, l'application sera, on l'espère, en cours d'exécution.

Problèmes ?

Si vous rencontrez des problèmes, veuillez consulter le fichier journal, qui devrait contenir des indices sur le problème. Si le test de la section précédente a fonctionné mais que celui-ci a échoué, le problème est très probablement lié à des variables d'environnement manquantes.

Contrôle de l'ordre :

Si votre application utilise d'autres services, MySQL par exemple, vous devrez vous assurer que votre application est démarrée après MySQL, puis arrêtée avant MySQL. Cela se fait en contrôlant l'ordre de démarrage/arrêt. Par défaut, MySQL démarre et s'arrête avec un ordre de 20, nous pouvons donc obtenir le comportement souhaité de votre application en utilisant l'ordre de démarrage 21 et l'ordre d'arrêt 19.

update-rc.d myapp start 21 2 3 4 5 . stop 19 0 1 6 .

Désenregistrement des niveaux d'exécution

Pour désenregistrer les niveaux d'exécution enregistrés dans la section précédente, exécutez la commande suivante.

update-rc.d -f myapp remove

Référence : Lancement de votre application avec le Wrapper