Инсталиране и конфигуриране на 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. За по-разширена конфигурация и случаи на използване може да се обърнете към официалната документация на супервайзора .


Инсталирайте Lets Encrypt SSL в приложението WordPress с едно щракване

Инсталирайте Lets Encrypt SSL в приложението WordPress с едно щракване

Въведение Lets Encrypt е услуга на сертифициращ орган, която предлага безплатни TLS/SSL сертификати. Процесът на инсталиране е опростен от Certbot,

Как да настроите надстройки без надзор на Debian 9 (разтягане)

Как да настроите надстройки без надзор на Debian 9 (разтягане)

Използване на различна система? Ако закупите сървър на Debian, винаги трябва да имате най-новите корекции за сигурност и актуализации, независимо дали спите или не

Как да инсталирате и конфигурирате PHP 7.0 или PHP 7.1 на Ubuntu 16.04

Как да инсталирате и конфигурирате PHP 7.0 или PHP 7.1 на Ubuntu 16.04

PHP и свързаните с него пакети са най-често използваните компоненти при разгръщане на уеб сървър. В тази статия ще научим как да настроим PHP 7.0 или PHP 7.1 o

Как да инсталирате Squid Proxy на CentOS

Как да инсталирате Squid Proxy на CentOS

Squid е популярна, безплатна програма за Linux, която ви позволява да създадете уеб прокси за препращане. В това ръководство ще видите как да инсталирате Squid на CentOS, за да ви обърне

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Въведение Lighttpd е форк на Apache, чиято цел е да бъде много по-малко ресурсоемка. Той е лек, откъдето идва и името му, и е доста лесен за използване. Инсталирайте

Три безплатни контролни панела на сървъра (бърза инсталация)

Три безплатни контролни панела на сървъра (бърза инсталация)

1. Virtualmin/Webmin Virtualmin е мощен и гъвкав контролен панел за уеб хостинг за Linux и UNIX системи, базиран на добре познатата уеб база с отворен код

Настройване на приложение Yii на Ubuntu 14.04

Настройване на приложение Yii на Ubuntu 14.04

Yii е PHP рамка, която ви позволява да разработвате приложения по-бързо и лесно. Инсталирането на Yii в Ubuntu е лесно, както ще научите точно l

Настройте свой собствен DNS сървър на Debian/Ubuntu

Настройте свой собствен DNS сървър на Debian/Ubuntu

Този урок обяснява как да настроите DNS сървър с помощта на Bind9 на Debian или Ubuntu. В цялата статия заменете your-domain-name.com съответно. При th

Използване на Logrotate за управление на регистрационни файлове

Използване на Logrotate за управление на регистрационни файлове

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

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Icinga2 е мощна система за наблюдение и когато се използва в модел главен-клиент, тя може да замени необходимостта от проверки на базата на NRPE. Главният клиент

Настройте Red5 Media Server на Ubuntu 16.04

Настройте Red5 Media Server на Ubuntu 16.04

Използване на различна система? Red5 е медиен сървър с отворен код, внедрен в Java, който ви позволява да стартирате Flash многопотребителски приложения, като например предаване на живо

Компилирайте и инсталирайте Nginx с модула PageSpeed ​​на Debian 8

Компилирайте и инсталирайте Nginx с модула PageSpeed ​​на Debian 8

В тази статия ще видим как да компилирате и инсталирате основната линия на Nginx от официалните източници на Nginx с модула PageSpeed, който ви позволява да

Как да инсталирате Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Как да инсталирате Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Използване на различна система? Apache Cassandra е безплатна система за управление на база данни NoSQL с отворен код, която е проектирана да осигури мащабируемост, висока

Как да инсталирате Vanilla Forum на Ubuntu 16.04

Как да инсталирате Vanilla Forum на Ubuntu 16.04

Използване на различна система? Vanilla forum е приложение за форум с отворен код, написано на PHP. Той е напълно адаптивен, лесен за използване и поддържа външен

Как да инсталирате Kanboard на Ubuntu 18.04 LTS

Как да инсталирате Kanboard на Ubuntu 18.04 LTS

Използване на различна система? Въведение Kanboard е безплатна програма за управление на проекти с отворен код, която е предназначена да улеснява и визуализира

Как да инсталирате Kanboard на Debian 9

Как да инсталирате Kanboard на Debian 9

Използване на различна система? Въведение Kanboard е безплатна програма за управление на проекти с отворен код, която е предназначена да улеснява и визуализира

Как да инсталирате Gitea на Debian 9

Как да инсталирате Gitea на Debian 9

Използване на различна система? Gitea е алтернатива с отворен код, самостоятелно хоствана система за контрол на версиите, задвижвана от Git. Gitea е написана на Голанг и е

Как да инсталирате Gitea на Ubuntu 18.04

Как да инсталирате Gitea на Ubuntu 18.04

Използване на различна система? Gitea е алтернатива с отворен код, самостоятелно хоствана система за контрол на версиите, задвижвана от git. Gitea е написана на Голанг и е

Инсталирайте Lynis на Debian 8

Инсталирайте Lynis на Debian 8

Въведение Lynis е безплатен инструмент за одит на системата с отворен код, който се използва от много системни администратори за проверка на целостта и заздравяване на техните системи. аз

Как да инсталирате Thelia 2.3 на Debian 9

Как да инсталирате Thelia 2.3 на Debian 9

Използване на различна система? Thelia е инструмент с отворен код за създаване на уебсайтове за е-бизнес и управление на онлайн съдържание, написано на PHP. Изходен код на Thelia i

Възходът на машините: Реални приложения на 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 машини. Прочетете тази статия, за да научите повече