Server web pe CentOS 8 cu php7, node.js și redis

Prefață

Deja au trecut 2 zile de când a fost lansată noua versiune a sistemului de operare CentOS, anume, CentOS 8. În prezent, pe internet sunt relativ puține articole despre cum se procedează cu el, așa că am decis să umplu acest gol. În plus, voi vorbi nu doar despre cum să instalez acest set de programe, ci și despre cum văd eu instalarea Linux în mediul virtual în lumea modernă pentru sarcini tipice, inclusiv partiționarea discurilor și altele.

Dar, la început, vreau să discut pe scurt despre de ce merită să treci la această versiune de la toate cele anterioare, iar pentru asta există două motive:

  1. php7! În versiunea anterioară a CentOS se instala «versiunea corectă» php5.4…

    Bine, dacă privim lucrurile puțin mai serios, multe pachete au trecut peste câteva versiuni în mod seriat. Noi (adepții sistemelor de tip redhat) am intrat în sfârșit, dacă nu în viitor, măcar în prezent. Și susținătorii Ubuntu nu ne vor mai râde în față și nu ne vor mai arăta cu degetul, cel puțin... pentru o vreme ;).

  2. Trecerea de la yum la dnf. Principala diferență este că acum se susține oficial lucrul cu mai multe versiuni de pachete simultan. Deocamdată, în versiunea 8 nu mi-a fost de folos, dar sună promițător.

Crearea unei mașini virtuale

Hyper-vizoarele sunt diverse și nu intenționez să învăț cititorul despre un anumit tip, ci voi vorbi despre principiile generale.

Memorie

În primul rând… Pentru instalarea sistemului CentOS începând cu 7, sigur, și cred că și în 6 a fost la fel («dar asta nu e sigur»), este necesar minim 2 GB de memorie RAM. Așadar, vă recomand să alocați mai întâi această cantitate.

Dar, dacă e nevoie, după instalare volumul de memorie poate fi redus. O instalație de bază funcționează destul de bine cu 1 GB, am verificat.

Disc

Pentru o instalare normală ar trebui să creați un disc virtual cu o capacitate de 20-30 GB. Aceasta va fi suficient pentru sistem. Și al doilea disc pentru date. Acesta poate fi adăugat fie în timpul creării mașinii virtuale, fie după aceea. Eu, de obicei, îl adaug ulterior.

Procesor

Pe un nucleu, sistemul de bază nu se blochează. Și deoarece resursele se scalează liber, nu văd sens în a aloca mai mult la etapa de instalare (cu excepția cazului în care cunoașteți perfect cerințele și vă este lene să accesați configuratorul din nou)

Restul de obicei poate fi lăsat la setările implicite.

De fapt, instalarea

Așadar… Lansez instalatorul… Personal, folosesc de mult timp asemenea servicii doar sub formă de mașini virtuale, așa că nu voi descrie scrierea imaginii pe un stick USB — doar montez ISO-ul ca un CD în hipervizorul meu preferat, pornesc și gata.

Instalarea de bază se desfășoară destul de tipic, voi sublinia doar câteva momente.

Selectarea sursei

De la lansarea versiunii a opta, oglinda de la Yandex a fost dată jos deja de câteva zile. Adică, aceasta este periodic disponibilă, iar apoi din nou începe să afișeze o eroare. Sunt sigur că este din cauza încărcării excesive pe serviciu. Așadar, pentru a indica sursa, a trebuit personal să merg aici, să aleg acolo oglinda care îmi place și să introduc manual adresa în fereastra instalatorului. Aici este important să țineți minte că trebuie să specificați calea către folderul unde se află catalogul repodata. De exemplu, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Partiționarea discului

Aceasta este mai mult o întrebare religioasă, din punctul meu de vedere. Fiecare administrator are propria sa părere în această privință. Totuși, voi împărtăși punctul meu de vedere cu privire la acest subiect.

Da, în principiu, poți aloca tot spațiul pentru rădăcină și va funcționa, de cele mai multe ori chiar destul de bine. Atunci de ce să complicăm lucrurile cu diferite partiții? - Personal, consider că au existat două motive principale: cotele și portabilitatea.

De exemplu, dacă ceva nu merge bine și pe partiția principală cu date apare o eroare, ar fi bine să ai posibilitatea de a încărca sistemul și de a efectua măsuri de recuperare. Așa că, personal, aloc o partiție separată pentru /boot. Acolo se află kernelul și bootloader-ul. De obicei, 500 de megabytes sunt suficienți, dar în cazuri rare ar putea fi necesar mai mult; având în vedere că ne-am obișnuit să măsurăm spațiul în terabytes, aloc pentru această partiție 2GB. Și este important de menționat că nu poate fi făcut lvm.

Următoarea este rădăcina sistemului. Pentru o instalare normală, nu mi-a fost niciodată nevoie de mai mult de 4GB pentru sistem, dar în timpul activităților planificate folosesc adesea catalogul /tmp pentru dezarhivarea distribuțiilor, și nu văd sensul de a-l aloca pentru o partiție separată — în sistemele moderne este curățat automat, așa că nu se umple. Așa că aloc 8GB pentru rădăcină.

Swap... În esență, utilitatea practică a acestuia este minimă. Dacă serverul dumneavoastră începe să folosească swap, în lumea reală de astăzi, asta înseamnă doar că serverului trebuie să-i fie adăugată mai multă memorie RAM. Altfel, problemele de performanță sunt garantate (sau poate o aplicație are o „scurgere” de memorie). De aceea, acest segment este necesar doar pentru diagnosticare. Așadar, 2 GB este o cifră excelentă. Da, indiferent de câtă memorie se află pe server. Da, am citit toate acele articole care discută despre raportul dintre volumul de memorie și volumul de swap... IMHO, acestea sunt depășite. În 10 ani de experiență, niciodată nu mi s-au dovedit utile. Acum 15 ani le foloseam, da.

Dacă să aloci /home într-o partiție separată, IMHO fiecare poate decide singur. Dacă cineva va folosi activ acest catalog pe server, este mai bine să-l aloci. Dacă nimeni nu-l folosește - nu este nevoie.

Mai departe, /var. Din punctul meu de vedere, acesta trebuie alocat neapărat. La început, poți să te limitezi la o cifră de 4 GB, iar apoi vom vedea. Și da, prin „vom vedea” mă refer la faptul că

  1. În primul rând, întotdeauna poți să montezi un alt disc în subdirectorul /var (ceea ce voi arăta mai departe printr-un exemplu)
  2. În al doilea rând, avem LVM - întotdeauna poți să adaugi. Și de obicei trebuie să adaugă când prea multe jurnale încep să se adune acolo. Dar nu am reușit niciodată să prezic în avans această cifră, așa că încep cu 2 GB și apoi mă uit.

Spațiul nealocat va rămâne liber în grupul de volume, acesta poate fi folosit oricând ulterior.

LVM

Toate partițiile, în afară de /boot, are sens să le creezi în LVM. Da, inclusiv swap. Da, conform tuturor recomandărilor, swap-ul ar trebui să fie la începutul discului, iar în cazul LVM locul său nu poate fi determinat în principiu. Dar așa cum am scris mai sus, sistemul tău nu ar trebui să folosească swap deloc. Așadar, nu are nicio importanță unde se află. Nu trăim în '95, sincer!

Apoi, în LVM există câteva entități de bază cu care trebuie să știi să coexiști:

  • volum fizic
  • grup de volume
  • volum logic

Volumele fizice sunt grupate în grupuri, iar fiecare volum fizic poate fi doar într-un singur grup, iar un grup poate fi prezent pe mai multe volume fizice simultan.
Volumele logice se află fiecare într-un singur grup.

Dar… avem, din păcate, anul 21 și servere virtuale. Nu are sens să aplicăm aceleași mecanisme care au fost folosite pentru cele fizice. Pentru cele virtuale este important să avem datele separate de sistem! Acest lucru este foarte important în special pentru a putea comuta rapid datele către o altă mașină virtuală (de exemplu, când trecem la un nou OS) și, în general, pentru tot felul de funcții utile (backup-uri separate ale secțiunilor, de exemplu, prin intermediul hipervizorului). Prin urmare, un grup de volume este folosit pentru sistem și neapărat altul pentru date! Această separație logică ajută mult în viață!

Dacă, atunci când ați creat o mașină virtuală, ați creat doar un singur disc virtual, configurația se încheie aici. Dar dacă aveți două, nu mai partajați deocamdată al doilea.

Începem instalarea.

Post-instalare

Așa, în sfârșit s-a încărcat sistemul instalat recent. Primul lucru de verificat este — internetul.

ping ya.ru

Există răspuns? — Excelent, apăsăm Ctrl-C.
Dacă nu — mergeți să configurați rețeaua, fără asta nu se poate trăi, dar articolul meu nu este despre asta.

Acum, dacă nu suntem deja sub root, intrăm ca root, căci să tastați atâtea comenzi cu sudo personal mi se pare obositor (și să mă ierte administratorii paranoici):

sudo -i

Acum, prima dată tastăm

dnf -y update

Și dacă citiți acest articol în 2019, cel mai probabil nu se va întâmpla nimic, dar merită încercat.

Acum să configurăm discul rămas.

Să presupunem că partitia cu sistemul nostru a fost xvda, atunci discul cu datele va fi xvdb. OK.

Cele mai multe sfaturi vor începe cu cuvintele „Rulați fdisk și creați o partiție...”

Așadar, este greșit!

Încă o dată subliniez, pentru că este important! În acest caz, pentru a lucra cu LVM, crearea de partiții pe un disc întreg, chiar dacă este virtual, este dăunătoare! În această frază fiecare cuvânt este important. Dacă lucrăm fără LVM — trebuie. Dacă avem pe disk, de exemplu, sistem și date — trebuie. Dacă din motive oarecare trebuie să lăsăm jumătate din disc liber — la fel trebuie. Dar, de obicei, toate aceste supoziții sunt pur teoretice. Pentru că dacă decidem să adăugăm spațiu la partiția existentă, cel mai simplu este să facem asta cu această configurație. Iar confortul în administrare depășește atât de multe, încât ne îndreptăm intentional spre această configurație.

Confortul constă în faptul că, dacă doriți să extindeți sectiunea de date, pur și simplu adăugați spații în partitionarea virtuală, apoi extindeți grupul cu vgextend și totul e gata! În cazuri rare, poate fi necesar să faceți ceva în plus, dar, cel puțin, nu va trebui să extindeți la început volumul logic, ceea ce este deja plăcut. Pentru a extinde acest volum, se recomandă, inițial, să ștergeți cel existent și apoi să creați unul nou deasupra… ceea ce nu arată tocmai bine și nu poate fi realizat în timp real, pe când extinderea conform scenariului menționat de mine poate fi efectuată „în timp real” fără a desface partitionarea.

În concluzie, creăm un volum fizic, apoi un grup de volume care îl include și, în final, o partiție pentru serverul nostru:

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

Aici, în loc de litera mare „L” (și dimensiunea în GB), puteți folosi litera mică, iar în loc de dimensiunea absolută, puteți specifica una relativă; de exemplu, pentru a utiliza jumătate din spațiul liber în grupul de volume, trebuie să indicați „-l +50%FREE”.

Ultima comandă formatează partitionarea în sistemul de fișiere ext4 (care, până acum, din practica mea arată cea mai mare stabilitate în cazul în care totul se dă peste cap, de aceea o prefer).

Acum montăm partitionarea în locul dorit. Pentru aceasta, adăugăm linia corectă în /etc/fstab:

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

Și tastăm

mount /var/www

Dacă apare o eroare — alertați! Pentru că asta înseamnă că avem o eroare în /etc/fstab. Și că, la următoarea repornire, vom avea probleme foarte mari. Sistemul s-ar putea să nu pornească deloc, ceea ce este adesea foarte trist pentru servicii cloud. Așadar, trebuie fie să corectăm urgent ultima linie adăugată, fie să o ștergem complet! De aceea nu am scris comanda de montare manual — altfel nu am fi avut o oportunitate atât de minunată de a verifica configurația chiar acum.

Acum, pur și simplu instalăm tot ce am vrut și deschidem porturile pentru web:

dnf groupinstall "Development Tools"
dnf -y install httpd @nodejs @redis php
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent

Dacă doriți, puteți instala și baza de date aici, dar personal încerc să o țin separat de serverul web. Totuși, a o păstra aproape este mai rapid. Viteza adapterilor de rețea virtuale este de obicei în jur de un gigabit, iar când lucrăm pe aceeași mașină, accesările se întâmplă aproape instantaneu. Dar în schimb, este mai puțin sigur. Așadar, depinde de ceea ce este mai important pentru fiecare.

Acum adăugăm parametrul în fișierul de configurare (creăm unul nou, ideologia modernă a CentOS-ului este aceasta)

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

Rebootăm serverul.
În comentarii, m-au certat pentru sfatul de a dezactiva SeLinux, așa că mă voi corecta și voi scrie despre faptul că după asta nu trebuie să uităm să configurăm SeLinux.
Așadar, profit! 🙂

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster