Telepítés és alapkonfiguráció
A felügyelő szerver indítása
Programok hozzáadása
Programok kezelése
A webszerver kliens
Következtetés
A Supervisor egy kliens/szerver rendszer, amely számos UNIX-folyamat, pontosabban egy projekthez vagy ügyfélhez kapcsolódó folyamatok vezérlésére szolgál. Például használhatja a supervisort a webalkalmazás tetszőleges számú dolgozói sorának létrehozásához és figyeléséhez.
Ennek a rendszernek az összetevői a következők:
- supervisor: A rendszer szerver része.
- supervisorctl: A kiszolgálóval való interakcióhoz használt parancssori felület.
- Webszerver: Egyszerű webszerver és webes felhasználói felület alapvető funkciókkal a supervisorctl- hez képest .
- XML-RPC interfész: Ugyanaz a HTTP-kiszolgáló, amelyet a webkliens is használ, egy XML-RPC interfészt szolgál ki, amely a felügyeleti programok vezérlésére használható.
Ebben az oktatóanyagban telepítjük a supervisor legfrissebb verzióját, bemutatjuk, hogyan hozhatunk létre és kezelhetünk programokat a segítségével supervisorctl, és beállítunk egy webes felületet programjaink kezelésére.
Telepítés és alapkonfiguráció
A supervisort easy_installa python beállítási eszközeinek egyik funkcióján keresztül fogjuk telepíteni .
Először frissítse a helyi csomaglistát, majd telepítse a pythont setuptools.
sudo apt-get update && sudo apt-get install python-setuptools
Most telepíthetjük a supervisort.
sudo easy_install supervisor
A telepítés befejezése után létre kell hoznunk a konfigurációs fájlunkat. Hozzon létre egy mappát a supervisorbelsejében /etc.
sudo mkdir /etc/supervisor
És akkor hajtsa végre a következőt.
echo_supervisord_conf > /etc/supervisor/supervisord.conf
Ha nincs bejelentkezve a rootfelhasználóval, Permission deniedhibaüzenetet kaphat (még akkor is, ha sudo). Ez az átirányításnak köszönhető. Ennek kiküszöböléséhez jelentkezzen be root felhasználóként.
sudo su
Ezután újra futtathatja a parancsot.
echo_supervisord_conf > /etc/supervisor/supervisord.conf
Most már elhagyhatja a rootfelhasználót a exitparanccsal. A echo_supervisord_confparancsot a telepítésvezetőnk adta.
Alapkonfiguráció
Nyissa meg a /etc/supervisor/supervisord.conffájlt, és ellenőrizze a tartalmát. Megjegyzendő, hogy ez a konfigurációs fájl a INIszintaxist követi , és szakaszokra van felosztva (ezeket zárójelek jelölik, mint a [section-name]).
A felügyelő által kezelt programok hozzáadásához csak létre kell hoznunk a megfelelő [program]szakaszokat. Azonban, hogy elkerüljük, hogy a fő konfigurációs fájllal minden alkalommal vacakoljunk, amikor egy programot kell hozzáadnunk (vagy módosítanunk), a [include]részt fogjuk használni . Keresse meg ezt a részt, törölje a megjegyzéseket, majd szerkessze úgy, hogy a következőképpen nézzen ki.
[include]
files=conf.d/*.conf
Most minden hozzáadni kívánt programhoz létrehozunk egy .inifájlt a /etc/supervisor/conf.d/könyvtárban. Hozzuk létre ezt a mappát.
sudo mkdir /etc/supervisor/conf.d
A felügyelő szerver indítása
Mint korábban említettük, a supervisor egy szerverből és a hozzá csatlakozó ügyfelekből áll. A programok kezeléséhez és vezérléséhez el kell indítanunk a szervert. Ehhez regisztráljuk a felügyelő szervert a systemd-ban, hogy a szerver elindulhasson a rendszer indításakor.
Ehhez hozzon létre egy nevű fájlt supervisord.servicea /etc/systemd/systemkönyvtárban.
sudo touch /etc/systemd/system/supervisord.service
Adja hozzá a következő tartalmat a fájlhoz.
[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
Aktiválja a felügyelő szolgáltatást.
sudo systemctl start supervisord.service
Mindaddig, amíg a szolgáltatásfájl a /etc/systemd/systemkönyvtárban található, a rendszer indításakor automatikusan elindul.
Ellenőrizheti a szolgáltatás állapotát.
systemctl status supervisord.service
Ezenkívül megtekintheti a naplókat.
sudo journalctl -u supervisord.service
Programok hozzáadása
A supervisor által vezérelt programokat [program]a konfiguráció különböző szekciói adják meg . Minden kezelni kívánt programhoz külön konfigurációs fájlt készítünk, amely tájékoztatja a parancs végrehajtási útvonalát, az esetleges környezeti változókat, leállás esetén a végrehajtás módját.
Először is hozzunk létre egy egyszerű szkriptet, amely naplózza az időbélyeget. Hozzon létre egy fájlt hello_supervisor.sh(bárhol, ahol akarja, hivatkozni fogunk a szkript teljes elérési útjára).
touch hello_supervisor.sh
Most tegye bele a következő tartalmat
#!/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
Most tegye végrehajthatóvá
chmod +x hello_supervisor.sh
Gyakorlatilag ez a szkript eléggé haszontalan. Használhatjuk azonban a felügyelői hatalom bemutatására. Hozza létre a megfelelő konfigurációs fájlt a következő futtatásával.
sudo touch /etc/supervisor/conf.d/hello_supervisor.conf
Most tegye a következő tartalmat ebbe a fájlba.
[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
Megjegyzés: Ügyeljen arra, hogy cserélje USERki a felhasználónevét.
Ezt a konfigurációt lépésről lépésre áttekintjük.
[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
Először a konfiguráció a hello_supervisor nevű program meghatározásával kezdődik . Ezenkívül tájékoztatja a futtatandó végrehajtható fájl teljes elérési útját.
autostart=true
Ez a sor azt írja ki, hogy ennek a programnak automatikusan el kell indulnia a felügyelő indításakor.
autorestart=true
Ha a program bármilyen okból kilép, ez a sor tájékoztatja a felügyelőt, hogy automatikusan indítsa újra a folyamatot.
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log
Ezek a sorok határozzák meg a stderrés a naplófájl helyét stdout.
Programok kezelése
Most, hogy telepítettük és konfiguráltuk a supervisort, képesek vagyunk kezelni folyamatainkat.
Új program hozzáadása után futtassuk le a következő két parancsot, hogy tájékoztassuk a szervert a konfigurációs fájlok újraolvasásáról és az esetleges változtatások alkalmazásáról.
sudo supervisorctl reread
sudo supervisorctl update
Most hajtsa végre a supervisorctlklienst.
sudo supervisorctl
A regisztrált folyamatok listája fogadja Önt. Látni fog egy folyamatot hello_supervisoregy RUNNINGállapottal.
hello_supervisor RUNNING pid 6853, uptime 0:22:30
supervisor>
Írja be helpaz elérhető parancsok listájához.
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
Dióhéjban: start, stopés restartprogramozhatunk úgy, hogy a program nevét argumentumként adjuk át a megfelelő parancsnak.
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>
A tailparanccsal a program kimenetét is megnézhetjük .
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
A stderrkimenethez is használhatja 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!
A statusparancs meghívásával megtekintheti az összes regisztrált program állapotát.
Ha végzett, kiléphet.
supervisor> quit
A webszerver kliens
A felügyelő webszerverhez való hozzáférés engedélyezéséhez nyissa meg a felügyeleti konfigurációs fájlt, és keresse meg a [inet_http_server]részt.
nano /etc/supervisor/supervisord.conf
Most frissítse a szakasz konfigurációját a következőkkel.
[inet_http_server]
port=*:9001
username=your_username
password=your_password
Cserélje ki your_usernameés adja your_passwordmeg a kívánt hitelesítő adatokat, mentse el a módosításokat és indítsa újra a felügyelő szolgáltatást.
sudo systemctl restart supervisord.service
Ne felejtse el engedélyezni a TCPhozzáférést 9001a tűzfal portjához , majd a hozzáférést http://{server-ip}:9001a böngészőből. Kérésre adja meg az Ön usernameés password. Most már az internetről irányíthatja folyamatait.
Következtetés
Telepítettük a supervisord legfrissebb verzióját, megtanultuk, hogyan kell konfigurálni a rendszer automatikus indításához a systemd segítségével, és áttekintettük a supervisorctl. A fejlettebb konfigurációs és használati esetekért tekintse meg a hivatalos felügyeleti dokumentációt .