Ceci est ma première tentative d’exécution d’un serveur Linux. J'ai une application serveur que je veux exécuter sur un serveur auquel j'ai un accès SSH.
S'il s'agissait d'un serveur Windows, il me suffirait d'ouvrir un poste de travail distant, de l'exécuter et de déconnecter la session de poste de travail distant. Cependant, je crois comprendre que la déconnexion d'une session SSH tue tous les processus créés à l'intérieur.
J'ai donc fait quelques recherches et il semble que je devrais utiliser screen
ou tmux
pour que mon processus continue de fonctionner après une déconnexion. Cependant, j'aimerais savoir s'il existe un meilleur moyen. Le processus serveur devrait être capable de lire les commandes de contrôle depuis stdin, et je préférerais pouvoir voir également une sortie de la journalisation stdout (bien que le reste de celle-ci soit inévitablement placé dans un fichier journal).
UPDATE: Je suis en train d'exécuter l'application dans une session tux. Cela semble fonctionner correctement, mais je ne pense pas que ce soit la meilleure façon possible ...
Pour exécuter un serveur sous Linux, ajoutez-le aux éléments exécutés par systemd
. Les services sont décrits par un court fichier service
qui est placé dans /etc/systemd/system/{target}/
où {target}
indique un état du système (généralement, multi-user.target.wants
). La description du service inclut des éléments tels que l'exécutable à exécuter et la marche à suivre s'il se termine. Par exemple, un serveur mysql
:
# MySQL systemd service file
[Unit]
Description=MySQL Community Server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
PermissionsStartOnly=true
ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
ExecStart=/usr/sbin/mysqld
ExecStartPost=/usr/share/mysql/mysql-systemd-start post
TimeoutSec=600
Restart=on-failure
RuntimeDirectory=mysqld
RuntimeDirectoryMode=755
Une fois le fichier configuré, vous utilisez la commande systemctl
:
systemctl start {service}
pour démarrer le serveursystemctl stop {service}
pour arrêter le serveursystemctl enable {service}
pour faire démarrer le serveur après un démarragesystemctl disable {service}
pour empêcher le serveur de démarrer après un redémarrage