Instalowanie i konfigurowanie Supervisora ​​na Ubuntu 16.04

Supervisor to system klient / serwer używany do sterowania wieloma procesami UNIX, a dokładniej procesami związanymi z projektem lub klientem. Na przykład możesz użyć opiekuna, aby spawnować i monitorować dowolną liczbę kolejek roboczych twojej aplikacji internetowej.

Składniki tego systemu to:

  • supervisord: Serwerowy element systemu.
  • supervisorctl: interfejs wiersza polecenia używany do interakcji z serwerem.
  • Serwer WWW: prosty serwer WWW i interfejs użytkownika z podstawowymi funkcjami w porównaniu do supervisorctl .
  • Interfejs XML-RPC: Ten sam serwer HTTP, z którego korzysta klient WWW, obsługuje interfejs XML-RPC, którego można używać do sterowania programami nadzorczymi.

W tym samouczku zainstalujemy najbardziej aktualną wersję opiekuna, pokażemy, jak się odradzać i zarządzać programami supervisorctl, a także skonfigurujemy interfejs internetowy do zarządzania naszymi programami.

Instalacja i podstawowa konfiguracja

Będziemy instalować superwizora easy_install, funkcję setuptools Pythona.

Najpierw zaktualizuj listę lokalnych pakietów, a następnie zainstaluj Python setuptools.

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

Teraz możemy zainstalować nadzorcę.

sudo easy_install supervisor

Po zakończeniu instalacji musimy wygenerować nasz plik konfiguracyjny. Utwórz folder o nazwie supervisorwewnątrz /etc.

sudo mkdir /etc/supervisor

A następnie wykonaj następujące czynności.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

Jeśli nie jesteś zalogowany z rootużytkownikiem, możesz otrzymać Permission deniedbłąd (nawet z sudo). Wynika to z przekierowania. Aby temu zaradzić, zaloguj się jako root.

sudo su

Następnie możesz ponownie uruchomić polecenie.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

Możesz teraz opuścić rootużytkownika z exitpoleceniem. echo_supervisord_confKomenda została dostarczona przez naszego instalacji administratora.

Podstawowa konfiguracja

Otwórz /etc/supervisor/supervisord.confplik i sprawdź jego zawartość. Zauważysz, że ten plik konfiguracyjny jest zgodny ze INIskładnią i jest podzielony na sekcje (reprezentowane w nawiasach jak w [section-name]).

Aby dodać programy, którymi ma zarządzać nadzorca, wystarczy utworzyć odpowiednie [program]sekcje. Jednak, aby uniknąć bałaganu w głównym pliku konfiguracyjnym za każdym razem, gdy musimy dodać (lub zmienić) program, będziemy używać [include]sekcji. Znajdź tę sekcję, odkomentuj ją, a następnie edytuj, aby wyglądała następująco.

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

Teraz dla każdego programu, który chcemy dodać, będziemy tworzyć .iniplik w /etc/supervisor/conf.d/katalogu. Utwórzmy ten folder.

sudo mkdir /etc/supervisor/conf.d

Uruchamianie serwera administratora

Jak wspomniano wcześniej, przełożony składa się z serwera i klientów, którzy się z nim łączą. Aby móc zarządzać programami i sterować nimi, musimy uruchomić serwer. W tym celu będziemy rejestrować serwer nadzorcy systemd, aby serwer mógł zostać uruchomiony podczas uruchamiania systemu.

Aby to zrobić, utwórz plik o nazwie supervisord.servicew /etc/systemd/systemkatalogu.

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

Dodaj następującą zawartość do pliku.

[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

Aktywuj usługę nadzoru.

sudo systemctl start supervisord.service

Tak długo, jak plik usługi znajduje się w /etc/systemd/systemkatalogu, będzie on automatycznie uruchamiany podczas uruchamiania systemu.

Możesz sprawdzić status usługi.

systemctl status supervisord.service

Możesz także sprawdzić dzienniki.

sudo journalctl -u supervisord.service

Dodawanie programów

Programy kontrolowane przez przełożonego są podawane przez różne [program]sekcje konfiguracji. Dla każdego programu, którym chcemy zarządzać, utworzymy niezależny plik konfiguracyjny informujący o ścieżce wykonywalnej polecenia, wszelkich zmiennych środowiskowych, jak wykonać w przypadku wyłączenia.

Najpierw stwórzmy prosty skrypt, który rejestruje znacznik czasu. Utwórz plik o nazwie hello_supervisor.sh(gdziekolwiek chcesz, będziemy odnosić się do pełnej ścieżki tego skryptu).

touch hello_supervisor.sh

Teraz włóż do niego następującą zawartość

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

Teraz spraw, by był wykonywalny

chmod +x hello_supervisor.sh

W praktyce ten skrypt jest prawie bezużyteczny. Możemy go jednak użyć do zademonstrowania mocy przełożonego. Utwórz odpowiedni plik konfiguracyjny, wykonując następujące czynności.

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

Teraz włóż następującą zawartość do tego pliku.

[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

Uwaga: pamiętaj o zastąpieniu USERswoją nazwą użytkownika.

Przejrzymy tę konfigurację krok po kroku.

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

Po pierwsze, konfiguracja rozpoczyna się od zdefiniowania programu o nazwie hello_supervisor . Informuje również pełną ścieżkę do pliku wykonywalnego, który ma zostać uruchomiony.

autostart=true

Ten wiersz mówi, że ten program powinien zostać uruchomiony automatycznie po uruchomieniu administratora.

autorestart=true

Jeśli program zostanie zamknięty, z jakiegokolwiek powodu, ten wiersz informuje przełożonego, aby automatycznie wznowił proces.

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

Linie te określają położenie pliku dziennika odpowiednio dla stderri stdout.

Zarządzanie programami

Po zainstalowaniu i skonfigurowaniu nadzorcy jesteśmy w stanie zarządzać naszymi procesami.

Po dodaniu nowego programu powinniśmy uruchomić następujące dwa polecenia, aby poinformować serwer o ponownym odczytaniu plików konfiguracyjnych i zastosowaniu wszelkich zmian.

sudo supervisorctl reread
sudo supervisorctl update

Teraz uruchom supervisorctlklienta.

sudo supervisorctl

Zostaniesz przywitany listą zarejestrowanych procesów. Zobaczysz proces wywołany hello_supervisorze RUNNINGstatusem.

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

Wpisz helplistę dostępnych poleceń.

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

W skrócie, możemy start, stopi restartprogramy, przekazując nazwę programu jako argument do odpowiedniego polecenia.

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> 

Możemy również spojrzeć na wynik programu za pomocą tailpolecenia.

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

Do stderrwyjścia możesz również użyć 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!

Wywołując statuspolecenie, możesz wyświetlić status wszystkich zarejestrowanych programów.

Gdy skończysz, możesz wyjść.

supervisor> quit

Klient serwera WWW

Aby zezwolić na dostęp do serwera administratora, otwórz plik konfiguracyjny nadzoru i zlokalizuj [inet_http_server]sekcję.

nano /etc/supervisor/supervisord.conf

Teraz zaktualizuj konfigurację tej sekcji za pomocą następujących.

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

Zastąp your_usernamei your_passwordpodanymi poświadczeniami, zapisz zmiany i ponownie uruchom usługę nadzoru.

sudo systemctl restart supervisord.service

Pamiętaj, aby zezwolić na TCPdostęp do portu 9001zapory, a następnie dostęp http://{server-ip}:9001z przeglądarki. Gdy zostaniesz o to poproszony, podaj swoje usernamei password. Możesz teraz kontrolować swoje procesy z sieci.

Wniosek

Zainstalowaliśmy najnowszą wersję superwizora, nauczyliśmy się konfigurować ją do automatycznego uruchamiania systemu za pomocą systemd, a także zapoznaliśmy się z podstawową obsługą supervisorctl. Bardziej zaawansowaną konfigurację i przypadki użycia można znaleźć w oficjalnej dokumentacji nadzoru .



Leave a Comment

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.