Installera och konfigurera Supervisor på Ubuntu 16.04

Supervisor är ett klient/serversystem som används för att styra ett antal UNIX-processer, mer specifikt processer relaterade till ett projekt eller en kund. Till exempel kan du använda supervisor för att skapa och övervaka ett godtyckligt antal arbetsköer i din webbapplikation.

Komponenterna i detta system är:

  • supervisord: Serverdelen av systemet.
  • supervisorctl: Kommandoradsgränssnittet som används för att interagera med servern.
  • Webbserver: En enkel webbserver och ett webbanvändargränssnitt med grundläggande funktionalitet jämfört med supervisorctl .
  • XML-RPC-gränssnitt: Samma HTTP-server som används av webbklienten, tjänar ett XML-RPC-gränssnitt som kan användas för att styra övervakarprogram.

I den här handledningen kommer vi att installera den senaste versionen av supervisor, demonstrera hur man skapar och hanterar program genom supervisorctloch konfigurerar ett webbgränssnitt för att hantera våra program.

Installation och grundkonfiguration

Vi kommer att installera supervisor genom easy_install, en funktion i pythons installationsverktyg.

Uppdatera först din lokala paketlista och installera sedan python setuptools.

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

Nu kan vi installera supervisor.

sudo easy_install supervisor

När installationen är klar måste vi skapa vår konfigurationsfil. Skapa en mapp med namnet supervisorinuti /etc.

sudo mkdir /etc/supervisor

Och utför sedan följande.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

Om du inte är inloggad med rootanvändaren kan du få ett Permission deniedfelmeddelande (även med sudo). Detta beror på omdirigeringen. För att övervinna detta, logga in som root.

sudo su

Sedan kan du köra kommandot igen.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

Du kan nu lämna rootanvändaren med exitkommandot. Den echo_supervisord_confkommandot från vår handledare installation.

Grundläggande konfiguration

Öppna /etc/supervisor/supervisord.conffilen och kontrollera dess innehåll. Du kommer att notera att den här konfigurationsfilen följer INIsyntaxen, och den är uppdelad av sektioner (representeras av parentes som i [section-name]).

För att lägga till program som ska hanteras av handledaren behöver vi bara skapa lämpliga [program]sektioner. Men för att undvika att krångla med huvudkonfigurationsfilen varje gång vi behöver lägga till (eller ändra) ett program kommer vi att använda [include]avsnittet. Hitta det här avsnittet, avkommentera det och redigera det så att det ser ut så här.

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

Nu för varje program vi vill lägga till kommer vi att skapa en .inifil i /etc/supervisor/conf.d/katalogen. Låt oss skapa den här mappen.

sudo mkdir /etc/supervisor/conf.d

Startar supervisorservern

Som nämnts tidigare består supervisor av en server och klienter som ansluter till den. För att kunna hantera och styra program behöver vi starta servern. För att göra det kommer vi att registrera supervisorservern i systemd, så att servern kan startas vid systemstart.

För att göra det, skapa en fil som heter supervisord.servicei /etc/systemd/systemkatalogen.

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

Lägg till följande innehåll 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

Aktivera tillsynstjänsten.

sudo systemctl start supervisord.service

Så länge servicefilen finns i /etc/systemd/systemkatalogen kommer den att startas automatiskt vid systemstart.

Du kan kontrollera tjänstens status.

systemctl status supervisord.service

Du kan också kolla in loggarna.

sudo journalctl -u supervisord.service

Lägger till program

De program som styrs av handledaren ges av olika [program]sektioner i konfigurationen. För varje program vi vill hantera kommer vi att skapa en fristående konfigurationsfil som informerar om kommandots körbara sökväg, eventuella miljövariabler, hur man utför i händelse av avstängning.

Låt oss först skapa ett enkelt skript som loggar en tidsstämpel. Skapa en fil som heter hello_supervisor.sh(var du än vill, vi kommer att referera till hela sökvägen för detta skript).

touch hello_supervisor.sh

Lägg nu in följande innehåll 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

Gör det nu körbart

chmod +x hello_supervisor.sh

I praktiska termer är detta skript ganska värdelöst. Däremot kan vi använda det för att visa handledarens makt. Skapa motsvarande konfigurationsfil genom att köra följande.

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

Lägg nu följande innehåll i den här 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

Obs: Se till att ersätta USERmed ditt användarnamn.

Vi kommer att granska denna konfiguration steg för steg.

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

Först börjar konfigurationen med att definiera ett program med namnet hello_supervisor . Den informerar också om hela sökvägen för den körbara filen som ska köras.

autostart=true

Denna rad anger att detta program ska startas automatiskt när supervisor startas.

autorestart=true

Om programmet avslutas, av någon anledning, informerar den här raden handledaren om att automatiskt starta om processen.

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

Dessa linjer definierar loggfil plats för stderroch stdoutrespektive.

Hantera program

Nu när vi har installerat och konfigurerat supervisor kan vi hantera våra processer.

Efter att ha lagt till ett nytt program bör vi köra följande två kommandon, för att informera servern att läsa om konfigurationsfilerna och att tillämpa eventuella ändringar.

sudo supervisorctl reread
sudo supervisorctl update

Kör nu supervisorctlklienten.

sudo supervisorctl

Du kommer att hälsas med en lista över de registrerade processerna. Du kommer att se en process som anropas hello_supervisormed en RUNNINGstatus.

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

Skriv helpför en lista över tillgängliga kommandon.

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 ett nötskal kan vi start, stopoch restartprogrammera genom att skicka programnamnet som ett argument till respektive kommando.

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 också ta en titt på programmets utdata med tailkommandot.

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

För stderrutgången kan du också använda 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!

Genom att anropa statuskommandot kan du se status för alla registrerade program.

När du är klar kan du sluta.

supervisor> quit

Webserverklienten

För att tillåta åtkomst till supervisor-webservern, öppna supervisor-konfigurationsfilen och leta upp [inet_http_server]avsnittet.

nano /etc/supervisor/supervisord.conf

Uppdatera nu detta avsnitts konfiguration med följande.

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

Byt ut your_usernameoch your_passwordmed dina önskade referenser, spara dina ändringar och omstarta supervisord-tjänsten.

sudo systemctl restart supervisord.service

Kom ihåg att tillåta TCPåtkomst till porten 9001på din brandvägg och sedan åtkomst http://{server-ip}:9001från din webbläsare. Ange ditt usernameoch password. Du kan nu styra dina processer från webben.

Slutsats

Vi har installerat den senaste versionen av supervisord, lärt oss hur man konfigurerar den för automatisk start av systemet med systemd och även granskat en grundläggande användning av supervisorctl. För mer avancerad konfiguration och användningsfall kan du hänvisa till den officiella handledaredokumentationen .


Installera Plesk på CentOS 7

Installera Plesk på CentOS 7

Använder du ett annat system? Plesk är en egen kontrollpanel för webbhotell som tillåter användare att administrera sina personliga och/eller klienters webbplatser, databaser

Installera Cacti på Debian Jessie

Installera Cacti på Debian Jessie

Introduktion Cacti är ett övervaknings- och grafverktyg med öppen källkod som är helt baserat på RRD-data. Genom Cacti kan du övervaka nästan vilken typ av enhet som helst

Installera Lets Encrypt SSL på One-Click WordPress-appen

Installera Lets Encrypt SSL på One-Click WordPress-appen

Introduktion Lets Encrypt är en certifikatmyndighetstjänst som erbjuder gratis TLS/SSL-certifikat. Installationsprocessen förenklas av Certbot,

Hur man ställer in en Tekkit Classic-server på Ubuntu 16.10

Hur man ställer in en Tekkit Classic-server på Ubuntu 16.10

Använder du ett annat system? Vad är Tekkit Classic? Tekkit Classic är ett modpack för spelet som alla känner och älskar; Minecraft. Den innehåller några av ver

Konfigurera iRedMail på Debian Wheezy

Konfigurera iRedMail på Debian Wheezy

Använder du ett annat system? Den här handledningen visar dig hur du installerar groupware iRedMail på en ny installation av Debian Wheezy. Du bör använda en serve

Hur man installerar och konfigurerar PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

Hur man installerar och konfigurerar PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

PHP och relaterade paket är de mest använda komponenterna när du distribuerar en webbserver. I den här artikeln kommer vi att lära oss hur du ställer in PHP 7.0 eller PHP 7.1 o

Hur man installerar Squid Proxy på CentOS

Hur man installerar Squid Proxy på CentOS

Squid är ett populärt, gratis Linux-program som låter dig skapa en webbproxy för vidarebefordran. I den här guiden ser du hur du installerar Squid på CentOS för att förvandla dig

Hur man installerar Lighttpd (LLMP Stack) på CentOS 6

Hur man installerar Lighttpd (LLMP Stack) på CentOS 6

Inledning Lighttpd är en apachegaffel som syftar till att vara mycket mindre resurskrävande. Den är lätt, därav namnet, och är ganska enkel att använda. Installera

Tre gratis serverkontrollpaneler (snabbinstallation)

Tre gratis serverkontrollpaneler (snabbinstallation)

1. Virtualmin/Webmin Virtualmin är en kraftfull och flexibel kontrollpanel för webbhotell för Linux- och UNIX-system baserad på den välkända Open Source-webbasen

Konfigurera en Yii-applikation på Ubuntu 14.04

Konfigurera en Yii-applikation på Ubuntu 14.04

Yii är ett PHP-ramverk som låter dig utveckla applikationer snabbare och enklare. Att installera Yii på Ubuntu är enkelt, eftersom du kommer att lära dig exakt

Använder skärmen på Ubuntu 14.04

Använder skärmen på Ubuntu 14.04

Screen är ett program som tillåter flera terminalsessioner inom ett fönster. Detta låter dig simulera flera terminalfönster där det ma

Konfigurera din egen DNS-server på Debian/Ubuntu

Konfigurera din egen DNS-server på Debian/Ubuntu

Denna handledning förklarar hur man ställer in en DNS-server med Bind9 på Debian eller Ubuntu. Genomgående i artikeln, byt ut ditt-domännamn.com i enlighet med detta. Vid th

Använda Logrotate för att hantera loggfiler

Använda Logrotate för att hantera loggfiler

Inledning Logrotate är ett Linux-verktyg som förenklar administrationen av loggfiler. Den körs vanligtvis en gång om dagen via ett cron-jobb och hanterar loggbasen

Konfigurera statiskt nätverk och IPv6 på CentOS 7

Konfigurera statiskt nätverk och IPv6 på CentOS 7

VULTR har nyligen gjort ändringar på deras sida, och allt borde nu fungera bra direkt när NetworkManager är aktiverat. Om du vill inaktivera

Ändra Icinga2 för att använda Master/Client Model på CentOS 6 eller CentOS 7

Ändra Icinga2 för att använda Master/Client Model på CentOS 6 eller CentOS 7

Icinga2 är ett kraftfullt övervakningssystem, och när det används i en master-klient-modell kan det ersätta behovet av NRPE-baserade övervakningskontroller. Master-klienten

Konfigurera Red5 Media Server på Ubuntu 16.04

Konfigurera Red5 Media Server på Ubuntu 16.04

Använder du ett annat system? Red5 är en mediaserver med öppen källkod implementerad i Java som låter dig köra Flash fleranvändarapplikationer som livestreamin

Kompilera och installera Nginx med PageSpeed-modulen på Debian 8

Kompilera och installera Nginx med PageSpeed-modulen på Debian 8

I den här artikeln kommer vi att se hur man kompilerar och installerar Nginx mainline från de officiella källorna för Nginx med PageSpeed-modulen, som låter dig t

Hur man installerar Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Hur man installerar Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög

Hur man installerar Apache Cassandra 3.11.x på CentOS 7

Hur man installerar Apache Cassandra 3.11.x på CentOS 7

Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög

Hur man installerar Vanilla Forum på Ubuntu 16.04

Hur man installerar Vanilla Forum på Ubuntu 16.04

Använder du ett annat system? Vanilla forum är en open source forumapplikation skriven i PHP. Det är en helt anpassningsbar, enkel att använda och stöder externa

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer