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

Prefazione

Sono già passati 2 giorni dal rilascio della nuova versione del sistema operativo CentOS, precisamente CentOS 8. Finora, online ci sono poche informazioni su come effettuare determinate operazioni, quindi ho deciso di colmare questa lacuna. Non solo parlerò di come installare questi programmi, ma anche di come vedo l'installazione di Linux in un ambiente virtuale nel mondo moderno per compiti tipici, compresa la partizione dei dischi e altro.

Ma prima voglio brevemente spiegare perché vale la pena passare a questa versione da tutte le precedenti, e le ragioni sono due:

  1. php7! Nella precedente versione di CentOS si installava il "classico" php5.4…

    Va bene, se vogliamo essere più seri, molti pacchetti hanno saltato direttamente diverse versioni. Noi (fan dei sistemi operativi di tipo redhat) siamo finalmente entrati, se non nel futuro, almeno nel presente. E i sostenitori di Ubuntu non si prenderanno più gioco di noi e non ci punteranno più il dito, beh... almeno per un po' ;).

  2. Passaggio da yum a dnf. La principale differenza è che ora è ufficialmente supportato il lavoro con più versioni di pacchetti contemporaneamente. Finora, nella versione otto, non ne ho mai avuto bisogno, ma sembra promettente.

Creazione di una macchina virtuale

Esistono diversi tipi di hypervisor e non ho l'intenzione di orientare il lettore su uno specifico; parlerò dei principi generali.

Memoria

Innanzitutto... Per installare il sistema CentOS a partire dalla versione 7, e credo anche dalla 6, è necessario un minimo di 2 GB di RAM. Pertanto, consiglio di assegnare almeno questa quantità inizialmente.

Ma se necessario, dopo l'installazione, è possibile ridurre la quantità di memoria. Ho verificato che un sistema appena installato funziona correttamente con 1 GB.

Disco

Per una corretta installazione, è consigliabile creare un disco virtuale di dimensione compresa tra 20 e 30 GB. Questo spazio 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 in seguito.

Processore

Con un solo core, il sistema di base non rallenta. E poiché le risorse possono essere scalate liberamente, non vedo motivo di assegnare di più durante l'installazione (a meno che non si conoscano perfettamente i requisiti e si sia riluttanti a modificarlo di nuovo nel configuratore).

Il resto si può solitamente lasciare su impostazioni predefinite.

In effetti, l'installazione.

Quindi… Avviamo l'installatore… Personalmente, da tempo utilizzo questi servizi esclusivamente in forma di macchine virtuali, quindi non descriverò l'installazione del disco del sistema operativo su chiavetta USB — monto semplicemente l'ISO come CD nel mio hypervisor preferito, riavvio e via.

L'installazione di base avviene in modo abbastanza tipico, mi soffermerò solo su alcuni aspetti.

Scelta della sorgente

Dalla pubblicazione della versione otto, il mirror di Yandex è giù da alcuni giorni. Cioè, ogni tanto torna su, poi ricomincia a mostrare l'errore. Sono sicuro che è dovuto a un sovraccarico del servizio. Pertanto, per specificare la sorgente, ho dovuto invece di inserire l'indirizzo abituale andare qui, scegliere lì il mirror che preferisco e digitare manualmente l'indirizzo nella finestra dell'installatore. Qui è importante ricordare che bisogna indicare il percorso alla cartella in cui si trova il catalogo repodata. Ad esempio, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Partizionamento del disco

Questa questione è piuttosto una questione di fede, a mio parere. Ogni amministratore ha la propria posizione in merito. Tuttavia, voglio comunque condividere il mio punto di vista sulla questione.

Sì, in linea di massima, è possibile allocare tutto lo spazio per la root e funzionerà, di solito anche piuttosto bene. Ma perché complicarsi la vita con diverse partizioni? — A mio parere, le due ragioni principali sono: le quote e la portabilità.

Per esempio, se qualcosa va storto e ci sono errori nella partizione principale con i dati, si vuole comunque avere la possibilità di avviare il sistema e effettuare interventi di recupero. Perciò, personalmente, riservo una partizione separata per /boot. Qui si trovano il kernel e il bootloader. Di solito bastano 500 megabyte, ma in rari casi può essere necessario di più. Considerando che siamo abituati a misurare lo spazio in terabyte, ne riservo 2GB per questa partizione. È importante notare che non può essere configurata come lvm.

Successivamente, c'è la root del sistema. Per una normale installazione non mi è mai servito più di 4 GB proprio per il sistema, ma durante le attività pianificate uso spesso la directory /tmp per estrarre le distribuzioni, e non vedo il senso di riservarla come partizione separata — nei sistemi moderni viene pulita automaticamente, quindi non si riempie. Quindi riservo 8GB per la root.

Swap… In sostanza, il suo utilizzo pratico è limitato. Se sul tuo server viene utilizzato lo swap, nel mondo reale oggi significa solo che il server ha bisogno di più memoria RAM. Altrimenti, problemi di prestazioni sono garantiti (oppure qualche programma ha una "memory leak"). Pertanto, questa sezione è utile solo per la diagnostica. Quindi 2 GB è un numero eccellente. Sì, indipendentemente dalla quantità di RAM disponibile nel server. Sì, ho letto tutti quei articoli che parlano del rapporto tra la quantità di memoria e quella dello swap… A mio parere, sono obsoleti. Negli ultimi 10 anni non ne ho mai avuto bisogno. 15 anni fa li usavo, sì.

Se assegnare/home a una partizione separata, a mio parere, è una scelta personale. Se qualcuno utilizzerà attivamente quella directory sul server, è meglio dedicargli uno spazio. Se nessuno la utilizza, non c'è bisogno.

Inoltre, /var. Secondo me, è fondamentale separarlo. All'inizio, si può limitare a 4 GB, e poi adattarsi. E sì, con "adattarsi" intendo che

  1. In primo luogo, è sempre possibile montare un altro disco nella sottodirectory /var (cosa che mostrerò più avanti con un esempio)
  2. In secondo luogo, con LVM possiamo sempre aggiungere spazio. Di solito è necessario farlo quando i log iniziano a accumularsi. Non sono mai riuscito a prevedere in anticipo questa cifra, quindi inizio con 2 GB e poi monitoro la situazione.

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

LVM

Tutti Ha senso creare partizioni, tranne /boot, in LVM. Sì, compreso lo swap. Sì, secondo tutti i consigli, lo swap dovrebbe essere all'inizio del disco, ma nel caso di LVM non è possibile determinare la sua posizione in linea di principio. Ma come ho già scritto sopra, il vostro sistema non dovrebbe utilizzare affatto lo swap. Pertanto, non ha importanza dove si trovi. Non stiamo vivendo nel 1995, ve lo assicuro!

Inoltre, in LVM ci sono alcune entità di base con cui bisogna saper convivere:

  • volume fisico
  • gruppo di volumi
  • volume logico

I volumi fisici sono raggruppati in gruppi, dove ogni volume fisico può appartenere solo a un gruppo, e un gruppo può trovarsi su più volumi fisici contemporaneamente.
I volumi logici si trovano ciascuno all'interno di un gruppo.

Ma... siamo nel XXI secolo. E ci sono server virtuali. Non ha senso applicare gli stessi meccanismi usati per quelli fisici. Per i virtuali, è importante avere i dati separati dal sistema! Questo è particolarmente fondamentale per la possibilità di trasferire rapidamente i dati su un'altra macchina virtuale (ad esempio, durante la transizione a un nuovo sistema operativo) e per altre utili funzionalità (come i backup separati per partizione tramite gli strumenti dell'iper-v). Pertanto, un gruppo di volume è utilizzato per il sistema e un altro deve essere utilizzato per i dati! Questa separazione logica è molto utile nella pratica!

Se al momento della creazione della macchina virtuale hai creato solo un disco rigido virtuale, la configurazione finisce qui. Se hai ne creati due, non partizionare ancora il secondo.

Iniziamo l'installazione.

Post-installazione

Finalmente si è avviato il sistema appena installato. La prima cosa da controllare è la connessione a Internet.

ping ya.ru

C'è risposta? — Ottimo, premiamo Ctrl-C.
Se non c'è — vai a configurare la rete, senza quella non si vive, ma non è di questo che parla il mio articolo.

Ora, se non siamo già come root, accediamo come root, perché digitare questo per il numero di comandi con sudo, è davvero un peccato (e perdonino gli amministratori paranoici):

sudo -i

Ora iniziamo

dnf -y update

E se stai leggendo questo articolo nel 2019, probabilmente non succederà nulla, ma vale la pena provare.

Adesso configuriamo il disco rimanente

Supponiamo che la partizione di sistema sia xvda, quindi il disco dati sarà xvdb. OK.

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

Ebbene, questo è sbagliato!

Lo ripeto ancora, perché è importante! In questo caso, lavorare con LVM, che occupa un intero, anche se virtuale, disco, è dannoso! In questa frase ogni parola è importante. Se lavoriamo senza LVM — è necessario. Se abbiamo su disco, diciamo, sistema e dati — è necessario. Se per qualche motivo dobbiamo lasciare metà disco vuota — è necessario. 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à nell'amministrazione supera talmente tante cose che andiamo deliberatamente verso questa configurazione.

А удобство заключается в том, что если вы захотите расширить раздел с данными, вы просто добавите места в виртуальный раздел, после чего расширите группу с помощью vgextend и всё! В редких случаях может потребоваться что-то еще, но как минимум не придёться расширять в начале логический том, что уже приятно. А то для расширения этого самого тома рекомендуют в начале удалить имеющийся, а потом создать новый поверх… Что и выглядит не очень приятно и нельзя сделать на живую, а расширение по указанному мною сценарию можно проводить «на лету» даже не размонтируя раздел.

Итого, создаём физический том, потом группу томов, его включающую и потом раздел для нашего сервера:

pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n www -L40G data
mke2fs -t ext4 /dev/mapper/data-www

Тут можно вместо большой буквы «L» (и размера в ГБ) указать маленькую и тогда вместо абсолютного размера указать относительный, например, чтобы использовать половину свободного на данный момент в группе томов места, надо указать «-l +50%FREE»

L'ultima comando formatta la partizione nel file system ext4 (che finora, nella mia esperienza, ha dimostrato la massima stabilità in caso di problemi, quindi la preferisco).

Ora montiamo la partizione nel luogo desiderato. A tal fine, aggiungiamo la riga corretta in /etc/fstab:

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

E digitiamo

mount /var/www

Se appare un errore, è un campanello d'allarme! Questo significa che c'è un errore in /etc/fstab. E che al prossimo riavvio avremo grossi problemi. Il sistema potrebbe anche non avviarsi affatto, il che è spesso molto spiacevole per i servizi cloud. È quindi necessario correggere immediatamente l'ultima riga aggiunta o eliminarla del tutto! Ecco perché non abbiamo scritto manualmente il comando di montaggio — altrimenti non avremmo avuto questa stupenda opportunità di controllare la configurazione ora.

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 desideri, puoi anche installare il database qui, ma personalmente cerco di tenerlo separato dal server web. Anche se averlo vicino è più veloce, lo è. La velocità degli adattatori di rete virtuali è solitamente intorno a un gigabit, e quando si lavora sulla stessa macchina, le richieste avvengono quasi istantaneamente. Ma è meno sicuro. Qui dipende da cosa è più importante per ciascuno.

Ora aggiungiamo il parametro al file di configurazione (creando un nuovo file, questa è l'attuale ideologia di CentOS).

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 mi correggerò e scriverò che dopo questo è importante non dimenticare di configurare SeLinux.
Ecco, il profitto! 🙂

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster