Introduzione
Sono già passati 2 giorni da quando è stata rilasciata la nuova versione del sistema operativo CentOS, ossia CentOS 8. E finora ci sono poche articoli online su come fare qualcosa in esso, perciò ho deciso di colmare questa lacuna. Inoltre, parlerò non solo di come installare questa coppia di programmi, ma anche di come vedo in generale l'installazione di Linux in un ambiente virtuale nel mondo moderno per compiti tipici, inclusa la partizione dei dischi e altro.
Ma all'inizio voglio raccontare brevemente perché vale la pena passare a questa versione da tutte le precedenti, e ci sono addirittura due motivi:
- php7! Nella versione precedente di CentOS si installava il «tradizionale» php5.4...
Va bene, se la prendiamo un po' più sul serio, molti pacchetti sono saltati diverse versioni contemporaneamente. Noi (i sostenitori dei sistemi operativi basati su redhat) finalmente siamo entrati, se non nel futuro, almeno nel presente. E i sostenitori di Ubuntu non rideranno più di noi e non ci punteranno più il dito, beh... almeno per un po' ;).
- Passaggio da yum a dnf. La principale differenza è che ora è ufficialmente supportato il lavoro con più versioni di pacchetti contemporaneamente. Nella mia esperienza, in questa ottava versione non mi è ancora mai servito, ma suona promettente.
Creazione di una macchina virtuale
I hypervisor sono diversi e non ho intenzione di indirizzare il lettore su uno specifico, parlerò dei principi generali.
Memoria
Per prima cosa... Per installare il sistema CentOS a partire dalla versione 7, sicuramente, e mi sembra fosse così anche nella 6 («ma non è sicuro»), è necessario almeno 2 GB di RAM. Quindi consiglio di allocare inizialmente questa quantità.
Ma se necessario, dopo l'installazione si può ridurre la quantità di memoria. Con 1 GB il sistema base funziona abbastanza bene, l'ho verificato.
Disco
Per una corretta installazione, si dovrebbe creare un disco virtuale di dimensioni comprese tra 20 e 30 GB. Questo sarà sufficiente per il sistema. E un secondo disco per i dati. Può essere aggiunto sia durante la creazione della macchina virtuale che in seguito. Di solito lo aggiungo dopo.
Processore
Con un solo core, il sistema base non rallenta. E dato che le risorse possono essere scalate liberamente, non vedo senso a dare di più durante l'installazione (a meno che non si conoscano perfettamente i requisiti e sia pigro di controllare di nuovo il configuratore).
Il resto può essere lasciato per lo più impostato su valori predefiniti.
In effetti, l'installazione
Dunque… Avviamo l'installer… Personalmente, da tempo installo questi servizi solo in forma di macchine virtuali, quindi non descriverò come scrivere l'immagine del distributore su una chiavetta USB — semplicemente monto l'ISO come disco CD nel mio hypervisor preferito, avvio e via.
L'installazione base procede in modo piuttosto tipico, mi soffermerò solo su alcuni punti.
Scelta della fonte
Da quando è stata rilasciata l'ottava versione, il mirror di Yandex è giù da un bel po'. Cioè, occasionalmente torna online, ma poi ricomincia a mostrare errori. Sono certo che il problema sia il carico eccessivo sul servizio. Pertanto, per indicare la fonte, mi è toccato, invece di inserire l'indirizzo abituale, andare , scegliere lì il mirror che preferisco e inserire manualmente l'indirizzo nella finestra dell'installer. Qui è importante ricordare che bisogna indicare il percorso alla cartella in cui si trova il catalogo repodata. Ad esempio, .
Partizionamento del disco
Questa questione è piuttosto religiosa, a mio avviso. Ogni amministratore ha la propria posizione al riguardo. Ma voglio comunque condividere il mio punto di vista sulla questione.
Sì, in linea di massima, si può dedicare tutto lo spazio alla radice e funzionerà, spesso anche piuttosto bene. Ma perché allora complicarsi la vita con diverse partizioni? — Le principali ragioni, secondo me, sono 2: quote e portabilità.
Ad esempio, se qualcosa va storto e si verificano errori nella partizione principale dei dati, è bene avere la possibilità di avviare comunque il sistema e intraprendere le misure di recupero. Quindi, personalmente, dedico una partizione separata per /boot. Qui risiedono il kernel e il bootloader. Di solito bastano 500 megabyte, ma in rari casi potrebbe servirne di più, considerando che ormai siamo abituati a misurare lo spazio in terabyte, dedico a questa partizione 2 GB. Ed è importante che non possa essere creata lvm.
Dopo c'è la radice del sistema. Per una normale installazione non mi è mai servito più di 4 GB per il sistema, ma durante le operazioni pianificate utilizzo spesso la cartella /tmp per estrarre i distributori, e non ha senso dedicarla a una partizione separata — nei sistemi moderni viene pulita automaticamente, quindi non si riempie. Quindi per la radice dedico 8 GB.
Swap… In termini pratici, non ha molta utilità. Se sul vostro server inizia a essere utilizzato il swap, oggi nel mondo reale ciò significa solo che il server deve avere più memoria RAM. Altrimenti, problemi di prestazioni sono garantiti (oppure qualche programma ha una "memoria che perde"). Pertanto, questa sezione è utile solo per la diagnostica. Quindi 2 GB è un'ottima cifra. Sì, indipendentemente da quanta memoria c'è sul server. Sì, ho letto tutti quegli articoli in cui si parla del rapporto tra la quantità di memoria e quella dello swap… IMHO, sono obsoleti. In 10 anni di pratica, non mi sono mai serviti. 15 anni fa li ho applicati, sì.
Se isolare "/home" in una partizione separata sia utile, IMHO ognuno può decidere per sé. Se qualcuno utilizzerà attivamente questa cartella sul server, è meglio isolarla. Se nessuno lo fa, non c'è motivo.
Inoltre, "/var". A mio avviso, dovrebbe essere isolato. Inizialmente è possibile limitarsi a 4 GB, e poi vedremo come va. E sì, per "come va" intendo che
- Primo, è sempre possibile montare un altro disco nella sottocartella "/var" (cosa che mostrerò più avanti con un esempio)
- Secondo, abbiamo lvm — è sempre possibile aggiungere. Generalmente si deve aggiungere quando iniziano a accumularsi troppi log. Ma non sono mai riuscito a prevedere in anticipo questa cifra, quindi inizio con 2 GB e poi vedo.
Lo spazio non allocato rimarrà libero nel gruppo dei volumi, può sempre essere utilizzato successivamente.
LVM
Tutti Le partizioni, tranne "/boot", ha senso farle in LVM. Sì, inclusa lo swap. Sì, secondo tutte le raccomandazioni lo swap dovrebbe essere all'inizio del disco, ma nel caso dell'LVM non si può in realtà determinare la sua posizione. Ma come ho già scritto sopra, il vostro sistema non dovrebbe può anche non utilizzare affatto lo swap. E quindi non ha alcuna importanza dove si trovi. E non viviamo nel '95, ve lo assicuro!
Inoltre, in LVM ci sono diverse entità di base con cui bisogna saper convivere:
- volume fisico
- gruppo di volumi
- volume logico
I volumi fisici sono riuniti in gruppi, e ogni volume fisico può appartenere a un solo gruppo, mentre un gruppo può trovarsi su più volumi fisici.
E i volumi logici si trovano ciascuno in un gruppo.
Ma... Abbiamo, cazzo, di nuovo il 21° secolo. E i server sono virtuali. Non ha senso applicare gli stessi meccanismi che venivano usati per quelli fisici. E per quelli virtuali è importante avere i dati separati dal sistema! Questo è molto importante, in particolare per la possibilità di un rapido trasferimento dei dati a un'altra virtual machine (ad esempio, durante il passaggio a un nuovo sistema operativo) e in generale per tutte le cose utili (backup separati per sezioni tramite strumenti dell'iper-v). Pertanto, un gruppo di volume è utilizzato per il sistema e sicuramente un altro è utilizzato per i dati! Questa separazione logica aiuta molto nella vita!
Se al momento della creazione della macchina virtuale hai creato solo un disco rigido virtuale, la configurazione finisce qui. Ma se sono due, non partizionare ancora il secondo.
Iniziamo l'installazione.
Post-installazione
Dunque, finalmente è stato avviato il sistema appena installato. La prima cosa da controllare è la connessione internet.
ping ya.ru C'è una risposta? — Ottimo, premiamo Ctrl-C.
Se non c'è — vai a configurare la rete, senza di essa non si va da nessuna parte, ma il mio articolo non parla di questo.
Ora, se non siamo ancora come root, accediamo come root, perché digitare di questo tipo il numero di comandi con sudo a me personalmente dà fastidio (e perdonatemi amministratori paranoici):
sudo -iOra, per prima cosa digitiamo
dnf -y updateE se leggi questo articolo nel 2019, probabilmente non succederà nulla, ma vale la pena provare.
Ora configureremo il disco rimanente
Supponiamo che la partizione con il sistema fosse xvda, quindi il disco con i dati sarà xvdb. OK.
La maggior parte dei consigli inizierà con le parole 'Avvia fdisk e crea una partizione...'
Ecco, questo è sbagliato!
Lo ripeto, perché è importante! In questo caso, per lavorare con LVM, che occupa un intero disco virtuale, è dannoso creare partizioni su di esso! In questa frase ogni parola è importante. Se lavoriamo senza LVM — è necessario. Se sul disco abbiamo, diciamo, sistema e dati — è necessario. Se per qualche motivo dobbiamo lasciare metà del disco vuoto — è necessario anche questo. Ma di solito tutte queste assunzioni sono puramente teoriche. Perché se decidiamo di aggiungere spazio alla partizione esistente, sarà più facile farlo proprio con questa configurazione. E la comodità nella gestione supera di gran lunga molte altre considerazioni, che ci porta intenzionalmente verso questa configurazione.
Il vantaggio consiste nel fatto che se desideri espandere la partizione dei dati, puoi semplicemente aggiungere spazio nella partizione virtuale, quindi espandere il gruppo usando vgextend e il gioco è fatto! In rari casi potrebbe essere necessario fare qualcos'altro, ma almeno non dovrai espandere all'inizio il volume logico, il che è già piacevole. Altrimenti, per espandere quel volume, si consiglia di eliminare prima quello esistente e poi crearne uno nuovo sopra… Questo non è molto piacevole e non può essere fatto mentre il sistema è in funzione, mentre l'espansione secondo lo scenario che ho descritto può essere effettuata
Dunque, creiamo un volume fisico, poi un gruppo di volumi che lo include e infine una partizione per il nostro server:
pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n www -L40G data
mke2fs -t ext4 /dev/mapper/data-www
Qui puoi indicare una «l» minuscola (e la dimensione in GB) al posto della grande «L» e allora invece di una dimensione assoluta puoi indicare una dimensione relativa, per esempio, per utilizzare la metà dello spazio libero attualmente disponibile nel gruppo di volumi, devi specificare "-l +50%FREE"
L'ultimo comando formatta la partizione nel file system ext4 (che finora nella mia esperienza ha mostrato la maggiore stabilità in caso di problemi, per cui lo preferisco).
Ora montiamo la partizione nel posto giusto. Per questo aggiungiamo la riga corretta in /etc/fstab:
/dev/mapper/data-www /var/www ext4 defaults 1 2E digitiamo
mount /var/wwwSe compare un errore, suoniamo l'allerta! Perché significa che abbiamo un errore in /etc/fstab. E che al prossimo riavvio avremo grossi problemi. Il sistema potrebbe non avviarsi affatto, il che è spesso molto triste per i servizi cloud. Pertanto, dobbiamo correggere prontamente l'ultima riga aggiunta, oppure eliminarla completamente! È per questo che non abbiamo scritto manualmente il comando di montaggio — altrimenti non avremmo avuto questa splendida opportunità di verificare la configurazione proprio adesso.
Ora installiamo tutto ciò che volevamo e apriamo le porte per il web:
dnf groupinstall "Development Tools"
dnf -y install httpd @nodejs @redis php
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent
Se si desidera, è possibile posizionare anche il DB qui, ma personalmente cerco di tenerlo separato dal server web. Anche se averlo vicino è più veloce, sì. La velocità degli adattatori di rete virtuali è solitamente intorno a un gigabit, e nel caso in cui stiate lavorando sulla stessa macchina, le richieste avvengono quasi istantaneamente. Tuttavia, è meno sicuro. Qui dipende da cosa è più importante per ciascuno.
Ora aggiungiamo un parametro nel file di configurazione (creiamo un nuovo file, l'ideologia moderna di CentOS è questa)
echo "vm.overcommit_memory = 1" > /etc/sysctl.d/98-sysctl.conf Riavviamo il server.
Nei commenti mi hanno criticato per aver consigliato di disattivare SeLinux, quindi farò ammenda e scriverò che dopo questo è necessario non dimenticare di configurare SeLinux.
In effetti, profitto! 🙂
Fonte: habr.com
