Installere og konfigurere Supervisor på Ubuntu 16.04

Supervisor er et klient/serversystem som brukes til å kontrollere en rekke UNIX-prosesser, nærmere bestemt prosesser knyttet til et prosjekt eller en kunde. Du kan for eksempel bruke supervisor til å skape og overvåke et vilkårlig antall arbeiderkøer i nettapplikasjonen din.

Komponentene i dette systemet er:

  • supervisord: Serverdelen av systemet.
  • supervisorctl: Kommandolinjegrensesnittet som brukes til å samhandle med serveren.
  • Webserver: En enkel webserver og et webbrukergrensesnitt med grunnleggende funksjonalitet sammenlignet med supervisorctl .
  • XML-RPC-grensesnitt: Den samme HTTP-serveren som brukes av webklienten, betjener et XML-RPC-grensesnitt som kan brukes til å kontrollere overordnet programmer.

I denne opplæringen vil vi installere den mest oppdaterte versjonen av supervisor, demonstrere hvordan du spawner og administrerer programmer gjennom supervisorctl, og konfigurerer et nettgrensesnitt for å administrere programmene våre.

Installasjon og grunnleggende konfigurasjon

Vi vil installere supervisor gjennom easy_install, en funksjon i pythons oppsettverktøy.

Oppdater først den lokale pakkelisten og installer deretter python setuptools.

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

Nå kan vi installere supervisor.

sudo easy_install supervisor

Når installasjonen er fullført, må vi generere konfigurasjonsfilen vår. Lag en mappe som heter supervisorinni /etc.

sudo mkdir /etc/supervisor

Og utfør deretter følgende.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

Hvis du ikke er logget inn med rootbrukeren, kan du få en Permission deniedfeilmelding (selv med sudo). Dette er på grunn av omdirigeringen. For å overvinne dette, logg inn som root.

sudo su

Deretter kan du kjøre kommandoen på nytt.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

Du kan nå la rootbrukeren stå med exitkommandoen. Den echo_supervisord_confkommandoen ble levert av vår veileder installasjon.

Grunnleggende konfigurasjon

Åpne /etc/supervisor/supervisord.conffilen og sjekk innholdet. Du vil merke at denne konfigurasjonsfilen følger INIsyntaksen, og den er delt inn etter seksjoner (representert med parentes som i [section-name]).

For å legge til programmer som skal administreres av veileder, trenger vi bare å lage de riktige [program]delene. Men for å unngå å rote rundt med hovedkonfigurasjonsfilen hver gang vi trenger å legge til (eller endre) et program, vil vi bruke [include]delen. Finn denne delen, fjern kommentarer og rediger den slik at den ser slik ut.

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

Nå for hvert program vi ønsker å legge til, vil vi lage en .inifil inne i /etc/supervisor/conf.d/katalogen. La oss lage denne mappen.

sudo mkdir /etc/supervisor/conf.d

Starter supervisorserveren

Som nevnt tidligere, er supervisor sammensatt av en server og klienter som kobles til den. For å kunne administrere og kontrollere programmer, må vi starte serveren. For å gjøre dette, vil vi registrere supervisor-serveren i systemd, slik at serveren kan startes ved systemstart.

For å gjøre det, lag en fil som heter supervisord.servicei /etc/systemd/systemkatalogen.

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

Legg til følgende innhold i filen.

[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

Aktiver veiledertjenesten.

sudo systemctl start supervisord.service

Så lenge tjenestefilen ligger i /etc/systemd/systemkatalogen, vil den automatisk startes ved systemstart.

Du kan sjekke statusen til tjenesten.

systemctl status supervisord.service

Du kan også sjekke loggene.

sudo journalctl -u supervisord.service

Legger til programmer

Programmene kontrollert av veileder er gitt av forskjellige [program]seksjoner i konfigurasjonen. For hvert program vi ønsker å administrere, vil vi lage en frittstående konfigurasjonsfil som informerer om den kjørbare kommandobanen, eventuelle miljøvariabler, hvordan de skal utføres i tilfelle en nedleggelse.

La oss først lage et enkelt skript som logger et tidsstempel. Opprett en fil kalt hello_supervisor.sh(hvor som helst du ønsker, vi vil referere til hele banen til dette skriptet).

touch hello_supervisor.sh

Legg nå følgende innhold inn i den

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

Gjør den nå kjørbar

chmod +x hello_supervisor.sh

Rent praktisk er dette skriptet ganske ubrukelig. Vi kan imidlertid bruke det til å demonstrere makten til veileder. Opprett den tilsvarende konfigurasjonsfilen ved å kjøre følgende.

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

Legg nå følgende innhold inn i denne filen.

[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

Merk: Pass på å erstatte USERmed brukernavnet ditt.

Vi vil gå gjennom denne konfigurasjonen trinn for trinn.

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

Først begynner konfigurasjonen med å definere et program med navnet hello_supervisor . Den informerer også hele banen til den kjørbare filen som skal kjøres.

autostart=true

Denne linjen sier at dette programmet skal startes automatisk når supervisor startes.

autorestart=true

Hvis programmet avsluttes, av en eller annen grunn, informerer denne linjen veilederen om automatisk å starte prosessen på nytt.

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

Disse linjene definerer loggfil stedet for stderrog stdout, henholdsvis.

Administrere programmer

Nå som vi har installert og konfigurert supervisor, kan vi administrere prosessene våre.

Etter å ha lagt til et nytt program, bør vi kjøre følgende to kommandoer, for å informere serveren om å lese konfigurasjonsfilene på nytt og ta i bruk eventuelle endringer.

sudo supervisorctl reread
sudo supervisorctl update

Utfør nå supervisorctlklienten.

sudo supervisorctl

Du vil bli møtt med en liste over de registrerte prosessene. Du vil se en prosess kalt hello_supervisormed en RUNNINGstatus.

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

Skriv helpfor en liste over tilgjengelige kommandoer.

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

I et nøtteskall kan vi start, stopog restartprogrammer ved å sende programnavnet som et argument til den respektive kommandoen.

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> 

Vi kan også ta en titt på programutgangen med tailkommandoen.

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

For stderrutgangen kan du også bruke 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!

Ved å påkalle statuskommandoen kan du se statusen til alle registrerte programmer.

Når du er ferdig, kan du slutte.

supervisor> quit

Webserverklienten

For å gi tilgang til supervisor-nettserveren, åpne supervisor-konfigurasjonsfilen og finn [inet_http_server]seksjonen.

nano /etc/supervisor/supervisord.conf

Oppdater nå denne delens konfigurasjon med følgende.

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

Bytt ut your_usernameog your_passwordmed ønsket legitimasjon, lagre endringene og start tilsynstjenesten på nytt.

sudo systemctl restart supervisord.service

Husk å gi TCPtilgang til porten 9001på brannmuren og deretter tilgang http://{server-ip}:9001fra nettleseren. Når du blir spurt, oppgi din usernameog password. Du kan nå kontrollere prosessene dine fra nettet.

Konklusjon

Vi har installert den mest oppdaterte versjonen av supervisord, lært hvordan du konfigurerer den for automatisk systemstart med systemd og har også gjennomgått en grunnleggende bruk av supervisorctl. For mer avansert konfigurasjon og brukstilfeller kan du se den offisielle veilederdokumentasjonen .


Hvordan sette opp en Tekkit Classic Server på Ubuntu 16.10

Hvordan sette opp en Tekkit Classic Server på Ubuntu 16.10

Bruker du et annet system? Hva er Tekkit Classic? Tekkit Classic er en modpack for spillet alle kjenner og elsker; Minecraft. Den inneholder noe av ver

Opprette en Jekyll-blogg på Ubuntu 16.04

Opprette en Jekyll-blogg på Ubuntu 16.04

Bruker du et annet system? Jekyll er et flott alternativ til WordPress for blogging eller deling av innhold. Det krever ingen databaser, og det er veldig enkelt, jeg

Hvordan installere og konfigurere PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

Hvordan installere og konfigurere PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

PHP og relaterte pakker er de mest brukte komponentene når du distribuerer en webserver. I denne artikkelen vil vi lære hvordan du setter opp PHP 7.0 eller PHP 7.1 o

Slik installerer du Squid Proxy på CentOS

Slik installerer du Squid Proxy på CentOS

Squid er et populært, gratis Linux-program som lar deg lage en webproxy for videresending. I denne veiledningen vil du se hvordan du installerer Squid på CentOS for å gjøre deg om

Slik installerer du Lighttpd (LLMP Stack) på CentOS 6

Slik installerer du Lighttpd (LLMP Stack) på CentOS 6

Introduksjon Lighttpd er en apachegaffel som har som mål å være mye mindre ressurskrevende. Den er lett, derav navnet, og er ganske enkel å bruke. Installer

Sette opp en Yii-applikasjon på Ubuntu 14.04

Sette opp en Yii-applikasjon på Ubuntu 14.04

Yii er et PHP-rammeverk som lar deg utvikle applikasjoner raskere og enklere. Det er enkelt å installere Yii på Ubuntu, som du vil lære nøyaktig

Sett opp din egen DNS-server på Debian/Ubuntu

Sett opp din egen DNS-server på Debian/Ubuntu

Denne opplæringen forklarer hvordan du setter opp en DNS-server ved å bruke Bind9 på Debian eller Ubuntu. Bytt ut ditt-domenenavn.com gjennom hele artikkelen. På th

Konfigurering av statisk nettverk og IPv6 på CentOS 7

Konfigurering av statisk nettverk og IPv6 på CentOS 7

VULTR har nylig gjort endringer på sin side, og alt skal nå fungere bra ut av boksen med NetworkManager aktivert. Skulle du ønske å deaktivere

Endring av Icinga2 for å bruke hoved-/klientmodell på CentOS 6 eller CentOS 7

Endring av Icinga2 for å bruke hoved-/klientmodell på CentOS 6 eller CentOS 7

Icinga2 er et kraftig overvåkingssystem, og når det brukes i en master-klient-modell, kan det erstatte behovet for NRPE-baserte overvåkingskontroller. Mester-klienten

Sett opp Red5 Media Server på Ubuntu 16.04

Sett opp Red5 Media Server på Ubuntu 16.04

Bruker du et annet system? Red5 er en åpen kildekode medieserver implementert i Java som lar deg kjøre Flash flerbrukerapplikasjoner som live streamin

Kompiler og installer Nginx med PageSpeed-modulen på Debian 8

Kompiler og installer Nginx med PageSpeed-modulen på Debian 8

I denne artikkelen vil vi se hvordan du kompilerer og installerer Nginx mainline fra de offisielle kildene til Nginx med PageSpeed-modulen, som lar deg t

Hvordan installere Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Hvordan installere Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Bruker du et annet system? Apache Cassandra er et gratis og åpen kildekode NoSQL-databasebehandlingssystem som er designet for å gi skalerbarhet, høy

Slik installerer du Apache Cassandra 3.11.x på CentOS 7

Slik installerer du Apache Cassandra 3.11.x på CentOS 7

Bruker du et annet system? Apache Cassandra er et gratis og åpen kildekode NoSQL-databasebehandlingssystem som er designet for å gi skalerbarhet, høy

Hvordan installere Vanilla Forum på Ubuntu 16.04

Hvordan installere Vanilla Forum på Ubuntu 16.04

Bruker du et annet system? Vanilla forum er en åpen kildekode-forumapplikasjon skrevet i PHP. Det er en fullt tilpassbar, enkel å bruke og støtter ekstern

Hvordan installere Kanboard på Ubuntu 18.04 LTS

Hvordan installere Kanboard på Ubuntu 18.04 LTS

Bruker du et annet system? Introduksjon Kanboard er et gratis og åpen kildekodeprogram for prosjektledelse som er designet for å forenkle og visualisere

Hvordan installere Kanboard på Debian 9

Hvordan installere Kanboard på Debian 9

Bruker du et annet system? Introduksjon Kanboard er et gratis og åpen kildekodeprogram for prosjektledelse som er designet for å forenkle og visualisere

Hvordan installere Gitea på Debian 9

Hvordan installere Gitea på Debian 9

Bruker du et annet system? Gitea er et alternativt åpen kildekode, selvdrevet versjonskontrollsystem drevet av Git. Gitea er skrevet på Golang og er

Hvordan installere Gitea på Ubuntu 18.04

Hvordan installere Gitea på Ubuntu 18.04

Bruker du et annet system? Gitea er et alternativt, selvdrevet versjonskontrollsystem med åpen kildekode drevet av git. Gitea er skrevet på Golang og er

Hvordan installere Thelia 2.3 på Debian 9

Hvordan installere Thelia 2.3 på Debian 9

Bruker du et annet system? Thelia er et åpen kildekodeverktøy for å lage e-business-nettsteder og administrere nettinnhold skrevet i PHP. Thelia kildekode i

Hvordan installere MODX Revolution på en Ubuntu 16.04 LAMP VPS

Hvordan installere MODX Revolution på en Ubuntu 16.04 LAMP VPS

Bruker du et annet system? MODX Revolution er et raskt, fleksibelt, skalerbart, gratis og åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer