Installere og konfigurere Supervisor på Ubuntu 16.04

Supervisor er et klient/serversystem som brukes til å kontrollere en rekke UNIX-prosesser, nærmere bestemt prosesser knyttet til et prosjekt eller en kunde. Du kan for eksempel bruke supervisor til å skape og overvåke et vilkårlig antall arbeiderkøer i nettapplikasjonen din.

Komponentene i dette systemet er:

  • supervisord: Serverdelen av systemet.
  • supervisorctl: Kommandolinjegrensesnittet som brukes til å samhandle med serveren.
  • Webserver: En enkel webserver og et webbrukergrensesnitt med grunnleggende funksjonalitet sammenlignet med supervisorctl .
  • XML-RPC-grensesnitt: Den samme HTTP-serveren som brukes av webklienten, betjener et XML-RPC-grensesnitt som kan brukes til å kontrollere overordnet programmer.

I denne opplæringen vil vi installere den mest oppdaterte versjonen av supervisor, demonstrere hvordan du spawner og administrerer programmer gjennom supervisorctl, og konfigurerer et nettgrensesnitt for å administrere programmene våre.

Installasjon og grunnleggende konfigurasjon

Vi vil installere supervisor gjennom easy_install, en funksjon i pythons oppsettverktøy.

Oppdater først den lokale pakkelisten og installer deretter python setuptools.

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

Nå kan vi installere supervisor.

sudo easy_install supervisor

Når installasjonen er fullført, må vi generere konfigurasjonsfilen vår. Lag en mappe som heter supervisorinni /etc.

sudo mkdir /etc/supervisor

Og utfør deretter følgende.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

Hvis du ikke er logget inn med rootbrukeren, kan du få en Permission deniedfeilmelding (selv med sudo). Dette er på grunn av omdirigeringen. For å overvinne dette, logg inn som root.

sudo su

Deretter kan du kjøre kommandoen på nytt.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

Du kan nå la rootbrukeren stå med exitkommandoen. Den echo_supervisord_confkommandoen ble levert av vår veileder installasjon.

Grunnleggende konfigurasjon

Åpne /etc/supervisor/supervisord.conffilen og sjekk innholdet. Du vil merke at denne konfigurasjonsfilen følger INIsyntaksen, og den er delt inn etter seksjoner (representert med parentes som i [section-name]).

For å legge til programmer som skal administreres av veileder, trenger vi bare å lage de riktige [program]delene. Men for å unngå å rote rundt med hovedkonfigurasjonsfilen hver gang vi trenger å legge til (eller endre) et program, vil vi bruke [include]delen. Finn denne delen, fjern kommentarer og rediger den slik at den ser slik ut.

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

Nå for hvert program vi ønsker å legge til, vil vi lage en .inifil inne i /etc/supervisor/conf.d/katalogen. La oss lage denne mappen.

sudo mkdir /etc/supervisor/conf.d

Starter supervisorserveren

Som nevnt tidligere, er supervisor sammensatt av en server og klienter som kobles til den. For å kunne administrere og kontrollere programmer, må vi starte serveren. For å gjøre dette, vil vi registrere supervisor-serveren i systemd, slik at serveren kan startes ved systemstart.

For å gjøre det, lag en fil som heter supervisord.servicei /etc/systemd/systemkatalogen.

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

Legg til følgende innhold i filen.

[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

Aktiver veiledertjenesten.

sudo systemctl start supervisord.service

Så lenge tjenestefilen ligger i /etc/systemd/systemkatalogen, vil den automatisk startes ved systemstart.

Du kan sjekke statusen til tjenesten.

systemctl status supervisord.service

Du kan også sjekke loggene.

sudo journalctl -u supervisord.service

Legger til programmer

Programmene kontrollert av veileder er gitt av forskjellige [program]seksjoner i konfigurasjonen. For hvert program vi ønsker å administrere, vil vi lage en frittstående konfigurasjonsfil som informerer om den kjørbare kommandobanen, eventuelle miljøvariabler, hvordan de skal utføres i tilfelle en nedleggelse.

La oss først lage et enkelt skript som logger et tidsstempel. Opprett en fil kalt hello_supervisor.sh(hvor som helst du ønsker, vi vil referere til hele banen til dette skriptet).

touch hello_supervisor.sh

Legg nå følgende innhold inn i den

#!/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

Gjør den nå kjørbar

chmod +x hello_supervisor.sh

Rent praktisk er dette skriptet ganske ubrukelig. Vi kan imidlertid bruke det til å demonstrere makten til veileder. Opprett den tilsvarende konfigurasjonsfilen ved å kjøre følgende.

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

Legg nå følgende innhold inn i denne filen.

[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

Merk: Pass på å erstatte USERmed brukernavnet ditt.

Vi vil gå gjennom denne konfigurasjonen trinn for trinn.

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

Først begynner konfigurasjonen med å definere et program med navnet hello_supervisor . Den informerer også hele banen til den kjørbare filen som skal kjøres.

autostart=true

Denne linjen sier at dette programmet skal startes automatisk når supervisor startes.

autorestart=true

Hvis programmet avsluttes, av en eller annen grunn, informerer denne linjen veilederen om automatisk å starte prosessen på nytt.

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

Disse linjene definerer loggfil stedet for stderrog stdout, henholdsvis.

Administrere programmer

Nå som vi har installert og konfigurert supervisor, kan vi administrere prosessene våre.

Etter å ha lagt til et nytt program, bør vi kjøre følgende to kommandoer, for å informere serveren om å lese konfigurasjonsfilene på nytt og ta i bruk eventuelle endringer.

sudo supervisorctl reread
sudo supervisorctl update

Utfør nå supervisorctlklienten.

sudo supervisorctl

Du vil bli møtt med en liste over de registrerte prosessene. Du vil se en prosess kalt hello_supervisormed en RUNNINGstatus.

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

Skriv helpfor en liste over tilgjengelige kommandoer.

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

I et nøtteskall kan vi start, stopog restartprogrammer ved å sende programnavnet som et argument til den respektive kommandoen.

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> 

Vi kan også ta en titt på programutgangen med tailkommandoen.

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

For stderrutgangen kan du også bruke 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!

Ved å påkalle statuskommandoen kan du se statusen til alle registrerte programmer.

Når du er ferdig, kan du slutte.

supervisor> quit

Webserverklienten

For å gi tilgang til supervisor-nettserveren, åpne supervisor-konfigurasjonsfilen og finn [inet_http_server]seksjonen.

nano /etc/supervisor/supervisord.conf

Oppdater nå denne delens konfigurasjon med følgende.

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

Bytt ut your_usernameog your_passwordmed ønsket legitimasjon, lagre endringene og start tilsynstjenesten på nytt.

sudo systemctl restart supervisord.service

Husk å gi TCPtilgang til porten 9001på brannmuren og deretter tilgang http://{server-ip}:9001fra nettleseren. Når du blir spurt, oppgi din usernameog password. Du kan nå kontrollere prosessene dine fra nettet.

Konklusjon

Vi har installert den mest oppdaterte versjonen av supervisord, lært hvordan du konfigurerer den for automatisk systemstart med systemd og har også gjennomgått en grunnleggende bruk av supervisorctl. For mer avansert konfigurasjon og brukstilfeller kan du se den offisielle veilederdokumentasjonen .

Legg igjen en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer