Supervisor este un instrument de monitorizare care controlează diverse procese ale copiilor și se ocupă de pornirea / reluarea acestor procese copil atunci când părăsesc brusc sau ieșesc din anumite motive. Acesta poate fi extins pentru a controla procesele prin intermediul API-ului XML-RPC în locații îndepărtate fără a vă conecta la server. Voi acoperi API XML-RPC în a doua parte a acestei serii din două părți.
În prima parte a acestei serii de tutorial, vă voi îndruma cum să înființați un supervizor care să lucreze cu aplicația noastră. Pentru aceasta, voi crea o aplicație trivială în Flask împreună cu Gunicorn pentru a acționa ca serverul WSGI HTTP.
Presupun că aveți o înțelegere de bază a celor mai bune practici de configurare a flask, gunicorn și mediu folosind virtualenv care trebuie urmat în timp ce dezvoltați o aplicație Python.
Următoarele pachete trebuie instalate pentru dezvoltarea și controlul aplicației pe care o vom dezvolta.
$ pip instalează supraveghetorul gununar Flask
Voi crea o aplicație trivială în Flask. Această aplicație este mică, dar va satisface nevoile acestui tutorial.
Mai jos este structura aplicației:
flask_app / my_app / - __init__.py - views.py
din importul flaconului Flask app = Flask (__ name__) import my_app.views
În fișierul de mai sus, aplicația a fost configurată și inițializată.
de la my_app import app @ app.route ('/') def hello_world (): reveniți 'Hello to the World of Flask!'
În fișierul de mai sus, am creat un simplu obiectiv final Hello World.
Pentru a rula aplicația ca proces, putem folosi Gunicorn. Pentru a verifica dacă Gunicorn funcționează conform așteptărilor, trebuie doar să executați următoarea comandă din dosarul aplicației.
$ gunicorn -w 4 -b 127.0.0.1:8000 my_app: app
După aceasta, indicați browserul dvs. la http://127.0.0.1:8000/ pentru a vedea pagina de pornire a aplicației.
Acum, trebuie să facem același lucru folosind supervizorul, astfel încât acesta să funcționeze ca un daemon și va fi controlat de supraveghetorul însuși, mai degrabă decât de intervenția umană.
Mai întâi, avem nevoie de un fișier de configurare a Supervizorului. Supraveghetorul, în mod implicit, caută un etc
care conține un fișier numit supervisord.conf
. În instalațiile de sistem, acest director este / Etc /
, și în virtualenv, va căuta un etc
folder în virtualenv și apoi cădea înapoi la / Etc /
.
În cazul unei instalări la nivel de sistem, rulați:
$ echo_supervisord_conf> /etc/supervisord.conf
În cazul virtualenv, din interiorul directorului rădăcină virtuală, executați:
$ echo_supervisord_conf> etc / supervisord.conf
echo_supervisord_conf
programul este furnizat de supraveghetor; aceasta imprimă un exemplu de fișier de configurare la locația specificată. Acest lucru va crea un fișier numit supervisord.conf
la locația specificată în comanda de mai sus.
Pentru a configura Supervisor pentru aplicația noastră, adăugați următorul bloc undeva în acest fișier:
[program: supervisor_demo] comanda =/ bin / gunicorn -w 4 -b 127.0.0.1:8000 my_app: directorul de aplicații = / supervisor-tutsplus-demo user = someuser # Utilizator relevant autostart = true autorestart = adevărat stdout_logfile = / tmp / app.log stderr_logfile = / tmp / error.log
Aici configuram comanda care trebuie rulata si din care locatie de director trebuie sa faca acest lucru in care utilizatori. De asemenea, este specificat dacă trebuie să reporniți aplicația în caz de eșec. Locațiile fișierelor de jurnal pot fi de asemenea specificate. Există multe alte opțiuni de configurare, care pot fi consultate în documentația oficială a Supervizorului.
Faceți o notă că nu trebuie să rulați niciodată aplicațiile ca utilizator root. Acesta este un defect de securitate foarte mare pe măsură ce aplicația se blochează, ceea ce poate dăuna sistemului de operare în sine.
Pentru a rula aplicația utilizând Supervisor, executați următoarele comenzi:
$ supervisor $ supervisorctl status supervisor_demo RUNNING pid 22550, uptime 0:00:04
Prima comandă invocă supervisord
server, iar următorul oferă o stare a tuturor proceselor copilului.
De fiecare dată când modificați aplicația și apoi doriți să reporniți Gunicorn pentru a reflecta modificările, executați următoarea comandă:
$ supervisorctl reporniți totul
De asemenea, puteți da anumite procese în loc să restartați totul:
$ supervisorctl reporni supervisor_demo
Supervizorul oferă, de asemenea, o interfață Web UI care poate fi activată prin activarea funcției inet_http_server
bloc de configurare în supervisord.conf
. Acest interfață Web poate fi căutat pe http: // localhost: 9001 /.
În acest tutorial, am văzut cum să configurați Supervisorul și să îl folosiți pentru a rula o aplicație ca proces daemon și pentru a controla procesele colectiv sau selectiv. În cea de-a doua parte a acestei serii de tutori, vom vedea cum să controlam și să interogăm supervizorul și programele / procesele acestuia utilizând API XML-RPC.