Инсталација и основна конфигурација
Покретање супервизорског сервера
Додавање програма
Управљање програмима
Клијент веб сервера
Закључак
Супервизор је систем клијент/сервер који се користи за контролу бројних УНИКС процеса, тачније процеса који се односе на пројекат или клијента. На пример, можете да користите супервизор да покренете и надгледате произвољан број редова радника ваше веб апликације.
Компоненте овог система су:
- супервисорд: Део сервера система.
- супервисорцтл: Интерфејс командне линије који се користи за интеракцију са сервером.
- Веб сервер: Једноставан веб сервер и веб кориснички интерфејс са основном функционалношћу у поређењу са супервисорцтл .
- КСМЛ-РПЦ интерфејс: Исти ХТТП сервер који користи веб клијент, служи КСМЛ-РПЦ интерфејсу који се може користити за контролу програма надзора.
У овом водичу ћемо инсталирати најновију верзију супервизора, демонстрирати како да покренемо програме и управљамо њима преко supervisorctl, и конфигурисаћемо веб интерфејс за управљање нашим програмима.
Инсталација и основна конфигурација
Инсталираћемо супервизор преко easy_install, карактеристика Питхон-ових алата за подешавање.
Прво, ажурирајте своју листу локалних пакета, а затим инсталирајте питхон 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). Ово је због преусмеравања. Да бисте ово превазишли, пријавите се као роот.
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
Прво, конфигурација почиње дефинисањем програма са именом хелло_супервисор . Такође информише пуну путању извршног фајла који треба да се покрене.
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
Клијент веб сервера
Да бисте дозволили приступ веб серверу супервизора, отворите конфигурациону датотеку супервизора и пронађите [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. Сада можете да контролишете своје процесе са веба.
Закључак
Инсталирали смо најновију верзију супервисорда, научили како да је конфигуришемо за аутоматско покретање система помоћу системд-а и такође смо прегледали основну употребу supervisorctl. За напреднију конфигурацију и случајеве коришћења можете погледати званичну документацију супервизора .