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

Prefață

Au trecut 2 zile de la lansarea unei noi versiuni a sistemului de operare CentOS, și anume CentOS 8. Și până acum există destul de multe articole pe Internet despre cum se fac lucrurile în el, așa că am decis să umplu acest gol. Mai mult, vă voi spune nu numai despre cum să instalați această pereche de programe, ci și despre cum văd în general instalarea Linux într-un mediu virtual în lumea modernă pentru sarcini tipice, inclusiv partiționarea discurilor și așa mai departe.

Dar la început, vreau să vorbesc pe scurt despre motivul pentru care merită să treci la această versiune de la toate versiunile anterioare și există două motive pentru aceasta:

  1. php7! În versiunea anterioară de CentOS, php5.4 „Ortodox” a fost instalat...

    Bine, ca să fiu puțin mai serios, o mulțime de pachete au sărit prin mai multe versiuni în masă. Noi (fanii sistemelor de operare de tip redhat) am intrat în sfârșit, dacă nu în viitor, atunci măcar în prezent. Iar suporterii Ubuntu nu vor mai râde de noi și nu vor mai arăta cu degetul spre noi, ei bine... măcar pentru o vreme ;).

  2. Trecerea de la yum la dnf. Principala diferență este că acum este acceptat oficial să lucreze cu mai multe versiuni de pachete simultan. Chiar în cele opt, nu am găsit niciodată acest lucru util, dar sună promițător.

Creați o mașină virtuală

Există diferiți hipervizori și nu am niciun scop să adaptez cititorul la unul anume, vă voi spune despre principiile generale.

memorie

Mai întâi... Pentru a instala cu siguranță un sistem CentOS începând de la 7 și, după părerea mea, așa a fost și în 6 („dar asta nu este sigur”), trebuie minim 2 GB RAM. Prin urmare, vă sfătuiesc să oferiți atât mai întâi.

Dar dacă ceva, după instalare, dimensiunea memoriei poate fi redusă. La 1 GB sistemul bare merge destul de bine, am verificat.

disc

Pentru o instalare normală, ar trebui să creați un disc virtual cu o capacitate de 20-30 GB. Acest lucru este suficient pentru sistem. Și un al doilea disc pentru date. Poate fi adăugat atât în ​​etapa de creare a unei mașini virtuale, cât și după. De obicei îl adaug mai târziu.

procesor

Pe un nucleu, sistemul gol nu încetinește. Și, din moment ce resursele sunt scalabile liber, nu văd niciun rost să dau mai mult în etapa de instalare (cu excepția cazului în care cunoști perfect cerințele și ești prea leneș să intri din nou în configurator)

Restul poate fi de obicei lăsat implicit.

Instalarea propriu-zisă

Deci... Hai să lansăm programul de instalare... Personal, de mult instalez astfel de servicii doar sub formă de mașini virtuale, așa că nu voi descrie tot felul de înregistrări de distribuție pe o unitate flash - doar montez ISO ca CD în hypervisorul meu preferat, descărcați și mergeți.

Instalarea de bază este destul de tipică, mă voi opri doar pe câteva puncte.

Selectarea sursei

De la lansarea celei de-a opta versiuni, oglinda de la Yandex zace de zile întregi. Ei bine, adică se ridică periodic și apoi începe din nou să arate o eroare. Sunt sigur că se datorează încărcării excesive a serviciului. Prin urmare, pentru a indica sursa, eu personal a trebuit, în loc să introduc adresa obișnuită, să merg aici, selectați oglinda care îmi place acolo și introduceți manual adresa în fereastra de instalare. Este important să rețineți că trebuie să specificați calea către folderul în care se află directorul repodata. De exemplu mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Partiționarea discului

Această întrebare este mai degrabă religioasă în opinia mea. Fiecare administrator are propria poziție în această chestiune. Dar voi împărtăși în continuare punctul meu de vedere asupra problemei.

Da, în principiu, puteți aloca întregul spațiu rădăcină și va funcționa, cel mai adesea chiar destul de bine. De ce atunci să îngrădiți o grădină cu diferite secțiuni? — În opinia mea, există două motive principale pentru aceasta: cotele și portabilitatea.

De exemplu, dacă ceva nu merge bine și apar erori pe partiția principală de date, doriți să puteți încă porni sistemul și să efectuați măsuri de resuscitare. Prin urmare, personal aloc o partiție separată pentru /boot. Există un nucleu și un bootloader. De obicei sunt suficienți 500 de megaocteți, dar în cazuri rare poate fi nevoie de mai mulți și, având în vedere că deja suntem obișnuiți să măsurăm spațiul în terabytes, aloc 2GB pentru această secțiune. Și lucrul important aici este că nu se poate face lvm.

Urmează rădăcina sistemului. Pentru o instalare normală, nu am avut niciodată nevoie de mai mult de 4 GB per sistem, dar în timpul evenimentelor programate folosesc adesea directorul /tmp pentru a despacheta distribuțiile și nu văd niciun rost să-l dedic unei partiții separate - în sistemele moderne se curăță automat, deci nu se umple. Așa că aloc 8 GB pentru rădăcină.

Schimbați... În general, nu are nicio utilitate practică. Dacă începeți să utilizați swap pe serverul dvs., astăzi, în lumea reală, acest lucru înseamnă doar că serverul trebuie să adauge mai multă RAM. În caz contrar, problemele de performanță sunt garantate (sau unele programe „scurg” memoria). Prin urmare, această secțiune este necesară numai în scopuri de diagnosticare. Prin urmare, 2 GB este un număr excelent. Da, indiferent de câtă memorie există pe server. Da, am citit toate acele articole în care scrie despre raportul dintre volumul memoriei și volumul de schimb... IMHO, sunt depășite. În 10 ani de practică nu am avut niciodată nevoie de asta. Acum 15 ani le-am folosit, da.

IMHO, fiecare poate decide singur dacă să aloce /home într-o partiție separată. Dacă cineva de pe server va folosi în mod activ acest director, este mai bine să-l aloce. Dacă nimeni, nu este nevoie.

În continuare, /var. După părerea mea, trebuie subliniat cu siguranță. Pentru început, vă puteți limita la 4 GB și vedeți cum merge. Și da, prin „cum merge”, vreau să spun asta

  1. În primul rând, puteți monta oricând un alt disc în subdirectorul /var (pe care îl voi arăta mai târziu cu un exemplu)
  2. În al doilea rând, avem lvm - îl puteți adăuga oricând. Și, de obicei, trebuie să-l adăugați atunci când încep să curgă prea mulți bușteni acolo. Dar nu am reușit niciodată să prezic această cifră în avans, așa că încep cu 2 GB și apoi mă uit.

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

LVM

toate Are sens să faci alte partiții decât /boot în LVM. Da, inclusiv schimbul. Da, conform tuturor sfaturilor, schimbul ar trebui să fie la începutul discului, dar în cazul LVM locația sa nu poate fi determinată în principiu. Dar așa cum am scris mai sus, sistemul tău nu ar trebui folosește swap deloc. Prin urmare, nu contează unde se află. Ei bine, nu trăim în ’95, sincer!

În plus, în LVM există mai multe entități de bază cu care trebuie să puteți trăi:

  • volumul fizic
  • grup de volum
  • volum logic

Volumele fizice sunt combinate în grupuri și fiecare volum fizic poate fi într-un singur grup, iar un grup poate fi localizat pe mai multe volume fizice simultan.
Și volumele logice sunt fiecare într-un grup.

Dar... La naiba, este din nou secolul 21. Iar serverele sunt virtuale. Nu are sens să le aplici aceleași mecanisme care au fost aplicate celor fizice. Iar pentru cele virtuale este important să aveți date separat de sistem! Acest lucru este foarte important, în special pentru capacitatea de a comuta rapid datele pe o altă mașină virtuală (de exemplu, atunci când treceți la un nou sistem de operare) și, în general, pentru tot felul de bunătăți utile (backup-uri separate prin partiții folosind instrumente hypervisor, de exemplu) . Prin urmare, un grup de volume este folosit pentru sistem și neapărat altul este folosit pentru date! Această împărțire logică ajută foarte mult în viață!

Dacă ați creat un singur hard disk virtual când ați creat o mașină virtuală, aici se termină configurația. Și dacă sunt două, atunci pur și simplu nu-l marca pe al doilea încă.

Să începem instalarea.

Post-instalare

Deci, sistemul nou instalat a pornit în sfârșit. Primul lucru pe care trebuie să-l verificați este internetul.

ping ya.ru

Există un răspuns? - Grozav, apăsați Ctrl-C.
Dacă nu, faceți o rețea, nu există viață fără asta, dar nu despre asta este articolul meu.

Acum, dacă nu suntem încă sub root, mergeți sub root, pentru că tastând acest numărul de comenzi cu sudo m-a stricat personal (și să mă ierte administratorii paranoici):

sudo -i

Acum, primul lucru pe care îl facem este să tastați

dnf -y update

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

Acum să configuram discul rămas

Să presupunem că partiția cu sistemul a fost xvda, apoi discul de date va fi xvdb. BINE.

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

Deci asta este în mod incorect!

O voi spune din nou pentru că este atât de important! În acest caz, a lucra cu LVM, care ocupă un întreg disc virtual, crearea de partiții pe acesta este dăunătoare! Fiecare cuvânt din această frază este important. Dacă lucrăm fără LVM, trebuie. Dacă avem un sistem și date pe disc, avem nevoie de el. Dacă dintr-un motiv oarecare trebuie să lăsăm jumătate din disc gol, ar trebui și noi. Dar, de obicei, toate aceste presupuneri sunt pur teoretice. Pentru că dacă decidem să adăugăm spațiu unei partiții existente, atunci cel mai simplu mod de a face acest lucru este cu această configurație. Și ușurința de administrare depășește atât de multe alte lucruri încât ne îndreptăm intenționat către această configurație.

Și comoditatea este că, dacă doriți să extindeți partiția de date, adăugați pur și simplu spații la partiția virtuală, apoi extindeți grupul folosind vgextend și gata! În cazuri rare, poate fi necesar altceva, dar cel puțin nu va trebui să extindeți volumul logic la început, ceea ce este deja frumos. În rest, pentru a extinde chiar acest volum, ei recomandă mai întâi ștergerea celui existent, iar apoi crearea unuia nou deasupra... Ceea ce nu arată prea frumos și nu se poate face live, dar extinderea conform scenariului pe care l-am indicat poate fi efectuate „din mers” fără măcar a demonta partiția.

Deci, creăm un volum fizic, apoi un grup de volume care îl include și apoi 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 majusculă „L” (și dimensiunea în GB), puteți specifica una mică și apoi, în loc de o dimensiune absolută, specificați una relativă, de exemplu, pentru a utiliza jumătate din spațiul liber curent în un grup de volum, trebuie să specificați „-l +50%FREE”

Iar ultima comandă formatează partiția în sistemul de fișiere ext4 (care până acum, din experiența mea, arată cea mai mare stabilitate în cazul în care totul se rupe, așa că o prefer).

Acum montam partiția în locul potrivit. Pentru a face acest lucru, adăugați linia corectă în /etc/fstab:

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

Și apelăm

mount /var/www

Dacă apare o eroare, sună alarma! Pentru că asta înseamnă că avem o eroare în /etc/fstab. Și că la următoarea repornire vom avea probleme foarte mari. Este posibil ca sistemul să nu pornească deloc, ceea ce este adesea foarte trist pentru serviciile cloud. Prin urmare, este necesar fie să corectați urgent ultima linie adăugată, fie să o ștergeți cu totul! De aceea nu am scris comanda de montare manual - atunci nu am fi avut o ocazie atât de excelentă de a verifica configurația imediat.

Acum instalăm de fapt tot ce ne-am dorit ș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 pune și o bază de date aici, dar personal încerc să o păstrez separat de serverul web. Deși să o ții aproape este mai rapid, da. Viteza adaptoarelor de rețea virtuală este de obicei în jurul gigabitului, iar atunci când lucrați pe aceeași mașină, apelurile apar aproape instantaneu. Dar este mai puțin sigur. Ce este mai important pentru cine?

Acum adăugăm parametrul la fișierul de configurare (creăm unul nou, ideologia modernă a CentOS este așa)

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

Repornim serverul.
În comentarii, am fost certat pentru că m-a sfătuit să opresc SeLinux, așa că mă voi corecta și voi scrie despre faptul că după aceasta trebuie să vă amintiți să configurați SeLinux.
De fapt, profit! 🙂

Sursa: www.habr.com

Adauga un comentariu