Service avec systemd
< Technique | Linux
Sauter à la navigation
Sauter à la recherche
Révision datée du 14 février 2020 à 10:33 par Jordan (discussion | contributions) (Page créée avec « == Présentation == Cette page a pour objet de présenter l'utilisation de service Linux avec <code>systemd</code>. == Exemple avec une commande php pour Symfony == Scrip… »)
Présentation
Cette page a pour objet de présenter l'utilisation de service Linux avec systemd
.
Exemple avec une commande php pour Symfony
Script /path/to/my/Symfony/script/myscript.sh
contenant la commande php à faire tourner en continu :
#!/bin/bash
NAME=MyApp-daemon
DESC="Daemon for my Symfony App"
# Get current dir
CURRENT_DIR=`dirname $0`
# Get current env (if not provided, get "dev" default value")
APP_ENV=${APP_ENV:-dev}
LOGTREE=${CURRENT_DIR}
LOGFILE=${LOGTREE}/${NAME}-${APP_ENV}.log
echo $(date "+%F %T")" Begin of "`basename "$0"`" script." >> $LOGFILE
DAEMON="php -d display_errors=on"
DAEMON_OPTS="mysymfony:command --env=${APP_ENV}"
RUNNING=true
trap 'RUNNING=false;echo "Quit on SIGTERM" >> $LOGFILE 2>&1' SIGTERM
while [[ $RUNNING == true ]]
do
$DAEMON /path/to/my/Symfony/App/bin/console $DAEMON_OPTS >> $LOGFILE 2>&1
sleep 2
done
echo $(date "+%F %T")" End of "`basename "$0"`" script." >> $LOGFILE
Nouveau fichier de service /usr/lib/systemd/system/mysymfonyapp.service
dont le contenu est le suivant :
[Unit]
Description=My Symfony App envTest Daemon
After=network-online.target
# Interval de temps en seconde(s) pendant lequel le service est autorisé à redémarrer "StartLimitBurst" fois
StartLimitIntervalSec=30
# Nombre de fois que le service est autorisé à redémarrer pendant l'interval de "StartLimitIntervalSec" seconde(s)
StartLimitBurst=1
[Service]
Type=simple
Environment="APP_ENV=envtest"
PIDFile=/var/run/EXTPRO-DAEMON-envtest.pid
Restart=always
WorkingDirectory=/path/to/my/Symfony/script
User=webuser
Group=webgroup
UMask=007
ExecStart=/path/to/my/Symfony/script/myscript.sh
ExecStop=/bin/kill -15 $MAINPID
[Install]
WantedBy=multi-user.target
Prise en charge de la modification avec :
systemctl daemon-reload
Activation du service au démarrage :
systemctl enable mysymfonyapp.service
Désactivation du service au démarrage :
systemctl disable mysymfonyapp.service
Lancement du service :
systemctl start mysymfonyapp.service
Arrêt du service :
systemctl stop mysymfonyapp.service
Relance du service (attention, limite de relance à 1 toutes les 30 secondes) :
systemctl restart mysymfonyapp.service