Supervisor installeren en configureren op Ubuntu 16.04

Supervisor is een client / serversysteem dat wordt gebruikt om een ​​aantal UNIX-processen te besturen, meer specifiek processen die verband houden met een project of een klant. U kunt bijvoorbeeld supervisor gebruiken om een ​​willekeurig aantal werkwachtrijen van uw webtoepassing uit te voeren en te bewaken.

De componenten van dit systeem zijn:

  • supervisord: het servergedeelte van het systeem.
  • supervisorctl: De opdrachtregelinterface die wordt gebruikt om met de server te communiceren.
  • Webserver: een eenvoudige webserver en een webgebruikersinterface met basisfunctionaliteit in vergelijking met supervisorctl .
  • XML-RPC-interface: Dezelfde HTTP-server die door de webclient wordt gebruikt, heeft een XML-RPC-interface die kan worden gebruikt om supervisorprogramma's te besturen.

In deze tutorial zullen we de meest up-to-date versie van supervisor installeren, demonstreren hoe programma's kunnen worden voortgebracht en beheerd supervisorctlen een webinterface configureren om onze programma's te beheren.

Installatie en basisconfiguratie

We zullen supervisor installeren via easy_install, een functie van de setuptools van python.

Werk eerst uw lijst met lokale pakketten bij en installeer vervolgens python setuptools.

sudo apt-get update && sudo apt-get install python-setuptools

Nu kunnen we supervisor installeren.

sudo easy_install supervisor

Zodra de installatie is voltooid, moeten we ons configuratiebestand genereren. Maak een map met de naam supervisorbinnen /etc.

sudo mkdir /etc/supervisor

En voer dan het volgende uit.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

Als je niet bent ingelogd met de rootgebruiker, krijg je mogelijk een Permission deniedfoutmelding (zelfs met sudo). Dit komt door de omleiding. Om dit te ondervangen, log in als root.

sudo su

Vervolgens kunt u de opdracht opnieuw uitvoeren.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

U kunt de rootgebruiker nu verlaten met de exitopdracht. De echo_supervisord_confopdracht werd gegeven door onze supervisor-installatie.

Basisconfiguratie

Open het /etc/supervisor/supervisord.confbestand en controleer de inhoud. U zult opmerken dat dit configuratiebestand de INIsyntaxis volgt en wordt gedeeld door secties (weergegeven door haakjes zoals in [section-name]).

Om programma's toe te voegen die door de supervisor moeten worden beheerd, hoeven we alleen de juiste [program]secties te maken. Om te voorkomen dat we elke keer dat we een programma moeten toevoegen (of wijzigen) met het hoofdconfiguratiebestand rommelen, gebruiken we de [include]sectie. Zoek dit gedeelte, verwijder het commentaar en bewerk het zodat het er als volgt uitziet.

[include]
files=conf.d/*.conf

Voor elk programma dat we willen toevoegen, maken we nu een .inibestand aan in de /etc/supervisor/conf.d/directory. Laten we deze map maken.

sudo mkdir /etc/supervisor/conf.d

De supervisorserver starten

Zoals eerder opgemerkt bestaat de supervisor uit een server en clients die er verbinding mee maken. Om programma's te kunnen beheren en controleren, moeten we de server starten. Om dit te doen, zullen we de supervisor-server registreren in systemd, zodat de server kan worden gestart bij het opstarten van het systeem.

Maak hiervoor een bestand met de naam supervisord.servicein de /etc/systemd/systemdirectory.

sudo touch /etc/systemd/system/supervisord.service

Voeg de volgende inhoud toe aan het bestand.

[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
Alias=supervisord.service

Activeer de supervisordienst.

sudo systemctl start supervisord.service

Zolang het servicebestand zich in de /etc/systemd/systemdirectory bevindt, wordt het automatisch gestart bij het opstarten van het systeem.

U kunt de status van de dienst controleren.

systemctl status supervisord.service

Je kunt ook de logboeken bekijken.

sudo journalctl -u supervisord.service

Programma's toevoegen

De programma's die door de supervisor worden beheerd, worden gegeven door verschillende [program]secties in de configuratie. Voor elk programma dat we willen beheren, zullen we een stand-alone configuratiebestand maken met informatie over het uitvoerbare pad van de opdracht, eventuele omgevingsvariabelen en hoe deze moeten worden uitgevoerd in het geval van een shutdown.

Laten we eerst een eenvoudig script maken dat een tijdstempel vastlegt. Maak een bestand met de naam hello_supervisor.sh(waar u maar wilt, we verwijzen naar het volledige pad van dit script).

touch hello_supervisor.sh

Plaats nu de volgende inhoud erin

#!/bin/bash
while true
do 
    # Echo current timestamp to stdout
    echo Hello Supervisor: `date`
    # Echo 'error!' to stderr
    echo An error ocurred at `date`! >&2
    sleep 1
done

Maak het nu uitvoerbaar

chmod +x hello_supervisor.sh

Praktisch gezien is dit script vrijwel nutteloos. We kunnen het echter gebruiken om de kracht van de supervisor te demonstreren. Maak het bijbehorende configuratiebestand door het volgende uit te voeren.

sudo touch /etc/supervisor/conf.d/hello_supervisor.conf

Zet nu de volgende inhoud in dit bestand.

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

Opmerking: zorg ervoor dat u deze vervangt USERdoor uw gebruikersnaam.

We zullen deze configuratie stap voor stap bekijken.

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh

Ten eerste begint de configuratie met het definiëren van een programma met de naam hello_supervisor . Het informeert ook het volledige pad van het uit te voeren bestand.

autostart=true

Deze regel geeft aan dat dit programma automatisch moet worden gestart wanneer de supervisor wordt gestart.

autorestart=true

Als het programma om welke reden dan ook stopt, informeert deze regel de supervisor om het proces automatisch opnieuw te starten.

stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

Deze regels bepalen de logfile locatie stderren stdoutresp.

Programma's beheren

Nu we supervisor hebben geïnstalleerd en geconfigureerd, kunnen we onze processen beheren.

Nadat we een nieuw programma hebben toegevoegd, moeten we de volgende twee opdrachten uitvoeren om de server te informeren de configuratiebestanden opnieuw te lezen en eventuele wijzigingen toe te passen.

sudo supervisorctl reread
sudo supervisorctl update

Voer nu de supervisorctlclient uit.

sudo supervisorctl

U wordt begroet met een lijst van de geregistreerde processen. U ziet een proces dat wordt opgeroepen hello_supervisormet een RUNNINGstatus.

hello_supervisor                 RUNNING   pid 6853, uptime 0:22:30
supervisor>

Typ helpvoor een lijst met beschikbare opdrachten.

supervisor> help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail   
avail  fg        pid   remove  shutdown  status  update 
clear  maintail  quit  reread  signal    stop    version

In een notendop, kunnen we start, stopen restartprogramma's die door het passeren van de naam van het programma als een argument om de betreffende opdracht.

supervisor> stop hello_supervisor 
hello_supervisor: stopped
supervisor> start hello_supervisor 
hello_supervisor: started
supervisor> restart hello_supervisor 
hello_supervisor: stopped
hello_supervisor: started
supervisor> 

We kunnen ook de programma-uitvoer bekijken met de tailopdracht.

supervisor> tail hello_supervisor 
Hello Supervisor: Mon Sep 25 19:27:29 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:30 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:31 UTC 2017

Voor de stderruitvoer kunt u ook gebruiken tail.

supervisor> tail hello_supervisor stderr
An error ocurred at Mon Sep 25 19:31:12 UTC 2017!
An error ocurred at Mon Sep 25 19:31:13 UTC 2017!
An error ocurred at Mon Sep 25 19:31:14 UTC 2017!

Door de statusopdracht op te roepen , kunt u de status van alle geregistreerde programma's bekijken.

Als je klaar bent, kun je stoppen.

supervisor> quit

De webserver-client

Om toegang tot de supervisord-webserver toe te staan, opent u het supervisord-configuratiebestand en zoekt u de [inet_http_server]sectie.

nano /etc/supervisor/supervisord.conf

Werk nu de configuratie van deze sectie bij met het volgende.

[inet_http_server]
port=*:9001
username=your_username
password=your_password

Vervang your_usernameen your_passwordmet uw gewenste gegevens, sla uw wijzigingen en de herstart-supervisordienst op.

sudo systemctl restart supervisord.service

Vergeet niet om TCPtoegang tot de poort 9001op uw firewall toe te staan ​​en vervolgens toegang http://{server-ip}:9001vanuit uw browser. Geef desgevraagd uw usernameen password. U kunt nu uw processen vanaf het web beheren.

Gevolgtrekking

We hebben de meest up-to-date versie van supervisord geïnstalleerd, hebben geleerd hoe deze te configureren voor automatisch starten van het systeem met systemd en hebben ook een basisgebruik van beoordeeld supervisorctl. Voor meer geavanceerde configuratie en gebruikssituaties kunt u de officiële supervisordocumentatie raadplegen .



Leave a Comment

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.