Services beheren met supervisorctl via de CLI

Services beheren met supervisorctl via de CLI

Processen beheren met supervisorctl via de CLI

Notes
Supervisor processen  draaien in de userspace context. Deze worden niet door LinQhost gemonitored

Als developer maak je bij het ontwikkelen van moderne websites en applicaties vaak gebruik van achtergrondprocessen. Denk hierbij aan Laravel queue workers, Symfony messengers, Magento message queues of doorlopende Node.js scripts.

Om ervoor te zorgen dat deze processen altijd draaien, en automatisch opnieuw opstarten mocht er een crash optreden, maken wij op onze managed servers gebruik van Supervisor. Via de command line interface (CLI) tool supervisorctl heb je de volledige controle over deze processen. In dit artikel leggen we uit hoe je dit gebruikt.

Belangrijke tip: Werkt het supervisorctl commando niet?

Afhankelijk van hoe je verbinding maakt met de server (bijvoorbeeld via een non-interactive SSH-sessie of een automatisch deployment script), kan het zijn dat bash-aliassen niet goed worden meegenomen. Het standaard commando supervisorctl werkt dan niet direct.

Je lost dit op door expliciet het pad naar het configuratiebestand op te geven:

supervisorctl -c /var/hpwsites/system/supervisor_cli.conf

Als dit bij jouw verbinding het geval is, vervang dan in alle onderstaande voorbeelden "supervisorctl" door dit volledige commando.

De belangrijkste basiscommando's

Hieronder vind je de commando's die je het meest zult gebruiken, bijvoorbeeld tijdens of na het deployen van een nieuwe release.

Status van processen bekijken

Om te zien welke processen er zijn geconfigureerd en wat hun huidige status is, gebruik je het status commando:


supervisorctl status


Voorbeeld output:
Quote
laravel-worker:worker-00 RUNNING pid 12345, uptime 4 days, 2:12:34
magento-queue:queue-00 STOPPED Oct 24 10:00 AM

Processen Starten, Stoppen en Herstarten

Je kunt specifieke processen afzonderlijk aansturen. Dit is essentieel als je de code van je workers hebt geüpdatet en je wilt dat ze de nieuwe code inladen.

  • Een proces starten:

    supervisorctl start laravel-worker:worker-00

  • Een proces stoppen:

    supervisorctl stop laravel-worker:worker-00

  • Een proces herstarten:

    supervisorctl restart laravel-worker:worker-00


Tip voor deployments: Je kunt ook alle processen tegelijk aansturen door all te gebruiken in plaats van de specifieke procesnaam:

supervisorctl restart all

Problemen oplossen en Logs bekijken (Tail)

Als een proces niet wil starten, is het uitlezen van de logs de snelste manier om erachter te komen wat er mis is in de code van de applicatie (bijvoorbeeld een fatale PHP-error of een missende databaseverbinding).

Je kunt de log output live volgen via het tail commando:

supervisorctl tail -f laravel-worker:worker-00


(Druk op Ctrl + C om het live volgen van de log te stoppen).

Veelvoorkomende statussen uitgelegd

Als je de status opvraagt, kun je verschillende statussen tegenkomen. Om het makkelijk te houden in deze editor, staan ze hieronder op een rij:

StatusBetekenisActie vereist?
RUNNINGHet proces draait probleemloos.Nee, alles werkt zoals verwacht.
STOPPEDHet proces is handmatig gestopt.Ja, gebruik start om het weer te activeren (indien gewenst).
STARTINGHet proces is momenteel aan het opstarten.Nee, wacht een paar seconden en check de status opnieuw.
FATALHet proces is gecrasht en kon niet automatisch herstart worden (vaak na meerdere mislukte pogingen).Ja, check de error logs (tail -f) om de bug in de applicatiecode te verhelpen en gebruik daarna restart.