Server web su CentOS 8 con php7, node.js e redis

prefazione

Sono passati 2 giorni dal rilascio di una nuova versione del sistema operativo CentOS, ovvero CentOS 8. E finora ci sono parecchi articoli su Internet su come vengono fatte le cose, quindi ho deciso di colmare questa lacuna. Inoltre, ti parlerò non solo di come installare questa coppia di programmi, ma anche di come generalmente vedo l'installazione di Linux in un ambiente virtuale nel mondo moderno per attività tipiche, incluso il partizionamento di dischi e così via.

Ma all'inizio voglio parlare brevemente del motivo per cui vale la pena passare a questa versione da tutte le precedenti, e ci sono due ragioni per questo:

  1. php7! Nella versione precedente di CentOS era installato il php5.4 “ortodosso”...

    Ok, per essere un po' più seri, molti pacchetti sono passati attraverso diverse versioni in massa. Noi (fan dei sistemi operativi simili a Redhat) siamo finalmente entrati, se non nel futuro, almeno nel presente. E i sostenitori di Ubuntu non rideranno più di noi e non punteranno più il dito contro di noi, beh... almeno per un po' ;).

  2. Transizione da yum a dnf. La differenza principale è che ora è ufficialmente supportato per funzionare con più versioni di pacchetti contemporaneamente. Proprio tra gli otto, non l'ho mai trovato utile, ma sembra promettente.

Crea una macchina virtuale

Esistono diversi hypervisor e non ho l'obiettivo di adattare il lettore a uno specifico, ti parlerò dei principi generali.

Память

Primo... Per installare un sistema CentOS a partire sicuramente dal 7, e secondo me è stato così anche dal 6 (“ma questo non è sicuro”), occorre minimo 2 GB di RAM. Pertanto, ti consiglio di distribuirlo prima.

Ma semmai, dopo l'installazione la dimensione della memoria può essere ridotta. A 1 GB il sistema semplice funziona abbastanza bene, ho controllato.

disco

Per un'installazione normale, dovresti creare un disco virtuale con una capacità di 20-30 GB. Questo è sufficiente per il sistema. E un secondo disco per i dati. Può essere aggiunto sia nella fase di creazione di una macchina virtuale che successivamente. Di solito lo aggiungo più tardi.

processore

Su un core, il sistema nudo non rallenta. E poiché le risorse sono liberamente scalabili, non vedo alcun motivo di dare di più in fase di installazione (a meno che tu non conosca perfettamente i requisiti e sia troppo pigro per accedere nuovamente al configuratore)

Il resto può solitamente essere lasciato come predefinito.

L'installazione vera e propria

Quindi... Avviamo il programma di installazione... Personalmente, installo tali servizi solo sotto forma di macchine virtuali da molto tempo, quindi non descriverò tutti i tipi di record di distribuzione su un'unità flash: monto semplicemente l'ISO come CD nel mio hypervisor preferito, scaricalo e vai.

L'installazione base è abbastanza tipica, mi soffermerò solo su alcuni punti.

Р'С <РѕСЃСЃРѕР РЅРёРєР °

Dal rilascio dell'ottava versione, lo specchio di Yandex è rimasto in giro per giorni. Bene, cioè, si alza periodicamente e poi inizia di nuovo a mostrare un errore. Sono sicuro che sia dovuto al carico eccessivo sul servizio. Pertanto, per indicare la fonte, personalmente ho dovuto, invece di inserire il solito indirizzo, andare qui, seleziona il mirror che mi piace lì e inserisci manualmente l'indirizzo nella finestra di installazione. È importante ricordare qui che è necessario specificare il percorso della cartella in cui si trova la directory repodata. Ad esempio, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Partizionamento del disco

Questa domanda è piuttosto religiosa secondo me. Ogni amministratore ha la propria posizione su questo argomento. Ma condividerò comunque il mio punto di vista sulla questione.

Sì, in linea di principio puoi assegnare l'intero spazio alla radice e funzionerà, molto spesso anche abbastanza bene. Perché allora recintare un giardino con diverse sezioni? — Secondo me le ragioni principali sono due: le quote e la portabilità.

Se ad esempio qualcosa va storto e si verificano errori nella partizione dati principale, si desidera poter comunque avviare il sistema ed eseguire misure di rianimazione. Pertanto, assegno personalmente una partizione separata per /boot. C'è un kernel e un bootloader. Di solito sono sufficienti 500 megabyte, ma in rari casi potrebbero essere necessari di più e, dato che siamo già abituati a misurare lo spazio in terabyte, assegno 2 GB per questa sezione. E la cosa importante qui è che non può essere fatto lvm.

Poi arriva la radice del sistema. Per un'installazione normale, non ho mai avuto bisogno di più di 4 GB per sistema, ma durante gli eventi pianificati utilizzo spesso la directory /tmp per decomprimere le distribuzioni e non vedo il motivo di dedicarla a una partizione separata - nei sistemi moderni viene pulito automaticamente, quindi non viene riempito. Quindi assegno 8 GB per il root.

Scambia... In generale, la sua utilità pratica è scarsa. Se inizi a utilizzare lo swap sul tuo server, oggi nel mondo reale ciò significa solo che il server deve aggiungere più RAM. Altrimenti, i problemi con le prestazioni sono garantiti (o qualche programma "perde" memoria). Pertanto, questa sezione è necessaria solo per scopi diagnostici. Pertanto, 2 GB sono un numero eccellente. Sì, indipendentemente dalla quantità di memoria presente sul server. Sì, ho letto tutti quegli articoli in cui è scritto sul rapporto tra volume di memoria e volume di swap... IMHO, sono obsoleti. In 10 anni di pratica non ne ho mai avuto bisogno. 15 anni fa li usavo, sì.

IMHO, ognuno può decidere da solo se allocare /home in una partizione separata. Se qualcuno sul server utilizzerà attivamente questa directory, è meglio allocarla. Se nessuno, non ce n'è bisogno.

Successivamente, /var. Secondo me è assolutamente da evidenziare. Per cominciare, puoi limitarti a 4 GB e vedere come va. E sì, con “come va” intendo proprio questo

  1. Innanzitutto puoi sempre montare un altro disco nella sottodirectory /var (che mostrerò più avanti con un esempio)
  2. In secondo luogo, abbiamo lvm: puoi sempre aggiungerlo. E di solito devi aggiungerlo quando iniziano a riversarsi troppi tronchi. Ma non sono mai riuscito a prevedere questa cifra in anticipo, quindi inizio con 2 GB e poi guardo.

Lo spazio non allocato rimarrà libero nel gruppo di volumi e potrà sempre essere utilizzato in seguito.

LVM

tutto Ha senso creare partizioni diverse da /boot in LVM. Sì, compreso lo scambio. Sì, secondo tutti i consigli, lo swap dovrebbe trovarsi all'inizio del disco, ma nel caso di LVM la sua posizione in linea di principio non può essere determinata. Ma come ho scritto sopra, il tuo sistema non dovrebbe utilizzare lo scambio. Pertanto, non importa dove si trovi. Beh, non viviamo nel ’95, onestamente!

Inoltre, in LVM ci sono diverse entità di base con cui devi poter convivere:

  • volume fisico
  • gruppo di volumi
  • volume logico

I volumi fisici vengono combinati in gruppi e ciascun volume fisico può trovarsi in un solo gruppo e un gruppo può trovarsi su più volumi fisici contemporaneamente.
E i volumi logici sono ciascuno in un gruppo.

Ma... cavolo, siamo di nuovo nel 21esimo secolo. E i server sono virtuali. Non ha senso applicare ad essi gli stessi meccanismi che sono stati applicati a quelli fisici. E per quelli virtuali è importante avere i dati separatamente dal sistema! Questo è molto importante, in particolare per la possibilità di trasferire rapidamente i dati su un'altra macchina virtuale (ad esempio, quando si passa a un nuovo sistema operativo) e in generale per tutti i tipi di gadget utili (backup separati per partizioni utilizzando gli strumenti dell'hypervisor, ad esempio) . Pertanto, un gruppo di volumi viene utilizzato per il sistema e necessariamente un altro per i dati! Questa divisione logica aiuta molto nella vita!

Se hai creato un solo disco rigido virtuale durante la creazione di una macchina virtuale, qui termina la configurazione. E se ce ne sono due, non segnare ancora il secondo.

Iniziamo l'installazione.

Post installazione

Quindi, il sistema appena installato si è finalmente avviato. La prima cosa che devi controllare è Internet.

ping ya.ru

C'è una risposta? - Ottimo, premi Ctrl-C.
In caso contrario, crea una rete, non c’è vita senza questa, ma non è di questo che tratta il mio articolo.

Ora se non siamo ancora sotto root, andiamo sotto root, perché digitando такое il numero di comandi con sudo personalmente mi ha distrutto (e possano perdonarmi gli amministratori paranoici):

sudo -i

Ora la prima cosa che facciamo è digitare

dnf -y update

E se stai leggendo questo articolo nel 2019, molto probabilmente non succederà nulla, ma valeva la pena provarci.

Ora configuriamo il disco rimanente

Diciamo che la partizione con il sistema era xvda, quindi il disco dati sarà xvdb. OK.

La maggior parte dei consigli inizieranno con "Esegui fdisk e crea una partizione..."

Quindi è questo in modo non corretto!

Lo ripeto perché è importantissimo! In questo caso, per lavorare con LVM, che occupa un intero disco virtuale, creare partizioni su di esso è dannoso! Ogni parola in questa frase è importante. Se lavoriamo senza LVM, dobbiamo farlo. Se abbiamo un sistema e dati sul disco, ne abbiamo bisogno. Se per qualche motivo avessimo bisogno di lasciare metà del disco vuota, dovremmo farlo anche noi. Ma di solito tutte queste ipotesi sono puramente teoriche. Perché se decidiamo di aggiungere spazio a una partizione esistente, il modo più semplice per farlo è con questa configurazione. E la facilità di amministrazione supera così tanto molte altre cose che ci stiamo intenzionalmente spostando verso questa configurazione.

E la comodità è che se vuoi espandere la partizione dati, aggiungi semplicemente spazi alla partizione virtuale, quindi espandi il gruppo usando vgextend e il gioco è fatto! In rari casi potrebbe essere necessario qualcos’altro, ma almeno non sarà necessario espandere il volume logico all’inizio, il che è già carino. Altrimenti, per espandere proprio questo volume, consigliano prima di eliminare quello esistente e poi di crearne uno nuovo sopra... Il che non sembra molto carino e non può essere fatto dal vivo, ma l'espansione secondo lo scenario che ho indicato può essere effettuato “al volo” senza nemmeno smontare la partizione.

Creiamo quindi un volume fisico, poi un gruppo di volumi che lo includa 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, invece della lettera maiuscola “L” (e la dimensione in GB), puoi specificarne una piccola, quindi invece di una dimensione assoluta, specificarne una relativa, ad esempio, per utilizzare metà dello spazio attualmente libero in un gruppo di volumi, è necessario specificare "-l +50%FREE"

E l'ultimo comando formatta la partizione nel file system ext4 (che finora, secondo la mia esperienza, mostra la massima stabilità nel caso in cui tutto si rompa, quindi lo preferisco).

Ora montiamo la partizione nel posto giusto. Per fare ciò, aggiungi la riga corretta a /etc/fstab:

/dev/mapper/data-www    /var/www                ext4    defaults        1 2

E componiamo

mount /var/www

Se si verifica un errore, suona l'allarme! Perché questo significa che abbiamo un errore in /etc/fstab. E che al prossimo riavvio avremo grossissimi problemi. Il sistema potrebbe non avviarsi affatto, il che spesso è molto triste per i servizi cloud. Pertanto, è necessario correggere urgentemente l'ultima riga aggiunta o eliminarla del tutto! Questo è il motivo per cui non abbiamo scritto manualmente il comando mount, altrimenti non avremmo avuto un'opportunità così eccellente di controllare subito la configurazione.

Ora installiamo effettivamente 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 lo desideri puoi anche inserire un database qui, ma personalmente cerco di tenerlo separato dal server web. Anche se tenerla vicina è più veloce, sì. La velocità degli adattatori di rete virtuale è solitamente intorno al gigabit e quando si lavora sulla stessa macchina, le chiamate avvengono quasi istantaneamente. Ma è meno sicuro. Cosa è più importante per chi?

Ora aggiungiamo il parametro al file di configurazione (ne creiamo uno nuovo, l'ideologia moderna di CentOS è così)

echo "vm.overcommit_memory = 1"> /etc/sysctl.d/98-sysctl.conf

Riavviamo il server.
Nei commenti sono stato rimproverato per avermi consigliato di disattivare SeLinux, quindi mi correggerò e scriverò del fatto che dopo questo bisogna ricordarsi di configurare SeLinux.
Anzi, profitto! 🙂

Fonte: habr.com

Aggiungi un commento