Installasjon og grunnleggende konfigurasjon
Starter supervisorserveren
Legger til programmer
Administrere programmer
Webserverklienten
Konklusjon
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 .