Introduzione
In informatica, le cose non vanno sempre come previsto. Spesso, i crash di sistema imprevisti spingono gli amministratori di sistema ad avviare riavvii e a far ripartire i singoli servizi. Capire e riavviare ogni servizio necessario al funzionamento dell'applicazione dopo un crash di sistema o un riavvio può essere noioso. In questa prima parte del tutorial in due parti, vi mostreremo come configurare i servizi per l'avvio automatico dopo un crash di sistema o un riavvio del server con esempi pratici. La seconda parte coprirà le informazioni teoriche su ciò che abbiamo ottenuto nella prima parte.
Useremo il servizio di database MySQL per gli esempi pratici. Tuttavia, gli stessi principi si applicano ad altri processi che compongono un server completo come Nginx, Apache, Redis, o altre applicazioni. Potete consultare i nostri tutorial su come installare MySQL, Nginx, e Apache.
Nelle distribuzioni Linux, ci sono tre principali sistemi di inizializzazione (init), a seconda della distribuzione in esecuzione. Alcune distribuzioni possono essere fornite con due o più sistemi init, come descritto di seguito:
- System V – un sistema init più vecchio che si trova in distribuzioni più datate come:
- Ubuntu 9.04 e precedenti
- CentOS 5 e precedenti
- Debian 6 e precedenti
- Upstart – utilizzato in distribuzioni precedenti come:
- CentOS 6
- Ubuntu da 9.10 a Ubuntu 14.10 e Ubuntu 14.04
- Systemd – utilizzato nelle distribuzioni più recenti come:
- CentOS 7
- Debian 7 e 8.
- Ubuntu 15.04 e successive
Contesto
È comune per i sistemi operativi, e in particolare per i sistemi Linux e Unix, avere processi e servizi in esecuzione in background. Tali servizi potrebbero essere stati forniti con il software del sistema operativo. Alcuni potrebbero essere stati inclusi con le applicazioni utente installate.
I servizi del sistema operativo includono:
- sshd – È il demone che consente le connessioni remote.
- cupsd – È il demone che controlla la stampa.
I servizi delle applicazioni installate includono:
- httpd/apache2 – Un servizio fornito con il server web Apache2.
- nginx – Un servizio fornito con il server web Nginx.
Per garantire che le nostre applicazioni web, database, server di posta, etc. siano accessibili, tali servizi devono essere eseguiti continuamente. Se siete amministratori di sistema o sviluppatori di app curiosi, vorrete assicurarvi che tali servizi funzionino continuamente e, nell'eventualità sfortunata di un crash di sistema, si avviino automaticamente dopo il riavvio del sistema. Ed è esattamente ciò che impareremo in questo tutorial pratico.
Sebbene l'impostazione di avvisi e il monitoraggio continuo della distribuzione Linux siano fondamentali, alcuni servizi Linux possono autoripararsi se ben configurati, grazie ai sistemi init che gestiscono i servizi.
Nelle distribuzioni Linux, esistono modalità operative che implementano l'inizializzazione del sistema chiamate runlevel. Affinché un servizio si avvii automaticamente, deve essere aggiunto a un runlevel. Ogni sistema simile a Linux e Unix ha quattro runlevel comuni, come elencato di seguito:
- 0 – Il runlevel 0 indica lo spegnimento del sistema.
- 1 – Il runlevel 1 indica la modalità utente singolo, di ripristino.
- 2, 3, 4 – Questi runlevel indicano gli stati in cui il sistema è stato avviato in modalità testo, multi-utente e con rete abilitata.
- 5 – Il runlevel 5 indica la modalità grafica, multi-utente e con rete abilitata.
- 6 – Il runlevel 6 indica il riavvio del sistema.
In questo tutorial, imparerete come configurare un servizio Linux per l'avvio automatico al riavvio del sistema utilizzando le tre diverse modalità init spiegate in precedenza: System V, Upstart, and Systemd.
Prerequisiti
Questo tutorial pratico presuppone che abbiate un VPS Linux da utilizzare per seguire i passaggi. Potete approfittare del periodo di prova gratuito su Cloudsigma e avviare alcuni server per provare i comandi. Potete seguire il nostro tutorial passo-passo su come configurare i vostri server Ubuntu.
I server creati in questo tutorial servono esclusivamente per seguire le esercitazioni pratiche e non dovreste provare i comandi su un server di produzione, poiché molti servizi verrebbero interrotti.
Alcune delle distribuzioni di cui avrete bisogno:
- Ubuntu 9.04 e precedenti, o Debian 6 x64 (saranno utilizzati per dimostrare il sistema init System V)
- Ubuntu 14.04 x64 (sarà utilizzato per dimostrare Upstart)
- CentOS 7 x64 (verrà utilizzato per dimostrare systemd).
Assicurati di aver configurato un utente non root con privilegi sudo. Puoi dare un'occhiata al nostro tutorial sulla configurazione del file sudoers qui.
Utilizzo di System V
Questo è il sistema di init più vecchio che veniva utilizzato nelle versioni precedenti di distribuzioni Linux come:
- Debian 6 e versioni precedenti
- CentOS 5 e versioni precedenti
- Ubuntu 9.04 e versioni precedenti
La maggior parte delle applicazioni server installabili come MySQL e Nginx viene fornita con script di init salvati nella directory /etc/init.d per impostazione predefinita. Questi script consentono loro di avviarsi dopo un riavvio. Tuttavia, potrebbero non essere configurati per avviarsi automaticamente dopo un arresto anomalo del sistema.
Lista di controllo per l'avvio automatico per System V
Il primo passo consiste nel verificare la disponibilità di uno script di init Bash funzionante nella directory /etc/init.d/service. Per abilitare il servizio, nelle distribuzioni Debian o Ubuntu, utilizza il comando update-rc.d, in un sistema CentOS, utilizza chkconfig. Sostituisci con il nome effettivo del tuo servizio:
|
1 |
sudo update-rc.d service enable |
Il comando precedente crea un symlink nella directory /etc/rc2.d che assomiglia all'output seguente. Non crearlo manualmente poiché viene generato automaticamente:
|
1 |
lrwxrwxrwx 1 root root 20 Dec 10 07:09 S02mysql -> ../init.d/service |
In fondo al file /etc/inittab aggiungi una riga respawn come mostrato nell'esempio generico seguente. Ricorda di sostituirla con il percorso effettivo dello script di avvio della tua applicazione:
|
1 |
id:2345:respawn:/bin/sh /path/to/your-application/startup |
Inserisci i seguenti comandi per arrestare e avviare il servizio:
|
1 2 |
sudo service service-name stop sudo service service-name start |
Successivamente, riavvia il server:
|
1 |
sudo reboot |
Come testare le modifiche?
Dopo aver riavviato il server, verifica che il servizio sia attivo cercando il numero del processo tramite il comando:
|
1 |
ps -ef | grep service-name |
Termina il processo utilizzando il comando:
|
1 |
sudo kill -9 process_number |
Dopo cinque minuti, verifica che il servizio sia attivo e funzionante.
Configurazione pratica di System V con un servizio reale
Nei passaggi seguenti, proveremo una vera applicazione server come MySQL. Dovresti avere accesso a una macchina virtuale Debian 6. Con un account che dispone di privilegi sudo, connettiti ad essa tramite SSH o putty se ti trovi su un desktop Windows.
Passo 1: Installa MySQL
Inserisci il seguente comando per installare MySQL:
|
1 |
sudo apt-get install mysql-server -y |
All'inizio dell'installazione, ti verrà richiesta una password di root. Quindi, inserisci una password a tua scelta e confermala. Attendi il completamento dell'installazione, quindi inserisci il seguente comando per iniziare a mettere in sicurezza MySQL:
|
1 |
mysql_secure_installation |
Ti verrà richiesta la password di root inserita in precedenza. Premi N per mantenerla. Successivamente, premi Y per accettare le richieste successive per rimuovere gli utenti anonimi, disabilitare l'accesso root remoto e rimuovere il database di test. Infine, accetta di ricaricare la tabella dei privilegi affinché le modifiche abbiano effetto automaticamente.
Questo completa l'installazione di MySQL. Puoi verificare se il servizio è in esecuzione inserendo il seguente comando:
|
1 |
service mysql status |
Passo 2: Configura MySQL per l'avvio automatico dopo il riavvio
MySQL è configurato per impostazione predefinita per avviarsi dopo un riavvio del sistema. Puoi trovare il symlink allo script di inizializzazione di MySQL nella directory /etc/rc2.d. Questi symlink non vengono creati manualmente. Puoi utilizzare il comando update-rc.d per abilitare e disabilitare i servizi.
Inserisci il seguente comando per elencare i contenuti della directory:
|
1 |
ls -l /etc/rc2.d |
Controlla se riesci a notare il symlink allo script di init di MySQL:
|
1 |
lrwxrwxrwx 1 root root 15 Dec 2 10:42 S01mysql -> ../init.d/mysql |
La S è importante, perché finché riesci a vedere una S script nella directory del runlevel predefinito per il servizio, il sistema init avvierà il servizio all'avvio del server. Per verificare che MySQL si avvii automaticamente dopo il riavvio, inserisci il seguente comando per riavviare il sistema:
|
1 |
sudo reboot |
La connessione ssh si interrompe durante il riavvio. Attendi un minuto o due e connettiti di nuovo. Esegui il seguente comando per verificare se il servizio è in esecuzione:
|
1 |
service mysql status |
L'output indicherà che il servizio è in esecuzione. Ciò significa che si è avviato automaticamente dopo il riavvio. Per i servizi che non sono configurati per l'avvio automatico, dovrai configurarli manualmente.
Possiamo disabilitare il servizio MySQL e riavviare il sistema per verificare se si avvia automaticamente. Nei sistemi Debian e Ubuntu, puoi utilizzare il comando update-rc.d per aggiungere o rimuovere servizi dal sistema init. Inserisci il seguente comando per disabilitare il servizio MySQL:
|
1 |
sudo update-rc.d mysql disable |
Riavvia il sistema e connettiti di nuovo tramite ssh. Prova a connetterti a MySQL utilizzando il seguente comando:
|
1 |
mysql -u root -p |
Riceverai un errore di MySQL simile a:
|
1 |
ERROR 2002 (HY000): Can't connect to local MySQL server |
Quindi, inserisci il seguente comando per riabilitare il servizio:
|
1 |
sudo update-rc.d mysql enable |
Se ti trovi su una distribuzione CentOS, il comando sarà:
|
1 |
sudo chkconfig mysql enable |
Poiché MySQL inizialmente non si avviava, devi avviarlo. Inserisci il seguente comando:
|
1 |
sudo service mysql start |
Passo 3: Configurare un servizio (MySQL) per l'avvio automatico dopo un arresto anomalo del sistema
System V non avvierà automaticamente un processo dopo un arresto anomalo. Possiamo simulare un arresto anomalo del sistema trovando l'ID del processo MySQL e terminandolo. Inserisci il seguente comando per trovare l'ID del processo MySQL:
|
1 |
ps -ef | grep mysql |
Dall'output, trova i processi MySQL. I processi principali che eseguono MySQL sono mysqld_safe e mysqld. Prendi nota dei loro ID di processo (sono numeri) e usa i seguenti comandi per terminarli:
|
1 2 |
sudo kill -9 mysqldsafe_number sudo kill -9 mysqld_number |
Verifica lo stato del servizio MySQL utilizzando il comando:
|
1 |
sudo service mysql status |
L'output indicherà che MySQL si è arrestato. Possiamo riavviarlo manualmente utilizzando il comando di avvio del servizio. Tuttavia, desideriamo un processo automatico. Per ottenere questo comportamento automatico, dobbiamo modificare il file /etc/inittab. Questo è il primo file che System V init legge all'avvio. Il file /etc/inittab contiene istruzioni su come deve comportarsi un processo in caso di arresto anomalo. Se configurato correttamente, riavvia nuovamente il sistema in caso di arresto anomalo. Nel nostro caso, vogliamo assicurarci che MySQL sia uno di questi servizi.
Il file /etc/inittab è estremamente cruciale per una distribuzione Linux. Determina se il sistema si riavvierà o meno. Se commetti un errore nei comandi, il sistema potrebbe non avviarsi al riavvio. Come abbiamo indicato, speriamo che tu stia provando questi comandi solo in un ambiente server di test e non in un ambiente di produzione.
Innanzitutto, crea una copia del file prima di iniziare a modificarlo:
|
1 |
sudo cp /etc/inittab /etc/inittab.original |
Successivamente, apri il file usando nano:
|
1 |
sudo nano /etc/inittab |
Scorri fino alla fine del file e aggiungi il seguente frammento di codice:
|
1 |
ms:2345:respawn:/bin/sh /usr/bin/mysqld_safe |
Il comando precedente riavvia il processo mysql_safe dopo un arresto anomalo del sistema. Ha quattro campi separati da due punti come spiegato di seguito:
- ms: Specifica un ID per il processo.
- 2345: Specifica i runlevel a cui si applica il comando. In questo caso: runlevel 2, 3, 4, 5.
- respawn: Specifica l'azione. In questo caso, stiamo rigenerando o riavviando il processo.
- /bin/sh /usr/bin/mysqld_safe: L'ultima parte definisce il processo – il comando che viene eseguito per riavviare il processo.
Ora premi Ctrl + O e Invio per salvare il file. Quindi, premi Ctrl + X per chiudere l'editor. Inserisci il seguente comando per avviare il servizio:
|
1 |
sudo service mysql start |
Riavvia il server, quindi esegui i comandi spiegati in precedenza per trovare il numero del processo. Successivamente, termina i processi, a partire dal comando ps -ef | grep mysql. Attendi qualche minuto e inserisci il seguente comando per verificare lo stato di MySQL:
|
1 |
sudo service mysql status |
L'output dovrebbe indicare che il servizio MySQL è attivo e funzionante, il che significa che è stato in grado di riavviarsi dopo un arresto anomalo. Puoi seguire lo stesso processo per altri servizi sul tuo server.
Avvio automatico dei servizi con Upstart
Upstart è un altro sistema di init che è stato inizialmente introdotto in Ubuntu 6 e successivamente è diventato quello predefinito in Ubuntu 9.10. Anche RHEL 6 e i suoi derivati, e Chrome OS di Google utilizzano il sistema di init Upstart. Per i passaggi di questa sezione, dovresti avere un server che esegue una delle seguenti distribuzioni:
- Da Ubuntu 9.10 a Ubuntu 14.10, e la versione LTS di Ubuntu, ovvero Ubuntu 14.04.
- CentOS 6
Vediamo come configurare i file di Upstart per avviare automaticamente i servizi del server in caso di riavvii o arresti anomali del sistema. Upstart utilizza file di configurazione memorizzati nella directory /etc/init per controllare i servizi in una distribuzione Linux. Le versioni più recenti delle applicazioni server come MySQL e Nginx installano i propri script di init nella directory /etc/init . Pertanto, si avvieranno dopo il riavvio e dopo un arresto anomalo del sistema senza che tu debba fare nulla.
Lista di controllo per l'avvio automatico con Upstart
Ecco alcune configurazioni di riferimento da verificare per assicurarsi che il servizio sia configurato per l'avvio automatico.
- Assicurati che il servizio abbia uno script di init nella directory /etc/init/service_name.conf – service_name che corrisponde al nome effettivo del tuo servizio specifico. Dovresti verificare la presenza delle seguenti due righe nel /etc/init/service_name.conf file:
- Una riga contenente qualcosa come start on runlevel [2345]. Indica che il servizio verrà avviato al riavvio del sistema.
- Una riga contenente qualcosa come respawn. Indica che il servizio verrà rigenerato/riavviato dopo un arresto anomalo del sistema.
- Assicurati che non ci sia alcun file di override del servizio nella directory: /etc/init/service_name.override. A meno che tu o un altro amministratore di sistema non l'abbiate creato in precedenza.
- Inserisci i seguenti comandi per arrestare e avviare il servizio:
|
1 2 |
sudo initctl stop service_name sudo initctl start service_name |
- Riavvia il sistema e riconnettiti dopo pochi minuti. Ora, esegui alcuni test per vedere se tutto funziona
- Dopo il riavvio, verifica che il servizio sia attivo e funzionante. Inserisci il seguente comando per cercare il numero del processo, sostituendo service_name con il nome effettivo del servizio che stai testando:
|
1 |
ps -ef | grep service_name |
- Una volta ottenuto il numero del processo, inserisci il seguente comando per terminare il processo:
|
1 |
sudo kill -9 process_number |
- Attendi qualche secondo e verifica nuovamente che il processo sia attivo e funzionante.
Configurazione pratica di Upstart con un servizio reale
Nella prossima sezione, cercheremo di dimostrare come utilizzare Upstart con un servizio reale. Eseguiremo i test su un server virtuale Ubuntu 14.04 con MySQL como servizio. Connettiti al tuo server di test Ubuntu 14.04 usando ssh o putty se sei su Windows. Come di norma, dovresti utilizzare un utente non root con privilegi sudo. Una volta effettuato l'accesso, possiamo iniziare i passaggi:
Passo 1: Installa MySQL
Ricorda sempre di aggiornare i pacchetti prima di installare qualsiasi nuovo software:
|
1 |
sudo apt-get update |
Ora, inserisci il seguente comando per installare il server MySQL:
|
1 |
sudo apt-get install mysql-server –y |
Crea una password di root quando richiesto. Attendi il completamento dell'installazione ed esegui il seguente comando per iniziare a mettere in sicurezza la tua installazione di MySQL:
|
1 |
mysql_secure_installation |
Segui le istruzioni, come hai fatto nella sezione precedente. Quindi, svuota i privilegi affinché le modifiche abbiano effetto immediato.
Passo 2: Configurare un servizio (MySQL) per l'avvio automatico dopo un riavvio del sistema
MySQL è impostato per avviarsi automaticamente dopo un riavvio. Stiamo solo guardando i suoi file di configurazione per imparare come configurare le nostre applicazioni personalizzate per avviarsi anch'esse automaticamente dopo un riavvio. Il servizio MySQL è stato avviato automaticamente dopo l'installazione. Tuttavia, confermiamo che sia in esecuzione inserendo il seguente comando:
|
1 |
sudo initctl status mysql |
Dovresti vedere un output che indica che il servizio MySQL è in esecuzione, qualcosa del tipo:
|
1 |
mysql start/running, process 2553 |
Riavvia il server e accedi nuovamente. Inserisci di nuovo il seguente comando per verificare che sia in esecuzione:
|
1 |
sudo initctl status mysql |
L'output indicherà che MySQL è in esecuzione, il che significa che è stato avviato automaticamente dopo il riavvio. In questo caso, non è necessario modificare nulla. Tuttavia, questo comportamento potrebbe non essere lo stesso per altre applicazioni. Ti starai chiedendo come il sistema di inizializzazione Upstart sappia che deve avviare automaticamente MySQL dopo il riavvio. MySQL installa il suo file di configurazione di avvio Upstart nella posizione /etc/init/mysql.conf. I file Upstart non sono script di shell, ma file di testo con blocchi di script per gli eventi pre-start e post-start. I blocchi istruiscono il sistema Upstart su cosa eseguire quando il processo MySQLd si sta avviando o quando è già stato avviato.
Inserisci il seguente comando per aprire il file nell'editor con nano:
|
1 |
sudo nano /etc/init/mysql.conf |
L'output del file potrebbe apparire così:
|
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 |
Come si può vedere, il blocco start istruisce MySQL ad avviarsi sui runlevel 2,3,4,5 e non 0,1,6. Se stai definendo una configurazione Upstart per la tua applicazione, la definirai in questa sezione. Il blocco respawn istruisce Upstart su cosa fare dopo un arresto anomalo. Ne parleremo nella prossima sezione, quindi mantieni il file aperto nell'editor nano.
Passo 3: Configurare un servizio (MySQL) per l'avvio automatico dopo un arresto anomalo
La direttiva respawn nel file /etc/init/mysql.conf istruisce Upstart a riavviare il servizio MySQL dopo un arresto anomalo.
La direttiva respawn limit istruisce Upstart su quante volte dovrebbe tentare di riavviare il servizio MySQL dopo un arresto anomalo in un intervallo specificato in secondi. Il primo argomento, (2) indica il numero di tentativi. Il second argomento, (5) indica l'intervallo in secondi. Se dopo un arresto anomalo, Upstart non riesce a riavviare il servizio MySQL entro la soglia stabilita, questo rimarrà arrestato. Questo comportamento è progettato per evitare che la stabilità del sistema venga compromessa nel caso in cui continui a tentare di riavviare servizi che si arrestano continuamente in modo anomalo. Ora puoi chiudere l'editor senza apportare modifiche.
Verifichiamo se MySQL si riavvia automaticamente dopo un arresto anomalo. Inserisci il seguente comando per verificare lo stato e ottenere il numero di processo del servizio MySQL:
|
1 |
sudo initctl status mysql |
L'output dovrebbe essere simile a questo. Prendi nota del numero di processo poiché lo useremo in seguito:
|
1 |
mysql start/running, process 738 |
Successivamente, inserisci il seguente comando per terminare il processo. Questo emula un arresto anomalo. Sostituisci con il numero di processo ottenuto nel comando precedente:
|
1 |
sudo kill -9 7738 |
Verifica nuovamente lo stato di MySQL inserendo il seguente comando:
|
1 |
sudo initctl status mysql |
Dovrebbe essere nuovamente in esecuzione, ma probabilmente con un numero di processo diverso:
|
1 |
mysql start/running, process 1428 |
Questo accade a causa della direttiva respawn nel /etc/init/mysql.conf file. Garantisce che, in caso di guasto del sistema, MySQL si avvierà automaticamente. Di conseguenza, la tua applicazione che dipende da un database MySQL continuerà a funzionare come previsto.
Avvio automatico dei servizi con Systemd
Systemd è un sistema di inizializzazione presente nella maggior parte delle distribuzioni Linux recenti. È probabile che sia quello che utilizzerai quando crei un nuovo VPS. È stato introdotto per la prima volta in Fedora. Viene fornito con RHEL 7 e i suoi derivati come CentOS 7. A partire da Ubuntu 15.04, troverai Systemd nativamente. Systemd è retrocompatibile con gli script e i comandi di inizializzazione di System V. Pertanto, qualsiasi servizio System V dovrebbe funzionare sotto Systemd. La maggior parte dei comandi utilizzati in System V e Upstart sono stati modificati per funzionare con Systemd.
Con Systemd, la maggior parte delle applicazioni server come MySQL e Nginx si avvierà automaticamente dopo un riavvio o uno spegnimento, senza che tu debba modificare nulla. Per le tue app personalizzate, devi creare i tuoi script di inizializzazione per riavviare automaticamente i servizi.
Per informazioni più approfondite su Systemd, consulta il nostro tutorial su come gestire i servizi e le unità di Systemd con Systemctl.
Lista di controllo per l'avvio automatico con Systemd
Ecco alcune configurazioni di riferimento da verificare per assicurarsi che il servizio sia configurato per avviarsi automaticamente con Systemd.
- Il servizio deve avere uno script di inizializzazione Systemd funzionante situato in /etc/systemd/system/multi-user.target.wants/serviceName.service. ServiceName è il nome effettivo del servizio che stai configurando.
- Il comando per abilitare il servizio è:
|
1 |
sudo systemctl enable serviceName.service |
- Il comando crea un collegamento simbolico (symlink) nella directory /etc/systemd/system/multi-user.target.wants/ che potrebbe apparire simile a:
|
1 |
lrwxrwxrwx 1 root root 11 Dic 1 04:43 /etc/systemd/system/multi-user.target.wants/serviceName.service -> /usr/lib/systemd/system/serviceName.service |
- Con quel collegamento simbolico attivo, avrai abilitato il riavvio automatico dopo l'avvio.
- Per attivare le modifiche, ricarica il demone di sistema e poi riavvia il servizio utilizzando i seguenti comandi:
|
1 2 3 |
sudo systemctl daemon-reload sudo systemctl restart serviceName.service |
- Per verificare se le tue configurazioni avvieranno il servizio dopo un riavvio, puoi riavviare il sistema:
|
1 |
sudo reboot |
- Al riavvio del sistema, cerca il numero del processo utilizzando il comando:
|
1 |
ps -ef | grep serviceName |
- Prendi nota del numero del processo e terminalo utilizzando il comando:
|
1 |
sudo kill -9 process_number |
- Attendi qualche secondo e cerca nuovamente il servizio per verificare che sia stato ripristinato.
Configurazione pratica di Systemd con un servizio reale
In questa sezione, proveremo a configurare il servizio MySQL su una macchina virtuale Ubuntu 20.04.
Passo 1: Connettiti al tuo Virtual Private Server (Ubuntu 20.04 o CentOS 7 x64)
Accedi al tuo VPS o creane uno dal pannello Cloudsigma e connettiti usando ssh o putty se sei su Windows. Per questa sezione del tutorial stiamo utilizzando un server Ubuntu 20.04. Gli stessi comandi possono essere applicati a CentOS 7. Assicurati di utilizzare un utente non root con privilegi sudo.
Passo 2: Installa MySQL (il servizio che stiamo configurando)
Per prima cosa, aggiorna il tuo sistema:
|
1 |
sudo apt update |
Quindi, puoi installare il server MySQL utilizzando il comando:
|
1 |
sudo apt install mysql-server –y |
Successivamente, esegui il seguente comando per iniziare a mettere in sicurezza MySQL:
|
1 |
sudo mysql_secure_installation |
Lo script ti chiederà se desideri configurare il componente VALIDATE PASSWORD o premere un tasto qualsiasi per procedere senza abilitare il componente. Segui questo link per saperne di più sul componente di convalila della password di MySQL.
Premi 1 per abilitarlo e poi scegli il livello medio premendo 1. Inserisci una password complessa: una combinazione di maiuscole, minuscole, caratteri speciali e numeri. Conferma la password e conferma il prompt che ti chiede se desideri utilizzare la password inserita come password di root. Per tutti gli altri prompt, premi y per accettarli come hai fatto nelle sezioni precedenti. Infine, esegui il flush dei privilegi per MySQL per ricaricare le modifiche.
Passaggio 3: Configurare MySQL per l'avvio automatico dopo il riavvio
MySQL è configurato per avviarsi dopo un riavvio, quindi non c'è alcuna modifica da fare. Tuttavia, possiamo utilizzare i file di configurazione di MySQL per imparare a configurare i nostri file personalizzati.
Per prima cosa, verifica se il servizio MySQL è stato configurato per avviarsi all'avvio del sistema. Inserisci il seguente comando (nota che in CentOS il servizio MySQL si chiama mysqld):
|
1 |
sudo systemctl is-enabled mysql.service |
Ecco l'output:

Successivamente, riavvia il VPS inserendo il coyote comando:
|
1 |
sudo reboot |
Connettiti di nuovo tramite SSH e inserisci il seguente comando per verificare lo stato del servizio MySQL:
|
1 |
sudo systemctl status mysql.service |
Dovresti ottenere un output simile a quello nello screenshot qui sotto:

Per disabilitare il servizio MySQL, inserisci il seguente comando:
|
1 |
sudo systemctl disable mysql.service |
L'output indica che i symlink al servizio MySQL sono stati rimossi da Systemd:

Puoi verificare se il servizio è abilitato con il sistema di init Systemd inserendo il seguente comando:
|
1 |
sudo systemctl is-enabled mysql.service |
L'output mostrerà che è disabilitato. Se riavvii il sistema, MySQL non si avvierà all'avvio:
![]()
Abilita il servizio inserendo il seguente comando:
|
1 |
sudo systemctl enable mysql.service |
L'output mostra il symlink al servizio MySQL creato nell'init di Systemd:

Al riavvio, il servizio MySQL si avvierà automaticamente.
Passaggio 4: Configurare MySQL per l'avvio automatico dopo un crash
MySQL è configurato per riavviarsi automaticamente dopo un crash. Vediamo come questa configurazione è implementata in Systemd. Systemd utilizza i file unit per la configurazione. Inserisci il seguente comando per aprire il file di configurazione mysql.service in nano:
|
1 |
sudo nano /etc/systemd/system/multi-user.target.wants/mysql.service |
L'output si presenta così:

Ciò che ci interessa è la Restart direttiva. Come definito, MySQL si riavvierà in caso di errore. La direttiva Restart definisce cosa dovrebbe accadere in Systemd, proprio come la direttiva Respawn in Upstart.
Non tutti i servizi avranno questa direttiva. Per abilitare il riavvio di un servizio dopo un crash, puoi sempre aggiungere la direttiva Restart sotto il blocco [Service] del file unit di configurazione del servizio. Se l'intestazione [Service] non esiste, aggiungila. Ora, esci dall'editor premendo Ctrl + X.
Per emulare un crash, trova l'ID del processo MySQL inserendo il seguente comando:
|
1 |
sudo systemctl status mysql.service |
Il comando di controllo dello stato mostra un ID di processo, nel nostro caso è 3555:

Inserisci il seguente comando per terminare il processo. Sostituiscilo con l'ID del processo che hai ottenuto sul tuo server:
|
1 |
sudo kill -9 3555 |
Inserisci il seguente comando per verificare lo stato:
|
1 |
sudo systemctl status mysql.service |
L'output mostra che MySQL è in esecuzione, ma con un nuovo ID di processo. Ciò significa che è stato riavviato automaticamente dopo il crash:

Conclusione
In questo tutorial, ti abbiamo introdotto ai tre sistemi di inizializzazione nelle distribuzioni Linux: System V, Upstart e Systemd. Abbiamo imparato come utilizzare uno qualsiasi dei sistemi di init per configurare i tuoi servizi in esecuzione continua per l'avvio automatico dopo un riavvio o un crash del sistema. Questo dovrebbe servire come punto di partenza quando hai bisogno di configurare i tuoi servizi. La prima parte di questa serie è stata principalmente un tutorial pratico. La la seconda parte è più teorica e presenta maggiori dettagli su ciò che abbiamo fatto nella prima parte. Non eliminare ancora i tuoi server di test, poiché li userai anche nella seconda parte.
Buon computing!
Commenti
Ancora nessun commento. Scrivi il primo.