Инсталиране и конфигуриране на Supervisor на Ubuntu 16.04

Supervisor е система клиент/сървър, използвана за управление на редица UNIX процеси, по-конкретно процеси, свързани с проект или клиент. Например, можете да използвате супервайзор за създаване и наблюдение на произволен брой работни опашки на вашето уеб приложение.

Компонентите на тази система са:

  • supervisord: Сървърната част на системата.
  • supervisorctl: Интерфейсът на командния ред, използван за взаимодействие със сървъра.
  • Уеб сървър: Прост уеб сървър и уеб потребителски интерфейс с основна функционалност в сравнение с supervisorctl .
  • XML-RPC интерфейс: Същият HTTP сървър, използван от уеб клиента, обслужва XML-RPC интерфейс, който може да се използва за контрол на надзорни програми.

В този урок ще инсталираме най-актуалната версия на supervisor, ще демонстрираме как да създаваме и управляваме програми чрез supervisorctl, и ще конфигурираме уеб интерфейс за управление на нашите програми.

Инсталация и основна конфигурация

Ще инсталираме супервизор чрез easy_install, характеристика на инструментите за настройка на python.

Първо, актуализирайте вашия списък с локални пакети и след това инсталирайте python setuptools.

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

Сега можем да инсталираме супервайзор.

sudo easy_install supervisor

След като инсталацията приключи, трябва да генерираме нашия конфигурационен файл. Създайте папка с име supervisorвътре /etc.

sudo mkdir /etc/supervisor

И след това изпълнете следното.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

Ако не сте влезли с rootпотребителя, може да получите Permission deniedгрешка (дори и с sudo). Това се дължи на пренасочването. За да преодолеете това, влезте като root.

sudo su

След това можете да изпълните командата отново.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

Вече можете да оставите rootпотребителя с exitкомандата. В echo_supervisord_confзаповедта е предоставена от нашия инсталация ръководител.

Основна конфигурация

Отворете /etc/supervisor/supervisord.confфайла и проверете съдържанието му. Ще забележите, че този конфигурационен файл следва INIсинтаксиса и е разделен на секции (представени със скоби, както е в [section-name]).

За да добавим програми, които да се управляват от супервайзера, просто трябва да създадем съответните [program]секции. Въпреки това, за да избегнем бъркането в основния конфигурационен файл всеки път, когато трябва да добавим (или променим) програма, ще използваме [include]раздела. Намерете този раздел, разкоментирайте го и след това го редактирайте, за да изглежда по следния начин.

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

Сега за всяка програма, която искаме да добавим, ще създадем .iniфайл в /etc/supervisor/conf.d/директорията. Нека създадем тази папка.

sudo mkdir /etc/supervisor/conf.d

Стартиране на супервайзорния сървър

Както бе отбелязано по-горе, супервайзорът се състои от сървър и клиенти, които се свързват с него. За да можем да управляваме и контролираме програми, трябва да стартираме сървъра. За да направим това, ние ще регистрираме супервизорния сървър в systemd, така че сървърът да може да бъде стартиран при стартиране на системата.

За да направите това, създайте файл, наречен supervisord.serviceв /etc/systemd/systemдиректорията.

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

Добавете следното съдържание към файла.

[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

Активирайте услугата за надзор.

sudo systemctl start supervisord.service

Докато сервизният файл се намира в /etc/systemd/systemдиректорията, той ще бъде стартиран автоматично при стартиране на системата.

Можете да проверите състоянието на услугата.

systemctl status supervisord.service

Освен това можете да проверите дневниците.

sudo journalctl -u supervisord.service

Добавяне на програми

Програмите, управлявани от супервайзера, са дадени от различни [program]секции в конфигурацията. За всяка програма, която искаме да управляваме, ще създадем самостоятелен конфигурационен файл, информиращ пътя на изпълнимия файл на командата, всички променливи на околната среда, как да се извърши в случай на изключване.

Първо, нека създадем прост скрипт, който регистрира времева марка. Създайте файл, наречен hello_supervisor.sh(където пожелаете, ние ще се позоваваме на пълния път на този скрипт).

touch hello_supervisor.sh

Сега поставете следното съдържание в него

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

Сега го направете изпълним

chmod +x hello_supervisor.sh

На практика този скрипт е почти безполезен. Въпреки това можем да го използваме, за да демонстрираме силата на надзора. Създайте съответния конфигурационен файл, като изпълните следното.

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

Сега поставете следното съдържание в този файл.

[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

Забележка: Не забравяйте да замените USERс вашето потребителско име.

Ще прегледаме тази конфигурация стъпка по стъпка.

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

Първо, конфигурацията започва с дефиниране на програма с име hello_supervisor . Той също така информира пълния път на изпълнимия файл, който трябва да бъде стартиран.

autostart=true

Този ред посочва, че тази програма трябва да се стартира автоматично, когато се стартира супервайзорът.

autorestart=true

Ако програмата се затвори по някаква причина, този ред информира надзора автоматично да рестартира процеса.

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

Тези редове определят местоположението на регистрационния файл за stderrи stdoutсъответно.

Управление на програми

Сега, след като сме инсталирали и конфигурирали супервайзера, можем да управляваме нашите процеси.

След като добавим нова програма, трябва да изпълним следните две команди, за да информираме сървъра да прочете отново конфигурационните файлове и да приложи всички промени.

sudo supervisorctl reread
sudo supervisorctl update

Сега изпълнете supervisorctlклиента.

sudo supervisorctl

Ще бъдете посрещнати със списък на регистрираните процеси. Ще видите процес, извикан hello_supervisorсъс RUNNINGсъстояние.

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

Въведете helpсписък с наличните команди.

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

С две думи, ние можем start, stopи restartпрограми, като предавате името на програмата като аргумент за съответната команда.

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> 

Можем също да разгледаме изхода на програмата с tailкомандата.

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

stderrМожете да използвате 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!

Чрез извикване на statusкомандата можете да видите състоянието на всички регистрирани програми.

След като приключите, можете да се откажете.

supervisor> quit

Клиентът на уеб сървъра

За да разрешите достъп до уеб сървъра на supervisord, отворете конфигурационния файл на supervisord и намерете [inet_http_server]секцията.

nano /etc/supervisor/supervisord.conf

Сега актуализирайте конфигурацията на този раздел със следното.

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

Заменете your_usernameи your_passwordс желаните от вас идентификационни данни запазете вашите модификации и рестартирайт�� услугата за надзор.

sudo systemctl restart supervisord.service

Не забравяйте да разрешите TCPдостъп до порта 9001на вашата защитна стена и след това достъп http://{server-ip}:9001от вашия браузър. Когато бъдете попитани, предоставете вашите usernameи password. Вече можете да контролирате процесите си от уеб.

Заключение

Инсталирахме най-актуалната версия на supervisord, научихме как да го конфигурираме за автоматично стартиране на системата със systemd и също така прегледахме основното използване на supervisorctl. За по-разширена конфигурация и случаи на използване може да се обърнете към официалната документация на супервайзора .

Оставете коментар

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече