Instalacija i osnovna konfiguracija
Pokretanje poslužitelja nadzora
Dodavanje programa
Upravljanje programima
Klijent web poslužitelja
Zaključak
Supervizor je klijent/poslužitelj sustav koji se koristi za kontrolu niza UNIX procesa, točnije procesa povezanih s projektom ili kupcem. Na primjer, možete koristiti supervizor za stvaranje i praćenje proizvoljnog broja redova radnika vaše web aplikacije.
Komponente ovog sustava su:
- supervisord: Poslužiteljski dio sustava.
- supervisorctl: sučelje naredbenog retka koje se koristi za interakciju s poslužiteljem.
- Web poslužitelj: Jednostavan web poslužitelj i web korisničko sučelje s osnovnom funkcionalnošću u usporedbi s supervisorctl .
- XML-RPC sučelje: Isti HTTP poslužitelj koji koristi web klijent, služi XML-RPC sučelju koje se može koristiti za kontrolu programa nadzora.
U ovom vodiču instalirat ćemo najnoviju verziju supervizora, pokazati kako supervisorctlpokrenuti programe i upravljati njima putem , te konfigurirati web sučelje za upravljanje našim programima.
Instalacija i osnovna konfiguracija
Instalirat ćemo supervizor putem easy_install, značajke pythonovih alata za postavljanje.
Najprije ažurirajte svoj popis lokalnih paketa, a zatim instalirajte python setuptools.
sudo apt-get update && sudo apt-get install python-setuptools
Sada možemo instalirati supervizor.
sudo easy_install supervisor
Nakon što je instalacija dovršena, moramo generirati našu konfiguracijsku datoteku. Stvorite mapu pod nazivom supervisorunutar /etc.
sudo mkdir /etc/supervisor
A zatim izvršite sljedeće.
echo_supervisord_conf > /etc/supervisor/supervisord.conf
Ako niste prijavljeni s rootkorisnikom, možete dobiti Permission deniedpogrešku (čak i s sudo). To je zbog preusmjeravanja. Da biste to riješili, prijavite se kao root.
sudo su
Zatim možete ponovno pokrenuti naredbu.
echo_supervisord_conf > /etc/supervisor/supervisord.conf
Sada možete ostaviti rootkorisnika s exitnaredbom. echo_supervisord_confZapovijed dao je našoj nadzornika instalacije.
Osnovna konfiguracija
Otvorite /etc/supervisor/supervisord.confdatoteku i provjerite njen sadržaj. Primijetit ćete da ova konfiguracijska datoteka slijedi INIsintaksu i podijeljena je po odjeljcima (predstavljeni u zagradama kao u [section-name]).
Da bismo dodali programe kojima će upravljati nadzornik, samo trebamo stvoriti odgovarajuće [program]odjeljke. Međutim, kako bismo izbjegli petljanje oko glavne konfiguracijske datoteke svaki put kada trebamo dodati (ili promijeniti) program, koristit ćemo [include]odjeljak. Pronađite ovaj odjeljak, dekomentirajte ga i zatim ga uredite da izgleda ovako.
[include]
files=conf.d/*.conf
Sada ćemo za svaki program koji želimo dodati kreirati .inidatoteku unutar /etc/supervisor/conf.d/direktorija. Kreirajmo ovu mapu.
sudo mkdir /etc/supervisor/conf.d
Pokretanje poslužitelja nadzora
Kao što je već spomenuto, supervizor se sastoji od poslužitelja i klijenata koji se na njega povezuju. Da bismo mogli upravljati i kontrolirati programe, moramo pokrenuti poslužitelj. Da bismo to učinili, registrirat ćemo poslužitelj nadzora u systemd, tako da se poslužitelj može pokrenuti pri pokretanju sustava.
Da biste to učinili, stvorite datoteku pod nazivom supervisord.serviceu /etc/systemd/systemdirektoriju.
sudo touch /etc/systemd/system/supervisord.service
Dodajte sljedeći sadržaj u datoteku.
[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
Aktivirajte uslugu nadzora.
sudo systemctl start supervisord.service
Sve dok se servisna datoteka nalazi u /etc/systemd/systemdirektoriju, automatski će se pokrenuti pri pokretanju sustava.
Možete provjeriti status usluge.
systemctl status supervisord.service
Također, možete provjeriti dnevnike.
sudo journalctl -u supervisord.service
Dodavanje programa
Programi kojima upravlja nadzornik dati su u različitim [program]odjeljcima u konfiguraciji. Za svaki program kojim želimo upravljati, kreirat ćemo samostalnu konfiguracijsku datoteku koja informira put izvršne naredbe, sve varijable okoline, kako izvesti u slučaju isključivanja.
Prvo, napravimo jednostavnu skriptu koja bilježi vremensku oznaku. Stvorite datoteku pod nazivom hello_supervisor.sh(gdje god želite, referirat ćemo na cijeli put ove skripte).
touch hello_supervisor.sh
Sada u njega stavite sljedeći sadržaj
#!/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
Sada ga učinite izvršnim
chmod +x hello_supervisor.sh
U praktičnom smislu ova skripta je prilično beskorisna. Međutim, možemo ga upotrijebiti da pokažemo moć supervizora. Stvorite odgovarajuću konfiguracijsku datoteku tako što ćete pokrenuti sljedeće.
sudo touch /etc/supervisor/conf.d/hello_supervisor.conf
Sada stavite sljedeći sadržaj u ovu datoteku.
[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
Napomena: Obavezno zamijenite USERsvojim korisničkim imenom.
Pregledat ćemo ovu konfiguraciju korak po korak.
[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
Prvo, konfiguracija počinje definiranjem programa imena hello_supervisor . Također obavještava punu putanju izvršne datoteke koju treba pokrenuti.
autostart=true
Ova linija navodi da se ovaj program treba automatski pokrenuti kada se pokrene supervizor.
autorestart=true
Ako se program zatvori iz bilo kojeg razloga, ova linija obavještava nadzornika da automatski ponovno pokrene proces.
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log
Ovi retki definiraju mjesto datoteke dnevnika za stderri stdout, respektivno.
Upravljanje programima
Sada kada smo instalirali i konfigurirali nadzornika, možemo upravljati našim procesima.
Nakon dodavanja novog programa, trebali bismo pokrenuti sljedeće dvije naredbe, da obavijestimo poslužitelj da ponovno pročita konfiguracijske datoteke i da primijeni sve promjene.
sudo supervisorctl reread
sudo supervisorctl update
Sada izvršite supervisorctlklijenta.
sudo supervisorctl
Bit ćete dočekani s popisom registriranih procesa. Vidjet ćete proces pozvan hello_supervisorsa RUNNINGstatusom.
hello_supervisor RUNNING pid 6853, uptime 0:22:30
supervisor>
Upišite helpza popis dostupnih naredbi.
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
U Ukratko, možemo start, stopa restartprogrami prolazeći naziv programa kao argument dotične naredbe.
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>
tailNaredbom možemo pogledati i izlaz programa .
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
Za stderrizlaz također možete koristiti 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!
Pozivanjem statusnaredbe možete vidjeti status svih registriranih programa.
Kada završite, možete odustati.
supervisor> quit
Klijent web poslužitelja
Da biste dopustili pristup web-poslužitelju nadzora, otvorite konfiguracijsku datoteku nadzornika i pronađite [inet_http_server]odjeljak.
nano /etc/supervisor/supervisord.conf
Sada ažurirajte konfiguraciju ovog odjeljka sljedećim.
[inet_http_server]
port=*:9001
username=your_username
password=your_password
Zamijenite your_usernamei your_passwordsa svojim željenim vjerodajnicama spremite svoje izmjene i ponovno pokrenite uslugu nadzora.
sudo systemctl restart supervisord.service
Ne zaboravite dopustiti TCPpristup portu 9001na vašem vatrozidu, a zatim pristup http://{server-ip}:9001iz vašeg preglednika. Na upit navedite svoje usernamei password. Sada možete kontrolirati svoje procese s weba.
Zaključak
Instalirali smo najnoviju verziju supervisorda, naučili kako ga konfigurirati za automatsko pokretanje sustava sa systemd-om i također pregledali osnovnu upotrebu supervisorctl. Za naprednije konfiguracije i slučajeve korištenja možete pogledati službenu dokumentaciju nadzora .