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
AfteretRequires - Configurer
Restart=alwayspour la résilience - Utiliser les journaux systemd plutôt que des fichiers de log
- Limiter les ressources avec les cgroups