Dans ce guide sur l'administration d'un serveur VPS, nous allons vous expliquer comment laisser tourner une application en background telle qu'un bot discord, une application nodejs ou un serveur de jeu (minecraft, gmod, fivem, etc) sur avec supervisor sur un VPS linux sous Debian , Ubuntu ou CentOS.
Cette méthode permet de garder une application démarrée même si vous vous déconnectez de votre VPS. De plus, Supervisor propose des fonctionnalités supplémentaires, pour faciliter la gestion des processus, leur debug avec les logs, ainsi que le redémarrage automatiquement en cas de plantage.
Installer Supervisor
Supervisor est une application pour systèmes linux permettant de contrôler un processus. Vous devez posséder les droits administrateurs pour entrer les commandes suivantes.
Pour l'installer, nous allons utiliser le gestionnaire de paquet.
Installation Supervisor sur Debian
Pour installer Supervisor sur Debian :
apt update && apt install -y supervisor
Installation Supervisor sur Ubuntu
Pour installer Supervisor sur Ubuntu :
sudo apt update && sudo apt install -y supervisor
Installation Supervisor sur CentOS
Pour installer Supervisor sur CentOS :
yum install supervisor
Configuration de supervisord
Supervisord est la partie responsable de démarrer et surveiller les applications configurées. Il redémarrera également ces processus en cas de crash, si spécifié dans la configuration. La configuration générale s'effectue dans le fichier /etc/supervisor/supervisord.conf
.
Ci-dessous vous trouverez plusieurs exemples de configuration, pour bot discord ou serveur de jeu.
Pour prendre en compte toute nouvelle configuration:
/etc/init.d/supervisor restart
Redémarrage automatique Bot Discord
Pour gérer le lancement et redémarrage automatique d'un bot discord, créez un nouveau fichier /etc/supervisor/conf.d/bot-discord.conf
avec une configuration du genre:
[program:discord_bot]
directory=/var/www/discord/
command=node index.js
autorestart=true
user=www-data
redirect_stderr=true
stdout_logfile=/var/www/discord/bot.log
stdout_logfile_maxbytes=50MB
startretries=3
startsecs=0
directory
contient le répertoire où est votre bot discord.command
contient la commande pour lancer le bot discord.autorestart
àtrue
pour un redémarrage automatique en cas de crash discord.user
contient le nom de l'utilisateur système qui va lancer le processus.redirect_stderr
àtrue
pour récupérer les erreurs du bots dans le fichier log.stdout_logfile
contient le chemin vers le fichier log du bot, il contiendra le retour affiché par le bot.stdout_logfile_maxbytes
est la taille maximale du fichier log.startretries
indique le nombre de démarrage en erreur avant que l'autorestart
se désactive. Permet d'éviter un redémarrage en boucle en cas d'erreur.
Redémarrage automatique serveur de jeu
Pour gérer le lancement et redémarrage automatique d'un serveur de jeu, créez un nouveau fichier /etc/supervisor/conf.d/gameserver.conf
avec une configuration du genre:
[program:gameserver]
directory=/home/minecraft/server/
command=java -jar minecraft_server.js
autorestart=true
user=minecraft
redirect_stderr=true
stdout_logfile=/home/minecraft/server/gameserver.log
stdout_logfile_maxbytes=100MB
startretries=3
startsecs=0
directoy
contient le répertoire où est votre serveur de jeu.command
contient la commande pour lancer le votre serveur de jeu.autorestart
àtrue
pour un redémarrage automatique en cas de crash du votre serveur de jeu.user
contient le nom de l'utilisateur système qui va lancer le serveur.redirect_stderr
àtrue
pour récupérer les erreurs dans le fichier log spécifié.stdout_logfile
contient le chemin vers le fichier log.stdout_logfile_maxbytes
est la taille maximale du fichier log avant rotation automatique.startretries
indique le nombre de démarrage en erreur avant que l'autorestart
se désactive. Permet d'éviter un redémarrage en boucle en cas d'erreur.
Commandes supervisord
Une multitude de commandes sont disponibles, pour voir la liste complète, tapez man supervisorctl
.
Démarrer supervisord
/etc/init.d/supervisor start
Arrêter supervisord
/etc/init.d/supervisor stop
Redémarrer supervisord
/etc/init.d/supervisor restart
Statut des processus
Pour afficher la liste des processus configurés dans supervisord et leur statut (lancé, arreté, crash, etc) :
supervisorctl status
Va retourner par exemple:
discord_bot RUNNING pid 6183, uptime 17:08:51
Démarrer un processus
supervisorctl start NOMDUPROCESSUS
Arrêter un processus
supervisorctl stop NOMDUPROCESSUS
Redémarrer un processus
supervisorctl restart NOMDUPROCESSUS