Retour au blog
Linux

Créer des services systemd

25 Sep 2024 6 min
Linux Systemd Services

Gérer vos applications avec systemd

systemd est le gestionnaire de services standard sous Linux. Créer un service personnalisé permet de gérer le cycle de vie de vos applications.

Créer un service

# /etc/systemd/system/myapp.service
[Unit]
Description=Mon Application PHP
After=network.target mysql.service
Requires=mysql.service

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/php bin/console messenger:consume async --limit=100
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Commandes essentielles

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl status myapp
journalctl -u myapp -f

Gestion des workers Symfony Messenger

Pour les applications Symfony utilisant Messenger, créez un service avec plusieurs instances :

# /etc/systemd/system/[email protected]
[Service]
ExecStart=/usr/bin/php /var/www/app/bin/console messenger:consume async --time-limit=3600
Restart=always

# Lancer 3 workers
sudo systemctl enable messenger-worker@{1..3}
sudo systemctl start messenger-worker@{1..3}

Bonnes pratiques

  • Définir les dépendances avec After et Requires
  • Configurer Restart=always pour la résilience
  • Utiliser les journaux systemd plutôt que des fichiers de log
  • Limiter les ressources avec les cgroups