Bevezetés
A számítástechnikában a dolgok nem mindig a tervek szerint alakulnak. Gyakran a váratlan rendszerösszeomlások arra késztetik a rendszergazdákat, hogy újraindítsák a rendszert és az egyes szolgáltatásokat. Egy rendszerösszeomlás vagy újraindítás után fárasztó lehet kitalálni és újraindítani minden olyan szolgáltatást, amelyre az alkalmazásnak szüksége van a futáshoz. Ebben a kétrészes útmutató első részében gyakorlati példákon keresztül bemutatjuk, hogyan konfigurálhatja a szolgáltatásokat úgy, hogy rendszerösszeomlás vagy szerverújraindítás után automatikusan elinduljanak. A második rész elméleti információkat fog tartalmazni arról, amit az első részben elértünk.
A gyakorlati példákhoz a MySQL adatbázis-szolgáltatást fogjuk használni. Ugyanezek az elvek azonban vonatkoznak a teljes szervert alkotó többi folyamatra is, mint például az Nginx, Apache, Redis, vagy más alkalmazásokra. Megtekintheti az útmutatóinkat arról, hogyan kell telepíteni a MySQL-t, Nginx, és Apache.
A Linux disztribúciókban három fő inicializációs (init) rendszer létezik, a futtatott disztribúciótól függően. Egyes disztribúciók két vagy több init rendszerrel is rendelkezhetnek, az alábbiak szerint:
- System V – egy régebbi init rendszer, amely a régebbi disztribúciókban található meg, mint például:
- Ubuntu 9.04 és korábbiak
- CentOS 5 és korábbiak
- Debian 6 és korábbiak
- Upstart – korábbi disztribúciókban használták, mint például:
- CentOS 6
- Ubuntu 9.10-től Ubuntu 14.10-ig és Ubuntu 14.04
- Systemd – a legújabb disztribúciókban használatos, mint például:
- CentOS 7
- Debian 7 és 8.
- Ubuntu 15.04 és újabbak
Háttér
Az operációs rendszereknél, és különösen a Linux és Unix rendszereknél megszokott, hogy folyamatok és szolgáltatások futnak a háttérben. Az ilyen szolgáltatások érkezhettek az operációs rendszer szoftverével együtt. Némelyikük a telepített felhasználói alkalmazásokkal együtt is érkezhetett.
Az operációs rendszer szolgáltatásai közé tartoznak:
- sshd – Ez a távoli kapcsolatokat lehetővé tevő démon.
- cupsd – Ez a nyomtatást vezérlő démon.
A telepített alkalmazásszolgáltatások közé tartoznak:
- httpd/apache2 – Az Apache2 webszerverhez mellékelt szolgáltatás.
- nginx – Az Nginx webszerverhez mellékelt szolgáltatás.
Webalkalmazásaink, adatbázisaink, levelezőszervereink stb. elérhetőségének biztosítása érdekében az ilyen szolgáltatásoknak folyamatosan futniuk kell. Ha Ön rendszergazda vagy kíváncsi alkalmazásfejlesztő, biztosítani szeretné, hogy ezek a szolgáltatások folyamatosan fussanak, és egy sajnálatos rendszerösszeomlás esetén a rendszer újraindulása után automatikusan elinduljanak. És pontosan ezt fogjuk megtanulni ebben a gyakorlati útmutatóban.
Bár a riasztások beállítása és a Linux disztribúció folyamatos felügyelete kulcsfontosságú, egyes Linux szolgáltatások képesek az önjavításra, ha megfelelően vannak konfigurálva, köszönhetően a szolgáltatásokat kezelő init rendszereknek.
A Linux disztribúciókban a rendszer inicializálását megvalósító működési módokat futási szinteknek (runlevels). Ahhoz, hogy egy szolgáltatás automatikusan elinduljon, hozzá kell adni egy futási szinthez. Minden Linux és Unix-szerű rendszer négy közös futási szinttel rendelkezik, az alábbiak szerint:
- 0 – A 0-s futási szint a rendszer leállítását jelzi.
- 1 – Az 1-es futási szint az egyfelhasználós, mentési módot jelzi.
- 2, 3, 4 – Ezek a futási szintek olyan állapotokat jeleznek, amikor a rendszer több-felhasználós, hálózatképes, szöveges módban indult el.
- 5 – Az 5-ös futási szint a több-felhasználós, hálózatképes, grafikus módot jelzi.
- 6 – A 6-os futási szint a rendszer újraindítását jelzi.
Ebben az útmutatóban Ön megtanulja, hogyan konfigurálhat egy Linux szolgáltatást úgy, hogy a rendszer újraindulásakor automatikusan elinduljon a korábban ismertetett három különböző init mód használatával: System V, Upstart és Systemd.
Előfeltételek
Ez a gyakorlati útmutató feltételezi, hogy rendelkezik egy Linux VPS-sel, amelyet a lépések követéséhez használhat. Kihasználhatja a Cloudsigma ingyenes próbaidőszakát és elindíthat néhány szervert a parancsok kipróbálásához. Követheti a lépésről lépésre bemutató útmutatónkat az Ubuntu szerverek beállításáról.
Az ebben az útmutatóban létrehozott szerverek kizárólag a gyakorlati feladatok követésére szolgálnak, és nem szabad a parancsokat éles (production) szerveren kipróbálnia, mivel számos szolgáltatás megszakadhat.
Néhány disztribúció, amelyre szüksége lesz:
- Ubuntu 9.04 és korábbiak, vagy Debian 6 x64 (a System V init rendszer bemutatására szolgál)
- Ubuntu 14.04 x64 (az Upstart bemutatására szolgál)
- CentOS 7 x64 (a systemd bemutatására lesz használva).
Győződjön meg róla, hogy beállított egy nem-root felhasználót sudo jogosultságokkal. Megtekintheti a sudoers fájl konfigurálásáról szóló útmutatónkat itt.
A System V használata
Ez a legrégebbi init rendszer, amelyet a korábbi Linux disztribúciókban használtak, mint például:
- Debian 6 és korábbiak
- CentOS 5 és korábbiak
- Ubuntu 9.04 és korábbiak
A legtöbb telepíthető szerveralkalmazás, mint például a MySQL és az Nginx, alapértelmezés szerint az /etc/init.d könyvtárba mentett init szkriptekkel érkezik. Ezek a szkriptek lehetővé teszik számukra az újraindítás utáni indulást. Azonban előfordulhat, hogy nincsenek beállítva az automatikus indulásra rendszerösszeomlás után.
Automatikus indítási ellenőrzőlista a System V-höz
Az első lépés egy működőképes Bash init szkript meglétének ellenőrzése az /etc/init.d/service könyvtárban. A szolgáltatás engedélyezéséhez Debian vagy Ubuntu disztribúciókban használja az update-rc.d parancsot, míg CentOS rendszerben a chkconfig parancsot. Cserélje ki a tényleges szolgáltatásnévre:
|
1 |
sudo update-rc.d service enable |
A fenti parancs létrehoz egy szimbolikus linket az /etc/rc2.d könyvtárban, amely az alábbi kimenethez hasonlít. Ne hozza létre saját maga, mivel ez automatikusan generálódik:
|
1 |
lrwxrwxrwx 1 root root 20 Dec 10 07:09 S02mysql -> ../init.d/service |
A /etc/inittab fájl aljához adjon hozzá egy respawn sort az alábbi általános példában látható módon. Ne felejtse el kicserélni az alkalmazás indító szkriptjének tényleges elérési útjára:
|
1 |
id:2345:respawn:/bin/sh /path/to/your-application/startup |
Adja meg a következő parancsokat a szolgáltatás leállításához és elindításához:
|
1 2 |
sudo service service-name stop sudo service service-name start |
Ezután indítsa újra a szervert:
|
1 |
sudo reboot |
Hogyan teszteljük a változtatásokat?
A szerver újraindítása után ellenőrizze, hogy a szolgáltatás fut-e, megkeresve a folyamat számát a következő paranccsal:
|
1 |
ps -ef | grep service-name |
Lője le a folyamatot a következő paranccsal:
|
1 |
sudo kill -9 process_number |
Öt perc elteltével ellenőrizze, hogy a szolgáltatás újra fut-e.
Gyakorlati System V konfiguráció egy valós szolgáltatással
A következő lépésekben egy valós szerveralkalmazást fogunk kipróbálni, mint például a MySQL. Hozzáféréssel kell rendelkeznie egy Debian 6 virtuális géphez. Egy sudo jogosultságokkal rendelkező fiókkal csatlakozzon hozzá SSH-n vagy putty segítségével, ha Windows asztali gépet használ.
1. lépés: A MySQL telepítése
Adja meg a következő parancsot a MySQL telepítéséhez:
|
1 |
sudo apt-get install mysql-server -y |
Amikor a telepítés megkezdődik, a rendszer kérni fogja a root jelszót. Ezután adjon meg egy tetszőleges jelszót, és erősítse meg. Várja meg, amíg a telepítés befejeződik, majd adja meg a következő parancsot a MySQL biztonságossá tételének megkezdéséhez:
|
1 |
mysql_secure_installation |
A rendszer kérni fogja a korábban megadott root jelszót. Nyomjon N-t a megtartásához. Ezután nyomjon Y-t a névtelen felhasználók eltávolítására, a távoli root bejelentkezés letiltására és a tesztadatbázis eltávolítására vonatkozó további felszólítások elfogadásához. Végül fogadja el a jogosultsági tábla újratöltését, hogy a változtatások automatikusan érvénybe lépjenek.
Ezzel befejeződött a MySQL telepítése. A következő parancs beírásával ellenőrizheti, hogy a szolgáltatás fut-e:
|
1 |
service mysql status |
2. lépés: A MySQL beállítása az újraindítás utáni automatikus indulásra
A MySQL alapértelmezés szerint úgy van beállítva, hogy a rendszer újraindítása után elinduljon. A MySQL inicializáló szkriptjére mutató szimbolikus linket az /etc/rc2.d könyvtárban találja meg. Ezek a szimbolikus linkek nem manuálisan jönnek létre. A szolgáltatások engedélyezéséhez és letiltásához használhatja az update-rc.d parancsot.
Adja meg a következő parancsot a könyvtár tartalmának kilistázásához:
|
1 |
ls -l /etc/rc2.d |
Ellenőrizze, hogy észreveszi-e a MySQL init szkriptre mutató szimbolikus linket:
|
1 |
lrwxrwxrwx 1 root root 15 Dec 2 10:42 S01mysql -> ../init.d/mysql |
Az S fontos, mert amíg látható egy S parancsfájl a szolgáltatás alapértelmezett futási szint könyvtárában található, az init rendszer elindítja a szolgáltatást a szerver rendszerindításakor. Annak ellenőrzéséhez, hogy a MySQL automatikusan elindul-e az újraindítás után, írja be a következő parancsot a rendszer újraindításához:
|
1 |
sudo reboot |
Az ssh-kapcsolat megszakad az újraindítás során. Várjon egy-két percet, majd csatlakozzon vissza. Futtassa a következő parancsot a szolgáltatás futásának ellenőrzéséhez:
|
1 |
service mysql status |
A kimenet jelzi, hogy a szolgáltatás fut. Ez azt jelenti, hogy az újraindítás után automatikusan elindult. Azoknál a szolgáltatásoknál, amelyek nincsenek beállítva az automatikus indulásra, ezt saját magának kell beállítania.
Letilthatjuk a MySQL szolgáltatást, és újraindíthatjuk a rendszert, hogy teszteljük az automatikus indulást. Debian és Ubuntu rendszereken az update-rc.d parancsot használhatja szolgáltatások hozzáadására vagy eltávolítására az init rendszerből. Írja be a következő parancsot a MySQL szolgáltatás letiltásához:
|
1 |
sudo update-rc.d mysql disable |
Indítsa újra a rendszert, és csatlakozzon vissza ssh-n keresztül. Próbáljon meg csatlakozni a MySQL-hez a következő paranccsal:
|
1 |
mysql -u root -p |
A következőhöz hasonló MySQL-hibát fog kapni:
|
1 |
ERROR 2002 (HY000): Nem'lehet kapcsolódni a helyi MySQL szerverhez |
Ezután írja be a következő parancsot a szolgáltatás újbóli engedélyezéséhez:
|
1 |
sudo update-rc.d mysql enable |
Ha CentOS disztribúciót használ, a parancs a következő lesz:
|
1 |
sudo chkconfig mysql enable |
Mivel a MySQL kezdetben nem indult el, el kell indítania. Írja be a következő parancsot:
|
1 |
sudo service mysql start |
3. lépés: Egy szolgáltatás (MySQL) beállítása az automatikus indulásra rendszerösszeomlás után
A System V nem indítja el automatikusan a folyamatot összeomlás után. Szimulálhatunk egy rendszerösszeomlást a MySQL folyamatazonosítójának (PID) megkeresésével és leállításával. Írja be a következő parancsot a MySQL folyamatazonosító megkereséséhez:
|
1 |
ps -ef | grep mysql |
A kimenetben keresse meg a MySQL folyamatokat. A MySQL-t futtató fő folyamatok a mysqld_safe és a mysqld. Jegyezze fel a folyamatazonosítóikat (ezek számok), és használja a következő parancsokat a leállításukhoz:
|
1 2 |
sudo kill -9 mysqldsafe_number sudo kill -9 mysqld_number |
Ellenőrizze a MySQL szolgáltatás állapotát a következő paranccsal:
|
1 |
sudo service mysql status |
A kimenet jelzi, hogy a MySQL leállt. Manuálisan újraindíthatjuk a service start paranccsal. Mi azonban automatikus folyamatot szeretnénk. Ennek az automatikus működésnek az eléréséhez szerkesztenünk kell az /etc/inittab fájlt. Ez az első fájl, amelyet a System V init beolvas a rendszerindításkor. Az /etc/inittab fájl utasításokat tartalmaz arra vonatkozóan, hogyan kell viselkednie egy folyamatnak összeomlás esetén. Megfelelő konfiguráció esetén összeomláskor újraindítja a rendszert. A mi esetünkben biztosítani szeretnénk, hogy a MySQL is ezen szolgáltatások közé tartozzon.
Az /etc/inittab fájl rendkívül fontos egy Linux disztribúció számára. Ez határozza meg, hogy a rendszer újraindul-e vagy sem. Ha hibát követ el a parancsokban, előfordulhat, hogy a rendszer nem indul el az újraindításkor. Ahogy korábban jeleztük, reméljük, hogy ezeket a parancsokat csak tesztkörnyezetben próbálja ki, és nem éles környezetben.
Először készítsen másolatot a fájlról, mielőtt elkezdené a szerkesztést:
|
1 |
sudo cp /etc/inittab /etc/inittab.original |
Ezután nyissa meg a fájlt a nano segítségével:
|
1 |
sudo nano /etc/inittab |
Görgessen a fájl végére, és adja hozzá a következő kódrészletet:
|
1 |
ms:2345:respawn:/bin/sh /usr/bin/mysqld_safe |
A fenti parancs újraindítja a mysql_safe folyamatot rendszerösszeomlás után. Négy mezőből áll, amelyeket kettőspontok választanak el egymástól, az alábbiak szerint:
- ms: Meghatározza a folyamat azonosítóját.
- 2345: Meghatározza azokat a futási szinteket, amelyekre a parancs vonatkozik. Ebben az esetben: 2, 3, 4, 5 futási szintek.
- respawn: Meghatározza a műveletet. Ebben az esetben újraindítjuk (respawn) a folyamatot.
- /bin/sh /usr/bin/mysqld_safe: Az utolsó rész határozza meg a folyamatot – azt a parancsot, amely a folyamat újraindításához fut le.
Most nyomja meg a Ctrl + O, majd az Enter billentyűket a fájl mentéséhez. Ezután nyomja meg a Ctrl + X billentyűkombinációt a szerkesztő bezárásához. Írja be a következő parancsot a szolgáltatás elindításához:
|
1 |
sudo service mysql start |
Indítsa újra a szervert, majd futtassa a korábban ismertetett parancsokat a folyamatazonosító (PID) megkereséséhez. Ezután állítsa le a folyamatokat, kezdve a következő paranccsal: ps -ef | grep mysql. Várjon néhány percet, majd írja be a következő parancsot a MySQL állapotának ellenőrzéséhez:
|
1 |
sudo service mysql status |
A kimenetnek azt kell mutatnia, hogy a MySQL szolgáltatás fut, ami azt jelenti, hogy összeomlás után képes volt újraindulni. Ugyanezt a folyamatot követheti a szerverén lévő többi szolgáltatás esetében is.
Szolgáltatások automatikus indítása Upstart segítségével
Upstart egy másik init rendszer, amelyet eredetileg az Ubuntu 6-ban mutattak be, majd később az Ubuntu 9.10-ben vált alapértelmezetté. Az RHEL 6 és származékai, valamint a Google Chrome OS szintén az Upstart init rendszert használják. Az ebben a szakaszban leírt lépésekhez egy olyan szerverre lesz szüksége, amelyen az alábbi disztribúciók egyike fut:
- Ubuntu 9.10-től Ubuntu 14.10-ig, valamint az Ubuntu LTS verziója, azaz az Ubuntu 14.04.
- CentOS 6
Lássuk, hogyan konfigurálhatja az Upstart fájlokat a szerverszolgáltatások automatikus elindításához újraindítás vagy rendszerösszeomlás esetén. Az Upstart a szolgáltatások vezérléséhez a Linux disztribúciókban a következő könyvtárban tárolt konfigurációs fájlokat használja: /etc/init könyvtár. A szerveralkalmazások, például a MySQL és az Nginx legújabb verziói saját init szkripteket telepítenek a /etc/init könyvtárba. Így újraindítás és rendszerösszeomlás után is elindulnak anélkül, hogy bármit is tennie kellene.
Automatikus indítási ellenőrzőlista az Upstart-hoz
Íme néhány referencia-konfiguráció, amelyet ellenőrizhet annak biztosítására, hogy a szolgáltatás automatikus indításra van-e konfigurálva.
- Győződjön meg arról, hogy a szolgáltatás rendelkezik init szkripttel a következő könyvtárban: /etc/init/service_name.conf – service_name ahol a service_name az adott szolgáltatás tényleges neve. Ellenőrizze a következő két sort a /etc/init/service_name.conf fájlban:
- Egy sor, amely valami ilyesmit tartalmaz: start on runlevel [2345]. Ez azt jelzi, hogy a szolgáltatás elindul a rendszer újraindításakor.
- Egy sor, amely valami ilyesmit tartalmaz: respawn. Ez azt jelzi, hogy a szolgáltatás újraindul (respawn) egy rendszerösszeomlás után.
- Győződjön meg arról, hogy nincs szolgáltatás-felülbírálási (override) fájl a következő könyvtárban: /etc/init/service_name.override. Kivéve, ha Ön vagy egy másik rendszergazda korábban létrehozta azt.
- Írja be a következő parancsokat a szolgáltatás leállításához és elindításához:
|
1 2 |
sudo initctl stop service_name sudo initctl start service_name |
- Indítsa újra a rendszert, majd néhány perc múlva csatlakozzon vissza. Most futtasson néhány tesztet, hogy ellenőrizze a működést
- Újraindítás után ellenőrizze, hogy a szolgáltatás fut-e. Írja be a következő parancsot a folyamatazonosító megkereséséhez, a service_name helyére a tesztelt szolgáltatás tényleges nevét írva:
|
1 |
ps -ef | grep service_name |
- Miután megvan a folyamatazonosító, írja be a következő parancsot a folyamat leállításához (kill):
|
1 |
sudo kill -9 process_number |
- Várjon néhány másodpercet, majd ellenőrizze újra, hogy a folyamat fut-e.
Gyakorlati Upstart konfiguráció egy valós szolgáltatással
A következő szakaszban bemutatjuk, hogyan használhatja az Upstart-ot egy valós szolgáltatással. A teszteket egy Ubuntu 14.04 virtuális gép szerveren fogjuk futtatni, ahol a MySQL lesz a szolgáltatás. Csatlakozzon az Ubuntu 14.04 tesztszerveréhez ssh vagy putty segítségével, ha Windows rendszert használ. Alapesetben egy sudo jogosultságokkal rendelkező, nem root felhasználót kell használnia. Miután bejelentkezett, elkezdhetjük a lépéseket:
1. lépés: A MySQL telepítése
Mindig emlékezzen a csomagok frissítésére, mielőtt bármilyen új szoftvert telepítene:
|
1 |
sudo apt-get update |
Most írja be a következő parancsot a MySQL szerver telepítéséhez:
|
1 |
sudo apt-get install mysql-server –y |
Amikor a rendszer kéri, hozzon létre egy root jelszót. Várja meg, amíg a telepítés befejeződik, majd futtassa a következő parancsot a MySQL telepítés biztonságossá tételének megkezdéséhez:
|
1 |
mysql_secure_installation |
Kövesse a felszólításokat, ahogyan azt a korábbi részben is tette. Ezután ürítse ki a jogosultságokat (flush privileges), hogy a változtatások azonnal életbe lépjenek.
2. lépés: Egy szolgáltatás (MySQL) konfigurálása az automatikus indulásra rendszerújraindítás után
A MySQL be van állítva, hogy újraindítás után automatikusan elinduljon. Csak azért nézzük meg a konfigurációs fájljait, hogy megtanuljuk, hogyan konfigurálhatjuk saját alkalmazásainkat is az automatikus indulásra újraindítás után. A MySQL szolgáltatás a telepítés után automatikusan elindult. Azonban ellenőrizzük, hogy fut-e, a következő parancs beírásával:
|
1 |
sudo initctl status mysql |
Egy olyan kimenetet kellene látnia, amely jelzi, hogy a MySQL szolgáltatás fut, valahogy így:
|
1 |
mysql start/running, process 2553 |
Indítsa újra a szervert, és jelentkezzen be újra. Ismét írja be a következő parancsot annak tesztelésére, hogy fut-e:
|
1 |
sudo initctl status mysql |
A kimenet jelzi majd, hogy a MySQL fut, ami azt jelenti, hogy az újraindítás után automatikusan elindult. Ebben az esetben semmit sem kell változtatni. Ez a viselkedés azonban más alkalmazások esetében eltérő lehet. Felmerülhet a kérdés, honnan tudja az Upstart init rendszer, hogy újraindítás után automatikusan el kell indítania a MySQL-t. A MySQL az Upstart indítási konfigurációs fájlját a következő helyre telepíti: /etc/init/mysql.conf. Az Upstart fájlok nem shell scriptek, hanem szöveges fájlok, amelyek pre-start és post-start eseményekhez tartozó scriptblokkokat tartalmaznak. A blokkok utasítják az Upstart rendszert, hogy mit hajtson végre, amikor a MySQLd folyamat elindul, vagy amikor már elindult.
Írja be a következő parancsot a fájl nano szerkesztőben való megnyitásához:
|
1 |
sudo nano /etc/init/mysql.conf |
A fájl kimenete valahogy így nézhet ki:
|
1 2 3 4 5 6 7 8 |
description "MySQL Server" author "Mario Limonciello <superm1@ubuntu.com>" start on runlevel [2345] stop on starting rc RUNLEVEL=[016] respawn respawn limit 2 5 |
Mint látható, a start blokk arra utasítja a MySQL-t, hogy a 2, 3, 4, 5 futási szinteken (runlevel) induljon el, és ne a 0, 1, 6 szinteken. Ha Upstart konfigurációt határoz meg az alkalmazásához, azt ebben a szakaszban fogja megtenni. A respawn blokk arra utasítja az Upstartot, hogy mit tegyen összeomlás után. Ezt a következő részben tárgyaljuk, ezért hagyja nyitva a fájlt a nano szerkesztőben.
Step 3: Configuring a Service (MySQL) to Auto-start After Crash
A respawn direktíva a /etc/init/mysql.conf fájlban arra utasítja az Upstartot, hogy összeomlás után indítsa újra a MySQL szolgáltatást.
A respawn limit direktíva arra utasítja az Upstartot, hogy hányszor kísérelje meg újraindítani az összeomlott MySQL szolgáltatást egy másodpercben megadott intervallumon belül. Az első argumentum (2) a próbálkozások számát jelzi. A második argumentum (5) az intervallumot jelzi másodpercben. Ha egy összeomlás után az Upstartnak a határértéken belül nem sikerül újraindítania a MySQL szolgáltatást, az leállítva marad. Ez a viselkedés arra szolgál, hogy megvédje a rendszert a stabilitásának elvesztésétől abban az esetben, ha folyamatosan összeomló szolgáltatásokat próbálna meg újra és újra elindítani. Most már bezárhatja a szerkesztőt anélkül, hogy bármilyen változtatást végezne.
Teszteljük, hogy a MySQL automatikusan újraindul-e egy összeomlás után. Írja be a következő parancsot a státusz ellenőrzéséhez és a MySQL szolgáltatás folyamatazonosítójának (process number) lekéréséhez:
|
1 |
sudo initctl status mysql |
A kimenetnek valahogy így kell kinéznie. Jegyezze fel a folyamat számát, mert később még szükségünk lesz rá:
|
1 |
mysql start/running, process 738 |
Ezután írja be a következő parancsot a folyamat leállításához (kill). Ez egy összeomlást szimulál. Cserélje ki az előző parancsban kapott folyamatszámmal:
|
1 |
sudo kill -9 7738 |
Ellenőrizze ismét a MySQL állapotát a következő parancs beírásával:
|
1 |
sudo initctl status mysql |
Ismét futnia kell, de valószínűleg egy másik folyamatszámmal:
|
1 |
mysql start/running, process 1428 |
Ez a következőben található respawn direktíva miatt történik: /etc/init/mysql.conf fájl. Ez biztosítja, hogy a rendszer esetleges összeomlása esetén a MySQL automatikusan elinduljon. Így a MySQL adatbázistól függő alkalmazása a várt módon működik tovább.
Szolgáltatások automatikus indítása Systemd segítségével
Systemd egy inicializációs rendszer, amely a legtöbb legújabb Linux disztribúcióban megtalálható. Valószínűleg ezt fogja használni, amikor elindít egy új VPS-t. Először a Fedora disztribúcióban mutatták be. A RHEL 7-tel és annak származékaival, például a CentOS 7-tel érkezik. Az Ubuntu 15.04-től kezdve a Systemd natívan megtalálható. A Systemd visszafelé kompatibilis a System V inicializációs szkriptekkel és parancsokkal. Ezért minden System V szolgáltatásnak működnie kell a Systemd alatt. A System V-ben és az Upstartban használt legtöbb parancsot módosították, hogy működjön a Systemd-vel.
A Systemd segítségével a legtöbb szerveralkalmazás, például a MySQL és az Nginx automatikusan elindul újraindítás vagy leállítás után, anélkül, hogy bármit is meg kellene változtatnia. Egyedi alkalmazásaihoz saját init szkripteket kell létrehoznia a szolgáltatások automatikus újraindításához.
A Systemd-vel kapcsolatos részletesebb információkért tekintse meg a Systemd szolgáltatások és egységek Systemctl segítségével történő kezeléséről szóló útmutatónkat.
Automatikus indítási ellenőrzőlista a Systemd-hez
Íme néhány referencia-konfiguráció, amelyet ellenőrizhet, hogy megbizonyosodjon arról, hogy a szolgáltatás úgy van konfigurálva, hogy automatikusan elinduljon a Systemd segítségével.
- A szolgáltatásnak rendelkeznie kell egy működő Systemd init szkripttel, amely itt található: /etc/systemd/system/multi-user.target.wants/serviceName.service. A ServiceName a konfigurálni kívánt szolgáltatás tényleges neve.
- A szolgáltatás engedélyezésére szolgáló parancs:
|
1 |
sudo systemctl enable serviceName.service |
- A parancs létrehoz egy szimbolikus linket a /etc/systemd/system/multi-user.target.wants/ könyvtárban, amely hasonlóan nézhet ki:
|
1 |
lrwxrwxrwx 1 root root 11 Dec 1 04:43 /etc/systemd/system/multi-user.target.wants/serviceName.service -> /usr/lib/systemd/system/serviceName.service |
- Ezzel a szimbolikus linkkel engedélyezte az automatikus újraindítást a rendszerindítás után.
- A változtatások aktiválásához töltse újra a rendszer démont, majd töltse újra a szolgáltatást a következő parancsokkal:
|
1 2 3 |
sudo systemctl daemon-reload sudo systemctl restart serviceName.service |
- Annak teszteléséhez, hogy a konfigurációk elindítják-e a szolgáltatást újraindítás után, újraindíthatja a rendszert:
|
1 |
sudo reboot |
- Amikor a rendszer újraindul, keresse meg a folyamat számát a következő paranccsal:
|
1 |
ps -ef | grep serviceName |
- Jegyezze fel a folyamat számát, és lője le a következő paranccsal:
|
1 |
sudo kill -9 process_number |
- Várjon néhány másodpercet, majd keresse meg újra a szolgáltatást, hogy ellenőrizze, újra fut-e.
Gyakorlati Systemd konfiguráció egy valós szolgáltatással
Ebben a részben megpróbáljuk konfigurálni a MySQL szolgáltatást egy Ubuntu 20.04 virtuális gépen.
1. lépés: Csatlakozzon a virtuális magánszerveréhez (Ubuntu 20.04 vagy CentOS 7 x64)
Jelentkezzen be a VPS-ére, vagy hozzon létre egyet a Cloudsigma panelen, és csatlakozzon ssh vagy putty segítségével, ha Windowst használ. Az útmutató ehhez a részéhez Ubuntu 20.04 szervert használunk. Ugyanezek a parancsok vonatkozhatnak a CentOS 7 disztribúcióra is. Ügyeljen arra, hogy nem root felhasználót használjon sudo jogosultságokkal.
2. lépés: A MySQL telepítése (a konfigurálni kívánt szolgáltatás)
Először frissítse a rendszert:
|
1 |
sudo apt update |
Ezután telepítheti a MySQL szervert a következő paranccsal:
|
1 |
sudo apt install mysql-server –y |
Ezután futtassa a következő parancsot a MySQL biztonságossá tételének megkezdéséhez:
|
1 |
sudo mysql_secure_installation |
A szkript megkérdezi, hogy szeretné-e beállítani a VALIDATE PASSWORD összetevőt, vagy nyomjon meg egy tetszőleges billentyűt az összetevő engedélyezése nélküli folytatáshoz. Kövesse ezt a linket, ha többet szeretne megtudni a MySQL jelszó-ellenőrző összetevőről.
Nyomja meg az 1-est az engedélyezéséhez, majd válassza a közepes szintet az 1-es megnyomásával. Adjon meg egy erős jelszót: nagybetűk, kisbetűk, speciális karakterek és számok kombinációját. Erősítse meg a jelszót, és erősítse meg a kérdést, amely azt kérdezi, hogy a megadott jelszót szeretné-e root jelszóként használni. A többi kérdésnél nyomjon y-t az elfogadáshoz, ahogy az előző szakaszokban is tette. Végül frissítse a jogosultságokat (flush privileges) a MySQL-ben a változtatások újratöltéséhez.
3. lépés: A MySQL konfigurálása az újraindítás utáni automatikus indulásra
A MySQL úgy van konfigurálva, hogy újraindítás után elinduljon, így nincs szükség változtatásra. Azonban használhatjuk a MySQL konfigurációs fájljait arra, hogy megtanuljuk, hogyan konfiguráljuk a saját egyéni fájljainkat.
Először ellenőrizze, hogy a MySQL szolgáltatás be van-e állítva a rendszerindításkor történő indulásra. Írja be a következő parancsot (vegye figyelembe, hogy CentOS-ben a MySQL szolgáltatás neve mysqld):
|
1 |
sudo systemctl is-enabled mysql.service |
Íme a kimenet:

Ezután indítsa újra a VPS-t a következő parancs beírásával:
|
1 |
sudo reboot |
Csatlakozzon vissza ssh-n keresztül, és írja be a következő parancsot a MySQL szolgáltatás állapotának ellenőrzéséhez:
|
1 |
sudo systemctl status mysql.service |
Az alábbi képernyőképhez hasonló kimenetet kell kapnia:

A MySQL szolgáltatás letiltásához írja be a következő parancsot:
|
1 |
sudo systemctl disable mysql.service |
A kimenet azt jelzi, hogy a MySQL szolgáltatásra mutató szimbolikus linkek el lettek távolítva a Systemd-ből:

A következő parancs beírásával tesztelheti, hogy a szolgáltatás engedélyezve van-e a Systemd init rendszerben:
|
1 |
sudo systemctl is-enabled mysql.service |
A kimenet azt fogja mutatni, hogy le van tiltva. Ha újraindítja a rendszert, a MySQL nem fog elindulni a rendszerindításkor:
![]()
Engedélyezze a szolgáltatást a következő parancs beírásával:
|
1 |
sudo systemctl enable mysql.service |
A kimenet mutatja a Systemd initben létrehozott, a MySQL szolgáltatásra mutató szimbolikus linket:

Amikor újraindítja a rendszert, a MySQL szolgáltatás automatikusan elindul.
4. lépés: A MySQL konfigurálása az összeomlás utáni automatikus újraindulásra
A MySQL úgy van konfigurálva, hogy összeomlás után automatikusan újrainduljon. Nézzük meg, hogyan valósul meg ez a konfiguráció a Systemd-ben. A Systemd unit fájlokat használ a konfigurációhoz. Írja be a következő parancsot a mysql.service konfigurációs fájl nano-ban történő megnyitásához:
|
1 |
sudo nano /etc/systemd/system/multi-user.target.wants/mysql.service |
A kimenet így néz ki:

Számunkra a Restart direktíva a fontos. A meghatározás szerint a MySQL újraindul, ha hiba történik. A Restart direktíva határozza meg, hogy mi történjen a Systemd-ben, éppúgy, mint a Respawn direktíva az Upstartban.
Nem minden szolgáltatás rendelkezik ezzel a direktívával. Ahhoz, hogy egy szolgáltatás összeomlás után újraindulhasson, bármikor hozzáadhatja a Restart direktívát a szolgáltatás konfigurációs unit fájljának [Service] blokkja alá. Ha a [Service] fejléc nem létezik, adja hozzá. Most lépjen ki a szerkesztőből a Ctrl + X billentyűkombináció megnyomásával.
Az összeomlás szimulálásához keresse meg a MySQL folyamat azonosítóját (PID) a következő parancs beírásával:
|
1 |
sudo systemctl status mysql.service |
Az állapotellenőrző parancs megjelenít egy folyamatazonosítót, a mi esetünkben ez a 3555:

Írja be a következő parancsot a folyamat leállításához (kill). Cserélje ki a saját szerverén kapott folyamatazonosítóra:
|
1 |
sudo kill -9 3555 |
Írja be a következő parancsot az állapot ellenőrzéséhez:
|
1 |
sudo systemctl status mysql.service |
A kimenet azt mutatja, hogy a MySQL fut, de egy új folyamatazonosítóval. Ez azt jelenti, hogy az összeomlás után automatikusan újraindult:

Összegzés
Ebben az útmutatóban bemutattuk a Linux disztribúciók három inicializációs rendszerét: a System V-öt, az Upstartot és a Systemd-t. Megtanultuk, hogyan használhatja bármelyik init rendszert a folyamatosan futó szolgáltatások konfigurálására, hogy azok automatikusan elinduljanak újraindítás vagy rendszerösszeomlás után. Ennek kiindulópontként kell szolgálnia, amikor konfigurálnia kell a szolgáltatásait. Ennek a sorozatnak az első része főként egy gyakorlati útmutató volt. A a második rész elméletibb, és részletesebben bemutatja, mit csináltunk az első részben. Még ne törölje a tesztszervereit, mert a második részben is használni fogja őket.
Kellemes számítógépezést!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.