Installation und Verwendung des Linux-Betriebs- und Wartungstools Supervisor (Prozessmanagement-Tool)

Installation und Verwendung des Linux-Betriebs- und Wartungstools Supervisor (Prozessmanagement-Tool)

1. Einleitung

Supervisor ist ein in Python entwickeltes allgemeines Prozessmanagementprogramm. Es kann einen gewöhnlichen Befehlszeilenprozess in einen Hintergrund-Daemon umwandeln, den Prozessstatus überwachen und bei einer abnormalen Beendigung automatisch neu starten. Derzeit kann Supervisor auf den meisten Unix-Systemen ausgeführt werden, die Ausführung auf Windows-Systemen wird jedoch nicht unterstützt. Supervisor erfordert Python 2.4 oder höher, unterstützt jedoch keine Python 3-Versionen.

2. Integriertes Webverwaltungsprogramm

Supervisor besteht aus vier Komponenten:

1. Aufsichtsperson
Führen Sie den Supervisor-Hintergrunddienst aus. Dieser dient zum Starten und Verwalten der Unterprozesse, die von Supervisor verwaltet werden müssen, zum Antworten auf Anforderungen von Clients, zum Neustarten unerwartet beendeter Unterprozesse, zum Schreiben der Standardausgabe und Standardfehlerausgabe des Unterprozesses in Protokolle, zum Antworten auf Ereignisse usw. Es ist der Kernteil von Supervisor.

2. Supervisorctl
Es entspricht dem Client von Supervisord und ist ein Befehlszeilentool, über das Benutzer Anweisungen an den Supervisord-Dienst senden können, z. B. den Status von Unterprozessen überprüfen und Unterprozesse starten oder herunterfahren. Es kann eine Verbindung zu verschiedenen Supervisord-Diensten herstellen, einschließlich Diensten auf Remotecomputern.

3. Webserver Dies ist der Webclient von supervisord. Benutzer können auf der Webseite ähnliche Funktionen wie supervisorctl ausführen.

4. XML-RPC-Schnittstelle Dies ist eine Schnittstelle, die für die Integration von Drittanbietern reserviert ist. Ihr Dienst kann diese XML-RPC-Schnittstellen remote aufrufen, um die von Supervisord verwalteten Unterprozesse zu steuern. Der oben genannte Webserver wird tatsächlich über diese XML-RPC-Schnittstelle implementiert.

3. Installation

Nachfolgend sind drei Methoden aufgeführt. Sie können eine beliebige auswählen.

1. Installation

echo "supervisor-3.3.4-Installation (ja, bitte 1 eingeben; nein, andere eingeben):" 
SV lesen
wenn [ "$SV" = "1" ]; dann 
	cd $Basispfad
	entpacken Sie $basepath/supervisor-3.3.4.zip 
	CD-Supervisor-3.3.4
	python setup.py installieren
	echo "Supervisor-3.3.4-Installation abgeschlossen"
anders
	echo "Sie haben sich entschieden, Supervisor-3.3.4 nicht zu installieren"
fi

2. Installation des Quellcodes

 wget https://pypi.python.org/packages/7b/17/88adf8cb25f80e2bc0d18e094fcd7ab300632ea00b601cbbbb84c2419eae/supervisor-3.3.4.tar.gz
 tar -zxvf supervisor-3.3.4.tar.gz
 CD-Supervisor-3.3.4
 python setup.py install #Die lokale Python-Version ist python2.7

3. Yum-Installation

yum Installations-Supervisor

4. Konfigurationsdatei

Wenn nach der Installation keine Konfigurationsdatei /etc/supervisord.conf vorhanden ist, generieren Sie sie mit dem Befehl:

echo_supervisord_conf > /etc/supervisord.conf

5. Inbetriebnahme

supervisord -c /etc/supervisord/supervisord.conf 
	echo "supervisor-3.3.4 erfolgreich gestartet"

6. Start einrichten

systemctl aktiviere supervisord.service

7. Überprüfen Sie, ob Supervisord läuft

ps aux | grep supervisord

8. Supervisorctl-Verwaltungsbefehl

supervisorctl status #status supervisorctl stop nginx #nginx herunterfahren
 supervisorctl start nginx #Starten Sie nginx
 supervisorctl restart nginx #Nginx neu starten
 supervisorctl reload #Alles neu starten supervisorctl update #Konfiguration aktualisieren

Dieser Befehl kann einzeln oder in Kombination verwendet werden.

9. Beschreibung der Konfigurationsdatei

[unix_http_server]
file=/tmp/supervisor.sock ;UNIX-Socket-Datei, die supervisorctl verwenden wird; chmod=0700 ;Socket-Dateimodus, Standard ist 0700
;chown=nobody:nogroup ;Besitzer der Socket-Datei, Format: uid:gid

;[inet_http_server] ;HTTP-Server, der eine Web-Verwaltungsschnittstelle bereitstellt;port=127.0.0.1:9001 ;IP und Port des Web-Verwaltungs-Backends. Wenn es für das öffentliche Netzwerk geöffnet ist, müssen Sie auf die Sicherheit achten;username=user ;Benutzername für die Anmeldung beim Verwaltungs-Backend;password=123 ;Passwort für die Anmeldung beim Verwaltungs-Backend [supervisord]
logfile=/tmp/supervisord.log; Protokolldatei, der Standard ist $CWD/supervisord.log
logfile_maxbytes=50MB; Größe der Protokolldatei, bei Überschreitung wird sie rotiert, Standard ist 50MB, wenn auf 0 gesetzt, bedeutet das keine Größenbeschränkunglogfile_backups=10; die Standardanzahl der Protokolldateisicherungen ist 10, auf 0 gesetzt bedeutet keine Sicherungloglevel=info; Protokollebene, Standard ist Info, andere: debug,war,trace
pidfile=/tmp/supervisord.pid ;pid-Datei nodaemon=false ;ob im Vordergrund gestartet werden soll, der Standardwert ist false, d. h. im Daemon-Modus starten minfds=1024 ;der Mindestwert des Dateideskriptors, der geöffnet werden kann, der Standardwert ist 1024
minprocs=200; Die Mindestanzahl der Prozesse, die geöffnet werden können, der Standardwert ist 200

[Supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; Verbindung zu supervisord über UNIX-Socket herstellen, der Pfad stimmt mit der Datei im unix_http_server-Teil überein; serverurl=http://127.0.0.1:9001 ; Verbindung zu supervisord über HTTP herstellen

; [program:xx] ist der Konfigurationsparameter des verwalteten Prozesses, xx ist der Name des Prozesses [program:xx]
command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run; Programmstartbefehl autostart=true; Automatisch starten, wenn supervisord startet startsecs=10; Wenn nach 10 Sekunden Start kein abnormaler Abschluss erfolgt, bedeutet dies, dass der Prozess normal gestartet wurde. Der Standardwert ist 1 Sekunde autorestart=true; Automatischer Neustart nach Beendigung des Programms. Optionale Werte: [unexpected, true, false], der Standardwert ist unerwartet, was bedeutet, dass der Prozess erst neu gestartet wird, wenn er versehentlich beendet wurde startretries=3; Die Anzahl der automatischen Wiederholungsversuche bei fehlgeschlagenem Start, der Standardwert ist 3
user=tomcat; Welcher Benutzer wird zum Starten des Prozesses verwendet, der Standard ist root
Priorität = 999; Prozessstartpriorität, Standard ist 999, Prozesse mit kleineren Werten werden zuerst gestartet. Umleitung_stderr = true; Leiten Sie stderr nach stdout um, Standard ist false
stdout_logfile_maxbytes=20 MB; Größe der stdout-Protokolldatei, Standard 50 MB
stdout_logfile_backups = 20; Anzahl der Backups der stdout-Logdateien, Standard ist 10
; stdout-Protokolldatei. Bitte beachten Sie, dass der normale Start nicht möglich ist, wenn das angegebene Verzeichnis nicht existiert. Sie müssen das Verzeichnis daher manuell erstellen (Supervisord erstellt die Protokolldatei automatisch).
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false; Standard ist „false“, wenn der Prozess beendet wird, ob ein Stoppsignal an die Prozessgruppe gesendet werden soll, einschließlich der untergeordneten Prozesse killasgroup=false; Standard ist „false“, sendet ein Kill-Signal an die Prozessgruppe, einschließlich der untergeordneten Prozesse; enthält andere Konfigurationsdateien [include]
files =/etc/supervisord.d/*.ini ; Sie können eine oder mehrere Konfigurationsdateien mit der Endung .ini angeben

10. Beispiel einer INI-Konfigurationsdatei

[Programm:MysqlToRedis]
Verzeichnis = /data/py/SmartServerModel/SmartServerModel/ModelManagerServer/
Befehl = python3 -u mysql2redis_robot_config.py cs
autostart = true
autorestart=true
Startsekunden = 5
Benutzer = root
redirect_stderr = wahr
stdout_logfile = /data/logs/supervisord/mysqltoredis.log

[Programm:SmartBinLog]
Befehl = /data/go/src/SmartBinLog/SmartBinLog
autostart = true
autorestart=true
Startsekunden = 5
Benutzer = root
redirect_stderr = wahr
stdout_logfile = /data/logs/supervisord/smartbinlog.log

[Gruppe:nlp]
programs=MysqlToRedis,SmartBinLog ;server,progname2 bezieht sich jeweils auf 'x' in [program:x]-Definitionen
Priorität=999; die relative Startpriorität (Standard 999)

11. Öffnen Sie das Webseitenverwaltungsprogramm

Entfernen Sie alle Kommentarzeilen in der Konfigurationsdatei conf und ändern Sie dann Port, Benutzername und Passwort.

[inet_http_server] ;HTTP-Server, der die Web-Verwaltungsschnittstelle bereitstelltport=127.0.0.1:9001 ;IP und Port des Web-Verwaltungs-Backends. Wenn es für das öffentliche Netzwerk geöffnet ist, achten Sie bitte auf die Sicherheitusername=user ;Benutzername für die Anmeldung am Verwaltungs-Backendpassword=123 ;Passwort für die Anmeldung am Verwaltungs-Backend

12. Lösen Sie das Problem „unix:///tmp/supervisor.sock keine solche Datei“

Manchmal stoßen wir auf dieses Problem:


Die Lösung ist einfach:

①. Stoppen Sie den vorhandenen Supervisorctl-Prozess


②. Ändern Sie die Konfigurationsdatei „/etc/supervisord.conf“ und ändern Sie tmp in etc. Die Dateien im Verzeichnis /tmp werden vom Betriebssystem regelmäßig wiederverwendet. Sie müssen daher Folgendes ändern:

③. Starten Sie supervisord mit der Konfigurationsdatei, die Sie gerade geändert haben, und alles wird wieder normal sein.

Das könnte Sie auch interessieren:
  • Tutorial zur Installation und Konfiguration des Linux-Prozessmanagement-Tools Supervisor
  • Installation, Konfiguration und Verwendung des Process Daemon Supervisors unter Linux
  • Detaillierte Erläuterung der Installation und Konfiguration von Supervisor (Linux/Unix-Prozessmanagementtool)
  • PHP-Programmierer spielen Linux-Serien mit Supervisor zur Implementierung von Daemon-Prozessen
  • Erfahren Sie in 3 Minuten, wie Sie den Supervisor Watchdog verwenden

<<:  Implementierung eines einfachen Timers basierend auf der Vue-Methode

>>:  Detaillierte Erläuterung der Implementierungsschritte von MySQL Dual-Machine Hot Standby und Load Balancing

Artikel empfehlen

jQuery+Ajax zum Erreichen eines einfachen Paging-Effekts

In diesem Artikel wird der spezifische Code von j...

Webdesign muss auch zunächst eine umfassende Bildpositionierung der Website haben

⑴ Der Inhalt bestimmt die Form. Reichern Sie zuers...

Vue Uniapp realisiert den Segmentierungseffekt

In diesem Artikel wird der spezifische Code von V...

React Diff-Algorithmus-Quellcodeanalyse

Inhaltsverzeichnis Einzelner Knoten Diff Einzelel...

Anwendungshandbuch für chinesische WEB-Schriftarten

Die Verwendung von Schriftarten im Web ist sowohl ...

So ermitteln Sie die Ausführungszeit eines Befehls oder Prozesses in Linux

Auf Unix-ähnlichen Systemen wissen Sie möglicherw...

Tiefgreifendes Verständnis von UID und GID in Docker-Containern

Standardmäßig werden Prozesse im Container mit Ro...

Beispielcode zur Implementierung eines Musikplayers mit nativem JS

Dieser Artikel stellt hauptsächlich den Beispielc...

So berechnen Sie mit Linux den von zeitgesteuerten Dateien belegten Speicherplatz

Öffnen Sie den Editor für geplante Aufgaben. Cent...

Nginx verwendet Lua+Redis, um IP dynamisch zu blockieren

1. Hintergrund Bei unserer täglichen Website-Wart...

Analyse des Prinzips der Zentrierung von Elementen mit CSS

Es ist eine sehr häufige Anforderung, die horizon...

Mehrere Situationen, in denen Div durch Iframe abgedeckt ist, und ihre Lösungen

Ähnliche Strukturen: Code kopieren Der Code laute...