Úvod
V počítačovém světě nejde vždy všechno podle plánu. Neočekávané pády systému často nutí správce systému k restartování celého systému a jednotlivých služeb. Zjišťování a restartování každé služby, kterou vaše aplikace potřebuje ke svému běhu po pádu nebo restartu systému, může být únavné. V tomto prvním díle dvoudílného návodu vám na praktických příkladech ukážeme, jak nakonfigurovat služby tak, aby se po pádu systému nebo restartu serveru spouštěly automaticky. druhá část se bude zabývat teoretickými informacemi o tom, čeho jsme dosáhli v první části.
Pro praktické příklady použijeme databázovou službu MySQL. Stejné principy však platí i pro ostatní procesy, které tvoří kompletní server, jako jsou Nginx, Apache, Redis, nebo jiné aplikace. Můžete se podívat na naše návody na jak nainstalovat MySQL, Nginx a Apache.
V Linuxových distribucích existují tři hlavní inicializační (init) systémy v závislosti na spuštěné distribuci. Některé distribuce mohou obsahovat dva nebo více init systémů, jak je uvedeno níže:
- System V – starší init systém, který se nachází ve starších distribucích jako:
- Ubuntu 9.04 a starší
- CentOS 5 a starší
- Debian 6 a starší
- Upstart – používaný v dřívějších distribucích jako:
- CentOS 6
- Ubuntu 9.10 až Ubuntu 14.10 a Ubuntu 14.04
- Systemd – používaný v nejnovějších distribucích jako:
- CentOS 7
- Debian 7 a 8.
- Ubuntu 15.04 a novější
Pozadí
Pro operační systémy, a zejména pro Linux a Unixové systémy, je běžné, že na pozadí běží procesy a služby. Tyto služby mohou být dodávány se softwarem operačního systému. Některé mohou pocházet z uživatelských aplikací, které nainstalujete.
Mezi služby operačního systému patří:
- sshd – Jedná se o démona umožňujícího vzdálená připojení.
- cupsd – Jedná se o démona řídícího tisk.
Mezi služby nainstalovaných aplikací patří:
- httpd/apache2 – Služba dodávaná s webovým serverem Apache2.
- nginx – Služba dodávaná s webovým serverem Nginx.
Aby byly naše webové aplikace, databáze, poštovní servery atd. dostupné, musí tyto služby běžet nepřetržitě. Pokud jste správce systému nebo zvídavý vývojář aplikací, chcete zajistit, aby tyto služby běžely nepřetržitě a v případě nešťastného pádu systému se po restartu systému automaticky spustily. A přesně to se v tomto praktickém návodu naučíme.
Ačkoli je nastavení upozornění a neustálé monitorování vaší linuxové distribuce klíčové, některé linuxové služby se mohou při správné konfiguraci samy opravit, a to díky init systémům, které služby spravují.
V linuxových distribucích existují provozní režimy, které implementují inicializaci systému, nazývané runlevels. Aby se služba automaticky spouštěla, musí být přidána do runlevelu. Každý systém typu Linux a Unix má čtyři běžné runlevely, jak je uvedeno níže:
- 0 – Runlevel 0 označuje vypnutí systému.
- 1 – Runlevel 1 označuje režim jednoho uživatele, záchranný režim.
- 2, 3, 4 – Tyto runlevely označují stavy, kdy byl systém spuštěn ve víceuživatelském textovém režimu s povolenou sítí.
- 5 – Runlevel 5 označuje víceuživatelský grafický režim s povolenou sítí.
- 6 – Runlevel 6 označuje restart systému.
V tomto návodu se naučíte, jak nakonfigurovat linuxovou službu tak, aby se automaticky spouštěla při restartu systému pomocí tří různých dříve vysvětlených režimů init: System V, Upstart a Systemd.
Požadavky
Tento praktický návod předpokládá, že máte k dispozici Linux VPS, který můžete použít k postupu. Můžete využít bezplatné zkušební období u Cloudsigma a spustit několik serverů pro vyzkoušení příkazů. Můžete postupovat podle našeho podrobného návodu, jak nastavit servery Ubuntu.
Servery, které v tomto návodu vytvoříte, slouží čistě pro účely praktického procvičování a neměli byste tyto příkazy zkoušet na produkčním serveru, protože by došlo k narušení chodu mnoha služeb.
Některé z distribucí, které budete potřebovat:
- Ubuntu 9.04 a starší, nebo Debian 6 x64 (bude použit k demonstraci init systému System V)
- Ubuntu 14.04 x64 (bude použit k demonstraci Upstartu)
- CentOS 7 x64 (bude použit pro demonstraci systemd).
Ujistěte se, že máte nastaveného uživatele bez oprávnění root s právy sudo. Můžete se podívat na náš návod na konfiguraci souboru sudoers zde.
Použití System V
Toto je nejstarší init systém, který se používal v dřívějších distribucích Linuxu, jako jsou:
- Debian 6 a starší
- CentOS 5 a starší
- Ubuntu 9.04 a starší
Většina instalovatelných serverových aplikací, jako jsou MySQL a Nginx, se standardně dodává s init skripty uloženými v /etc/init.d adresáři. Tyto skripty jim umožňují spuštění po restartu. Nemusí však být nakonfigurovány tak, aby se spouštěly automaticky po pádu systému.
Kontrolní seznam pro automatické spuštění pro System V
Prvním krokem je kontrola dostupnosti funkčního Bash init skriptu v adresáři /etc/init.d/service. Chcete-li službu povolit, v Debian nebo Ubuntu distribucích použijte příkaz update-rc.d, v CentOS systému použijte chkconfig. Nahraďte skutečným názvem vaší služby:
|
1 |
sudo update-rc.d service enable |
Výše uvedený příkaz vytvoří symlink v /etc/rc2.d adresáři, který vypadá jako výstup níže. Nevytvářejte jej sami, protože je generován automaticky:
|
1 |
lrwxrwxrwx 1 root root 20 Dec 10 07:09 S02mysql -> ../init.d/service |
Na konec souboru /etc/inittab přidejte řádek respawn, jak je znázorněno v obecném příkladu níže. Nezapomeňte jej nahradit skutečnou cestou ke spouštěcímu skriptu vaší aplikace:
|
1 |
id:2345:respawn:/bin/sh /path/to/your-application/startup |
Pro zastavení a spuštění služby zadejte následující příkazy:
|
1 2 |
sudo service service-name stop sudo service service-name start |
Poté restartujte server:
|
1 |
sudo reboot |
Jak změny otestovat?
Po restartování serveru ověřte, zda služba běží, vyhledáním čísla procesu pomocí příkazu:
|
1 |
ps -ef | grep service-name |
Ukončete proces pomocí příkazu:
|
1 |
sudo kill -9 process_number |
Po pěti minutách ověřte, zda je služba spuštěná a funkční.
Praktická konfigurace System V s reálnou službou
V následujících krocích si vyzkoušíme reálnou serverovou aplikaci, jako je MySQL. Měli byste mít přístup k virtuálnímu stroji s Debian 6. Pomocí účtu, který má oprávnění sudo, se k němu připojte pomocí SSH nebo putty, pokud pracujete na systému Windows.
Krok 1: Instalace MySQL
Pro instalaci MySQL zadejte následující příkaz:
|
1 |
sudo apt-get install mysql-server -y |
Po zahájení instalace budete vyzváni k zadání hesla pro uživatele root. Poté zadejte heslo podle svého výběru a potvrďte jej. Počkejte na dokončení instalace a poté zadejte následující příkaz pro spuštění zabezpečení MySQL:
|
1 |
mysql_secure_installation |
Budete vyzváni k zadání hesla uživatele root, které jste zadali dříve. Stisknutím klávesy N jej zachováte. Poté stisknutím klávesy Y přijměte následující výzvy k odstranění anonymních uživatelů, zakázání vzdáleného přihlášení uživatele root a odstranění testovací databáze. Nakonec potvrďte opětovné načtení tabulky oprávnění, aby se změny projevily automaticky.
Tím je instalace MySQL dokončena. Zda služba běží, můžete zkontrolovat zadáním následujícího příkazu:
|
1 |
service mysql status |
Krok 2: Konfigurace MySQL pro automatické spuštění po restartu
MySQL je ve výchozím nastavení nakonfigurováno tak, aby se spouštělo po restartu systému. Symlink na inicializační skript MySQL najdete v adresáři /etc/rc2.d adresáři. Tyto symlinky se nevytvářejí ručně. Můžete použít update-rc.d příkaz k povolení a zakázání služeb.
Zadejte následující příkaz pro výpis obsahu adresáře:
|
1 |
ls -l /etc/rc2.d |
Zkontrolujte, zda vidíte symlink na init skript MySQL:
|
1 |
lrwxrwxrwx 1 root root 15 Dec 2 10:42 S01mysql -> ../init.d/mysql |
Písmeno S je důležité, protože dokud vidíte S skript v adresáři výchozího runlevelu pro danou službu, init systém spustí službu při startu serveru. Chcete-li ověřit, že se MySQL po restartu automaticky spustí, zadejte následující příkaz pro restartování systému:
|
1 |
sudo reboot |
Vaše ssh připojení se během restartu ukončí. Počkejte minutu nebo dvě a připojte se zpět. Spuštěním následujícího příkazu zkontrolujte, zda služba běží:
|
1 |
service mysql status |
Výstup bude indikovat, že služba běží. To znamená, že se po restartu spustila automaticky. U služeb, které nejsou nakonfigurovány pro automatické spouštění, je budete muset nakonfigurovat sami.
Můžeme zakázat službu MySQL a restartovat systém, abychom otestovali, zda se automaticky spustí. V systémech Debian a Ubuntu můžete použít příkaz update-rc.d k přidání nebo odebrání služeb z init systému. Zadejte následující příkaz pro zakázání služby MySQL:
|
1 |
sudo update-rc.d mysql disable |
Restartujte systém a připojte se zpět pomocí ssh. Zkuste se připojit k MySQL pomocí následujícího příkazu:
|
1 |
mysql -u root -p |
Dostanete chybu MySQL jako:
|
1 |
ERROR 2002 (HY000): Can't connect to local MySQL server |
Poté zadejte následující příkaz pro opětovné povolení služby:
|
1 |
sudo update-rc.d mysql enable |
Pokud používáte distribuci CentOS, příkaz bude:
|
1 |
sudo chkconfig mysql enable |
Protože se MySQL původně nespouštělo, musíte ho spustit. Zadejte následující příkaz:
|
1 |
sudo service mysql start |
Krok 3: Konfigurace služby (MySQL) pro automatické spuštění po pádu systému
System V nespustí proces automaticky po pádu. Pád systému můžeme nasimulovat tak, že najdeme ID procesu MySQL a ukončíme ho. Zadejte následující příkaz pro vyhledání ID procesu MySQL:
|
1 |
ps -ef | grep mysql |
Ve výstupu najděte procesy MySQL. Hlavní procesy, na kterých běží MySQL, jsou mysqld_safe a mysqld. Poznamenejte si jejich ID procesů (jsou to čísla) a použijte následující příkazy k jejich ukončení:
|
1 2 |
sudo kill -9 mysqldsafe_number sudo kill -9 mysqld_number |
Zkontrolujte stav služby MySQL pomocí příkazu:
|
1 |
sudo service mysql status |
Výstup bude indikovat, že MySQL se zastavilo. Můžeme ho ručně restartovat pomocí příkazu service start. My však chceme automatický proces. Abychom dosáhli tohoto automatického chování, musíme upravit soubor /etc/inittab. Toto je první soubor, který System V init čte při spouštění. Soubor /etc/inittab obsahuje instrukce o tom, jak by se měl proces chovat, pokud spadne. Pokud je správně nakonfigurován, restartuje systém znovu, když dojde k pádu. V našem případě chceme zajistit, aby MySQL byla jednou z těchto služeb.
Soubor /etc/inittab je pro linuxovou distribuci nesmírně důležitý. Určuje, zda se váš systém restartuje nebo ne. Pokud v příkazech uděláte chybu, systém se při restartu nemusí spustit. Jak jsme již uvedli, doufáme, že tyto příkazy zkoušíte pouze v testovacím serverovém prostředí a ne v produkčním prostředí.
Nejprve si před zahájením úprav vytvořte kopii souboru:
|
1 |
sudo cp /etc/inittab /etc/inittab.original |
Dále otevřete soubor pomocí nano:
|
1 |
sudo nano /etc/inittab |
Přejděte na konec souboru a přidejte následující fragment kódu:
|
1 |
ms:2345:respawn:/bin/sh /usr/bin/mysqld_safe |
Výše uvedený příkaz restartuje proces mysql_safe po pádu systému. Má čtyři pole oddělená dvojtečkami, jak je vysvětleno níže:
- ms: Určuje ID procesu.
- 2345: Určuje runlevely, na které se příkaz vztahuje. V tomto případě: runlevely 2, 3, 4, 5.
- respawn: Určuje akci. V tomto případě proces znovu spouštíme nebo restartujeme.
- /bin/sh /usr/bin/mysqld_safe: Poslední část definuje proces – příkaz, který se provede pro restartování procesu.
Nyní stiskněte Ctrl + O a Enter pro uložení souboru. Poté stiskněte Ctrl + X pro zavření editoru. Zadejte následující příkaz pro spuštění služby:
|
1 |
sudo service mysql start |
Restartujte server a poté spusťte dříve vysvětlené příkazy, abyste zjistili číslo procesu. Dále procesy ukončete, počínaje příkazem ps -ef | grep mysql. Počkejte několik minut a zadejte následující příkaz pro kontrolu stavu MySQL:
|
1 |
sudo service mysql status |
Výstup by měl indikovat, že služba MySQL běží, což znamená, že se dokázala po pádu restartovat. Stejný postup můžete použít i pro ostatní služby na vašem serveru.
Automatické spouštění služeb pomocí Upstart
Upstart je další init systém, který byl původně představen v Ubuntu 6 a později se stal výchozím v Ubuntu 9.10. RHEL 6 a jeho deriváty a Chrome OS od Googlu také používají init systém Upstart. Pro kroky v této sekci byste měli mít server s některou z následujících distribucí:
- Ubuntu 9.10 až Ubuntu 14.10 a LTS verzi Ubuntu, tj. Ubuntu 14.04.
- CentOS 6
Podívejme se, jak můžete nakonfigurovat soubory Upstart pro automatické spouštění služeb serveru v případě restartu nebo pádu systému. Upstart používá konfigurační soubory uložené v adresáři /etc/init pro řízení služeb v Linuxové distribuci. Většina nejnovějších verzí serverových aplikací, jako jsou MySQL a Nginx, instaluje své vlastní init skripty do adresáře /etc/init. Budou se tedy spouštět po restartu a po pádu systému, aniž byste museli cokoli dělat.
Kontrolní seznam pro automatické spuštění v Upstart
Zde je několik referenčních konfigurací, které je třeba zkontrolovat, abyste se ujistili, že je vaše služba nakonfigurována pro automatické spouštění.
- Ujistěte se, že služba má init skript v adresáři /etc/init/service_name.conf – service_name přičemž „service_name“ je skutečný název vaší konkrétní služby. V souboru /etc/init/service_name.conf byste měli zkontrolovat následující dva řádky:
- Řádek obsahující něco jako start on runlevel [2345]. To indikuje, že služba bude spuštěna při restartu systému.
- Řádek obsahující něco jako respawn. To indikuje, že služba bude po pádu systému znovu spuštěna/restartována.
- Ujistěte se, že v adresáři není žádný soubor pro přepsání služby: /etc/init/service_name.override. Pokud jste jej vy nebo jiný správce systému nevytvořili dříve.
- Zadejte následující příkazy pro zastavení a spuštění služby:
|
1 2 |
sudo initctl stop service_name sudo initctl start service_name |
- Restartujte systém a po několika minutách se znovu připojte. Nyní proveďte několik testů, abyste zjistili, zda vše funguje
- Po restartu ověřte, zda služba běží. Zadejte následující příkaz pro vyhledání čísla procesu, přičemž nahraďte service_name skutečným názvem služby, kterou testujete:
|
1 |
ps -ef | grep service_name |
- Jakmile budete mít číslo procesu, zadejte následující příkaz k ukončení procesu:
|
1 |
sudo kill -9 process_number |
- Počkejte několik sekund a znovu ověřte, zda proces běží.
Praktická konfigurace Upstart se skutečnou službou
V další části se pokusíme ukázat, jak můžete použít Upstart se skutečnou službou. Testy budeme provádět na serveru s virtuálním strojem Ubuntu 14.04 se službou MySQL. Připojte se k testovacímu serveru Ubuntu 14.04 pomocí ssh nebo putty, pokud používáte Windows. Standardně byste měli používat uživatele bez oprávnění root s právy sudo. Jakmile se přihlásíte, můžeme začít s kroky:
Krok 1: Instalace MySQL
Před instalací jakéhokoli nového softwaru nezapomeňte vždy aktualizovat balíčky:
|
1 |
sudo apt-get update |
Nyní zadejte následující příkaz pro instalaci serveru MySQL:
|
1 |
sudo apt-get install mysql-server –y |
Po vyzvání vytvořte heslo pro uživatele root. Počkejte na dokončení instalace a spusťte následující příkaz pro zahájení zabezpečení instalace MySQL:
|
1 |
mysql_secure_installation |
Postupujte podle výzev, stejně jako v předchozí části. Poté vymažte oprávnění (flush privileges), aby se změny projevily okamžitě.
Krok 2: Konfigurace služby (MySQL) pro automatické spuštění po restartu systému
MySQL je nastaveno na automatické spuštění po restartu. Na jeho konfigurační soubory se díváme pouze proto, abychom se naučili, jak můžeme nakonfigurovat naše vlastní aplikace, aby se po restartu také automaticky spouštěly. Služba MySQL byla po instalaci spuštěna automaticky. Pojďme se však zadáním následujícího příkazu ujistit, že běží:
|
1 |
sudo initctl status mysql |
Měli byste vidět výstup indikující, že služba MySQL běží, něco jako:
|
1 |
mysql start/running, process 2553 |
Restartujte server a znovu se přihlaste. Opět zadejte následující příkaz, abyste otestovali, zda běží:
|
1 |
sudo initctl status mysql |
Výstup bude indikovat, že MySQL běží, což znamená, že se po restartu automaticky spustilo. V tomto případě není třeba nic měnit. Toto chování však nemusí být u jiných aplikací stejné. Možná se ptáte, jak inicializační systém Upstart ví, že má MySQL po restartu automaticky spustit. MySQL instaluje svůj spouštěcí konfigurační soubor Upstart v umístění /etc/init/mysql.conf. Soubory Upstart nejsou shellové skripty, ale textové soubory se skriptovými bloky pro události před spuštěním (pre-start) a po spuštění (post-start). Tyto bloky instruují systém Upstart, co má provést, když se proces MySQLd spouští nebo když již byl spuštěn.
Zadejte následující příkaz pro otevření souboru v editoru nano:
|
1 |
sudo nano /etc/init/mysql.conf |
Výstup souboru může vypadat takto:
|
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 |
Jak je vidět, blok start instruuje MySQL, aby se spustilo na úrovních běhu (runlevels) 2, 3, 4, 5, a nikoli 0, 1, 6. Pokud definujete konfiguraci Upstart pro svou aplikaci, definujete ji v této sekci. Blok respawn instruuje Upstart, co má dělat po havárii. O tom budeme diskutovat v další části, takže nechte soubor otevřený v editoru nano.
Krok 3: Konfigurace služby (MySQL) pro automatické spuštění po havárii
Direktiva respawn v souboru /etc/init/mysql.conf instruuje Upstart, aby po havárii restartoval službu MySQL.
Direktiva respawn limit instruuje Upstart, kolikrát by se měl pokusit restartovat zhavarovanou službu MySQL v intervalu určeném v sekundách. První argument (2) udává počet pokusů. Druhý argument (5) udává interval v sekundách. Pokud se Upstartu po havárii nepodaří v rámci tohoto limitu službu MySQL znovu spustit, zůstane zastavená. Toto chování je navrženo tak, aby chránilo stabilitu systému v případě, že se neustále pokouší restartovat dokola krachující služby. Nyní můžete editor zavřít bez provádění jakýchkoli změn.
Pojďme otestovat, zda se MySQL po havárii automaticky znovu spustí. Zadáním následujícího příkazu zkontrolujte stav a získejte číslo procesu služby MySQL:
|
1 |
sudo initctl status mysql |
Výstup by měl vypadat nějak takto. Poznamenejte si číslo procesu, protože ho použijeme později:
|
1 |
mysql start/running, process 738 |
Dále zadejte následující příkaz k ukončení (kill) procesu. Tím se simuluje havárie. Nahraďte číslem procesu, které jste získali v předchozím příkazu:
|
1 |
sudo kill -9 7738 |
Znovu zkontrolujte stav MySQL zadáním následujícího příkazu:
|
1 |
sudo initctl status mysql |
Mělo by znovu běžet, ale pravděpodobně s jiným číslem procesu:
|
1 |
mysql start/running, process 1428 |
K tomu dochází kvůli direktivě respawn v /etc/init/mysql.conf soubor. Zajišťuje, že v případě jakéhokoli selhání systému se MySQL automaticky spustí. Vaše aplikace, která závisí na databázi MySQL, tak bude nadále fungovat podle očekávání.
Automatické spouštění služeb pomocí Systemd
Systemd je inicializační systém, který se nachází ve většině nejnovějších distribucí Linuxu. Pravděpodobně ho použijete, když spustíte novou VPS. Poprvé byl představen v Fedora. Je součástí RHEL 7 a jeho derivátů, jako je CentOS 7. Od Ubuntu 15.04 najdete Systemd nativně. Systemd je zpětně kompatibilní s inicializačními skripty a příkazy System V. Proto by měla jakákoli služba System V fungovat i pod Systemd. Většina příkazů používaných v System V a Upstart byla upravena tak, aby fungovala se Systemd.
Se Systemd se většina serverových aplikací, jako je MySQL a Nginx, spustí automaticky po restartu nebo vypnutí, aniž byste museli cokoli měnit. Pro své vlastní aplikace musíte vytvořit vlastní init skripty pro automatické restartování služeb.
Podrobnější informace o Systemd naleznete v našem návodu, jak spravovat služby a jednotky Systemd pomocí Systemctl.
Kontrolní seznam pro automatické spuštění v Systemd
Zde je několik referenčních konfigurací, které můžete zkontrolovat, abyste se ujistili, že je vaše služba nakonfigurována pro automatické spouštění se Systemd.
- Služba musí mít funkční init skript Systemd umístěný v /etc/systemd/system/multi-user.target.wants/serviceName.service. ServiceName je skutečný název služby, kterou konfigurujete.
- Příkaz pro povolení služby je:
|
1 |
sudo systemctl enable serviceName.service |
- Příkaz vytvoří symbolický odkaz v adresáři /etc/systemd/system/multi-user.target.wants/, který může vypadat podobně jako:
|
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 |
- S tímto symbolickým odkazem na svém místě budete mít povoleno automatické restartování po spuštění.
- Chcete-li změny aktivovat, znovu načtěte systémového démona a poté restartujte službu pomocí následujících příkazů:
|
1 2 3 |
sudo systemctl daemon-reload sudo systemctl restart serviceName.service |
- Chcete-li otestovat, zda vaše konfigurace spustí službu po restartu, můžete systém restartovat:
|
1 |
sudo reboot |
- Po restartu systému vyhledejte číslo procesu pomocí příkazu:
|
1 |
ps -ef | grep serviceName |
- Poznamenejte si číslo procesu a ukončete jej pomocí příkazu:
|
1 |
sudo kill -9 process_number |
- Počkejte několik sekund a znovu vyhledejte službu, abyste ověřili, že opět běží.
Praktická konfigurace Systemd se skutečnou službou
V této části se pokusíme nakonfigurovat službu MySQL na virtuálním stroji s Ubuntu 20.04.
Krok 1: Připojte se k vašemu virtuálnímu privátnímu serveru (Ubuntu 20.04 nebo CentOS 7 x64)
Přihlaste se ke své VPS nebo ji vytvořte v panelu Cloudsigma a připojte se pomocí ssh nebo putty, pokud používáte Windows. Pro tuto část návodu používáme server Ubuntu 20.04. Stejné příkazy lze použít i pro CentOS 7. Ujistěte se, že používáte uživatele bez oprávnění root s právy sudo.
Krok 2: Nainstalujte MySQL (službu, kterou konfigurujeme)
Nejprve aktualizujte systém:
|
1 |
sudo apt update |
Poté můžete nainstalovat server MySQL pomocí příkazu:
|
1 |
sudo apt install mysql-server –y |
Poté spusťte následující příkaz pro zabezpečení MySQL:
|
1 |
sudo mysql_secure_installation |
Skript se vás zeptá, zda chcete nastavit komponentu VALIDATE PASSWORD, nebo stisknutím libovolného písmene pokračovat bez povolení této komponenty. Kliknutím na tento odkaz se dozvíte více o komponentě pro ověřování hesla v MySQL.
Stisknutím klávesy 1 tuto možnost povolte a poté stisknutím klávesy 1 zvolte střední úroveň. Zadejte silné heslo: kombinaci velkých a malých písmen, speciálních znaků a číslic. Potvrďte heslo a potvrďte výzvu, která se vás zeptá, zda chcete použít zadané heslo jako heslo uživatele root. U ostatních výzev stiskněte y pro jejich přijetí, stejně jako v předchozích částech. Nakonec vymažte oprávnění (flush privileges) pro MySQL, aby se změny projevily.
Krok 3: Konfigurace automatického spouštění MySQL po restartu
MySQL je nakonfigurováno tak, aby se spouštělo po restartu, takže nemusíte provádět žádné změny. Můžeme však použít konfigurační soubory MySQL, abychom se naučili, jak konfigurovat naše vlastní soubory.
Nejprve zkontrolujte, zda byla služba MySQL nakonfigurována pro spuštění při startu systému. Zadejte následující příkaz (všimněte si, že v systému CentOS se služba MySQL nazývá mysqld):
|
1 |
sudo systemctl is-enabled mysql.service |
Zde je výstup:

Dále restartujte VPS zadáním následujícího příkazu:
|
1 |
sudo reboot |
Připojte se zpět pomocí ssh a zadejte následující příkaz pro kontrolu stavu služby MySQL:
|
1 |
sudo systemctl status mysql.service |
Měli byste získat výstup podobný tomu na snímku obrazovky níže:

Chcete-li službu MySQL zakázat, zadejte následující příkaz:
|
1 |
sudo systemctl disable mysql.service |
Výstup indikuje, že symbolické odkazy na službu MySQL byly ze Systemd odstraněny:

Zda je služba povolena v inicializačním systému Systemd, můžete otestovat zadáním následujícího příkazu:
|
1 |
sudo systemctl is-enabled mysql.service |
Výstup ukáže, že je zakázána. Pokud restartujete systém, MySQL se při startu nespustí:
![]()
Službu povolíte zadáním následujícího příkazu:
|
1 |
sudo systemctl enable mysql.service |
Výstup ukazuje symbolický odkaz na službu MySQL vytvořený v inicializaci Systemd:

Při restartu se služba MySQL spustí automaticky.
Krok 4: Konfigurace automatického spouštění MySQL po pádu
MySQL je nakonfigurováno tak, aby se po pádu automaticky restartovalo. Podívejme se, jak je tato konfigurace implementována v Systemd. Systemd používá pro konfiguraci unit soubory. Zadáním následujícího příkazu otevřete konfigurační soubor mysql.service v editoru nano:
|
1 |
sudo nano /etc/systemd/system/multi-user.target.wants/mysql.service |
Výstup vypadá takto:

Zajímá nás direktiva Restart. Podle definice se MySQL restartuje, pokud dojde k selhání. Direktiva Restart definuje, co by se mělo v Systemd stát, stejně jako direktiva Respawn v Upstart.
Ne všechny služby budou mít tuto direktivu. Chcete-li povolit restartování služby po pádu, můžete vždy přidat direktivu Restart pod blok [Service] konfiguračního unit souboru služby. Pokud záhlaví [Service] neexistuje, přidejte jej. Nyní ukončete editor stisknutím Ctrl + X.
Chcete-li emulovat pád, najděte ID procesu MySQL zadáním následujícího příkazu:
|
1 |
sudo systemctl status mysql.service |
Příkaz pro kontrolu stavu zobrazí ID procesu, v našem případě je to 3555:

Zadáním následujícího příkazu proces ukončíte. Nahraďte jej ID procesu, které jste získali na svém serveru:
|
1 |
sudo kill -9 3555 |
Zadáním následujícího příkazu zkontrolujte stav:
|
1 |
sudo systemctl status mysql.service |
Výstup ukazuje, že MySQL běží, ale s novým ID procesu. To znamená, že se po pádu automaticky restartovalo:

Závěr
V tomto návodu jsme vás seznámili se třemi inicializačními systémy v distribucích Linuxu: System V, Upstart a Systemd. Naučili jsme se, jak použít jakýkoli z těchto init systémů ke konfiguraci vašich nepřetržitě běžících služeb pro automatické spuštění po restartu nebo pádu systému. To by pro vás mělo sloužit jako výchozí bod, když potřebujete nakonfigurovat své služby. První část této série byla převážně praktickým návodem. druhá část je více teoretická a obsahuje více podrobností o tom, co jsme dělali v první části. Své testovací servery zatím nemažte, protože je využijete i ve druhé části.
Příjemnou práci s počítačem!
Komentáře
Zatím žádné komentáře. Buďte první.