Web poslužitelj na CentOS 8 s php7, node.js i redis

predgovor

Prošlo je 2 dana od izlaska nove verzije CentOS operativnog sustava, točnije CentOS 8. I do sada je na internetu bilo dosta članaka o tome kako se stvari rade u njemu, pa sam odlučio popuniti ovu prazninu. Štoviše, reći ću vam ne samo o tome kako instalirati ovaj par programa, već i o tome kako općenito vidim instalaciju Linuxa u virtualnom okruženju u modernom svijetu za tipične zadatke, uključujući particioniranje diskova i tako dalje.

Ali na početku želim ukratko govoriti o tome zašto se isplati prebaciti na ovu verziju sa svih prethodnih, a za to postoje dva razloga:

  1. php7! U prethodnoj verziji CentOS-a bio je instaliran “pravoslavni” php5.4...

    Dobro, da budem malo ozbiljniji, dosta je paketa masovno skakalo po nekoliko verzija. Mi (fanovi redhat-like OS-a) konačno smo ušli, ako ne u budućnost, onda barem u sadašnjost. I neće nam se pobornici Ubuntua više smijati i upirati prstom u nas, pa...barem neko vrijeme ;).

  2. Prijelaz iz yum u dnf. Glavna razlika je u tome što je sada službeno podržan rad s nekoliko verzija paketa odjednom. Točno u osmici, nikad mi to nije bilo korisno, ali zvuči obećavajuće.

Stvorite virtualni stroj

Postoje različiti hipervizori i nemam cilj prilagoditi čitatelja određenom, reći ću vam o općim načelima.

memorija

Prvo... Da biste sigurno instalirali CentOS sustav počevši od 7, a po mom mišljenju to je bio slučaj i u 6 (“ali to nije sigurno”), trebate minimum 2 GB RAM-a. Stoga vam savjetujem da prvo toliko izdate.

Ali ako ništa drugo, nakon instalacije veličina memorije se može smanjiti. Na 1 GB goli sustav radi prilično dobro, provjerio sam.

disk

Za normalnu instalaciju trebali biste stvoriti virtualni disk kapaciteta 20-30 GB. Ovo je dovoljno za sustav. I drugi disk za podatke. Može se dodati i u fazi stvaranja virtualnog stroja i nakon toga. Obično ga dodam kasnije.

procesor

Na jednoj jezgri, goli sustav ne usporava. A budući da su resursi slobodno skalabilni, ne vidim smisla davati više u fazi instalacije (osim ako savršeno poznajete zahtjeve i previše ste lijeni da ponovno uđete u konfigurator)

Ostatak se obično može ostaviti kao zadani.

Stvarna instalacija

Dakle... Pokrenimo instalacijski program... Osobno već dugo instaliram takve usluge samo u obliku virtualnih strojeva, tako da neću opisivati ​​sve vrste distribucijskih zapisa na flash disku - samo montiram ISO kao CD u mom omiljenom hipervizoru, preuzmite i krenite.

Osnovna instalacija je prilično tipična, zaustavit ću se samo na nekoliko točaka.

Izbor izvora

Od izdavanja osme verzije, zrcalo iz Yandexa ležalo je danima. Pa, to jest, povremeno raste, a zatim opet počinje pokazivati ​​pogrešku. Siguran sam da je to zbog preopterećenosti usluge. Stoga sam za naznaku izvora osobno morao, umjesto uobičajene adrese, otići ovdje, tamo odaberite ogledalo koje mi se sviđa i ručno unesite adresu u prozor instalacijskog programa. Ovdje je važno zapamtiti da morate navesti put do mape u kojoj se nalazi direktorij repodata, Na primjer ogledalo.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Particioniranje diska

Ovo pitanje je po mom mišljenju prilično vjersko. Svaki admin ima svoj stav po ovom pitanju. Ali ipak ću podijeliti svoje stajalište o tom pitanju.

Da, u principu, možete dodijeliti cijeli prostor korijenu i to će raditi, najčešće čak i prilično dobro. Zašto onda ograditi vrt različitim dijelovima? — Po mom mišljenju, dva su glavna razloga za to: kvote i prenosivost.

Na primjer, ako nešto pođe po zlu i pojave se pogreške na particiji s glavnim podacima, želite i dalje moći pokrenuti sustav i provesti mjere oživljavanja. Stoga, ja osobno izdvajam zasebnu particiju za /boot. Postoji kernel i bootloader. Obično je dovoljno 500 megabajta, ali u rijetkim slučajevima može biti potrebno više, a s obzirom na to da smo već navikli na mjerenje prostora u terabajtima, izdvajam 2 GB za ovaj odjeljak. A ovdje je važna stvar da se to ne može učiniti lvm.

Slijedi korijen sustava. Za normalnu instalaciju nikada mi nije trebalo više od 4 GB po sustavu, ali tijekom zakazanih događaja često koristim direktorij /tmp za raspakiranje distribucija i ne vidim smisla da ga posvetim zasebnoj particiji - u modernim sustavima automatski se čisti, pa se ne puni . Stoga izdvajam 8 GB za root.

Zamjena... Uglavnom, malo je praktične koristi od toga. Ako počnete koristiti swap na svom poslužitelju, danas u stvarnom svijetu to znači samo da poslužitelj treba dodati više RAM-a. U suprotnom, problemi s performansama su zajamčeni (ili neki program "curi" memoriju). Stoga je ovaj odjeljak potreban samo u dijagnostičke svrhe. Stoga je 2 GB odličan broj. Da, neovisno o tome koliko memorije ima na poslužitelju. Da, čitao sam sve te članke gdje se piše o omjeru volumena memorije i swap volumena... IMHO, zastarjeli su. U 10 godina prakse ovo mi nikad nije trebalo. Prije 15 godina sam ih koristio, da.

IMHO, svatko može sam odlučiti hoće li /home izdvojiti u zasebnu particiju. Ako će netko na poslužitelju aktivno koristiti ovaj direktorij, bolje ga je dodijeliti. Ako nitko, nema potrebe.

Dalje, /var. Po meni svakako treba istaknuti. Za početak, možete se ograničiti na 4 GB, pa vidite kako ide. I da, pod "kako to ide" mislim na to

  1. Prvo, uvijek možete montirati drugi disk u /var poddirektorij (što ću kasnije pokazati na primjeru)
  2. Drugo, imamo lvm - uvijek ga možete dodati. I obično ga morate dodati kada se tamo počne slijevati previše cjepanica. Ali nikada nisam mogao unaprijed predvidjeti ovu brojku, pa počinjem s 2 GB i onda gledam.

Nedodijeljeni prostor ostat će slobodan u grupi volumena i uvijek se može koristiti kasnije.

LVM

sve Ima smisla napraviti particije koje nisu /boot u LVM-u. Da, uključujući zamjenu. Da, prema svim savjetima, swap bi trebao biti na početku diska, ali u slučaju LVM-a njegovo mjesto se u principu ne može odrediti. Ali kao što sam gore napisao, vaš sustav ne smije uopće koristiti swap. Stoga je svejedno gdje je. Pa ne živimo u ’95., iskreno!

Nadalje, u LVM-u postoji nekoliko osnovnih entiteta s kojima morate moći živjeti:

  • fizički volumen
  • grupa volumena
  • logički volumen

Fizički volumeni se spajaju u grupe, a svaki fizički volumen može biti samo u jednoj grupi, a grupa se može nalaziti na više fizičkih volumena odjednom.
I logički svesci su svaki u jednoj grupi.

Ali... K vragu, opet je 21. stoljeće. I poslužitelji su virtualni. Nema smisla na njih primjenjivati ​​iste mehanizme koji su primijenjeni na fizičke. A za virtualne je važno imati podatke odvojeno od sustava! Ovo je vrlo važno, posebno za mogućnost brzog prebacivanja podataka na drugo virtualno računalo (na primjer, pri prelasku na novi OS) i općenito za sve vrste korisnih stvari (odvojite sigurnosne kopije po particijama pomoću alata hipervizora, na primjer) . Dakle, jedna grupa volumena se koristi za sustav, a nužno druga za podatke! Ova logična podjela puno pomaže u životu!

Ako ste kreirali samo jedan virtualni tvrdi disk prilikom stvaranja virtualnog stroja, ovdje konfiguracija završava. A ako postoje dva, onda samo još nemojte označiti drugi.

Počnimo s instalacijom.

Postinstalacija

Dakle, novoinstalirani sustav se konačno pokrenuo. Prvo što trebate provjeriti je internet.

ping ya.ru

Ima li odgovora? - Super, pritisnite Ctrl-C.
Ako ne, idite postaviti mrežu, bez ovoga nema života, ali moj članak nije o tome.

Sada ako još nismo pod rootom, idite pod root, jer tipkanje ovo osobno me slomio broj naredbi sa sudo (i neka mi paranoični admini oproste):

sudo -i

Sada prvo što radimo je tipkanje

dnf -y update

A ako ovaj članak čitate u 2019., najvjerojatnije se ništa neće dogoditi, ali vrijedilo je pokušati.

Sada konfigurirajmo preostali disk

Recimo da je particija sa sustavom bila xvda, tada će podatkovni disk biti xvdb. U REDU.

Većina savjeta počinje s "Pokreni fdisk i stvori particiju..."

Dakle, ovo je nepravilno!

Ponovit ću to jer je jako važno! U ovom slučaju, za rad s LVM-om, koji zauzima cijeli virtualni disk, stvaranje particija na njemu je štetno! Svaka riječ u ovoj frazi je važna. Ako radimo bez LVM-a, moramo. Ako imamo sustav i podatke na disku, to nam treba. Ako iz nekog razloga trebamo ostaviti pola diska praznim, trebali bismo također. Ali obično su sve ove pretpostavke čisto teoretske. Jer ako odlučimo dodati prostor na postojeću particiju, onda je to najlakši način učiniti ovom konfiguracijom. A jednostavnost administracije toliko nadjačava mnoge druge stvari da se namjerno krećemo prema ovoj konfiguraciji.

A pogodnost je u tome što ako želite proširiti podatkovnu particiju, jednostavno dodate razmake u virtualnu particiju, zatim proširite grupu koristeći vgextend i to je to! U rijetkim slučajevima može biti potrebno nešto drugo, ali barem nećete morati proširivati ​​logički volumen na početku, što je već lijepo. Inače, za proširenje ovog volumena preporučuju prvo brisanje postojećeg, a zatim stvaranje novog na vrhu... Što ne izgleda baš lijepo i ne može se napraviti uživo, ali proširenje prema scenariju koji sam naznačio može biti provodi se "u hodu" bez demontaže particije.

Dakle, stvaramo fizički volumen, zatim grupu volumena koja ga uključuje, a zatim particiju za naš poslužitelj:

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

Ovdje umjesto velikog slova “L” (i veličine u GB) možete navesti malo, a zatim umjesto apsolutne veličine navesti relativnu, npr. da koristite polovicu trenutno slobodnog prostora u grupu volumena, trebate navesti "-l +50% BESPLATNO"

I posljednja naredba formatira particiju u ext4 datotečnom sustavu (koji do sada po mom iskustvu pokazuje najveću stabilnost u slučaju da se sve pokvari, pa mi je draži).

Sada montiramo particiju na pravo mjesto. Da biste to učinili, dodajte ispravan redak u /etc/fstab:

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

I biramo

mount /var/www

Ako se pojavi greška, uključite alarm! Jer to znači da imamo grešku u /etc/fstab. I da ćemo kod sljedećeg ponovnog pokretanja imati jako velikih problema. Sustav se možda uopće neće pokrenuti, što je često vrlo tužno za usluge u oblaku. Stoga je potrebno ili hitno ispraviti zadnji dodani redak, ili ga u potpunosti izbrisati! Zato nismo ručno napisali naredbu montiranja - tada ne bismo imali tako izvrsnu priliku da odmah provjerimo konfiguraciju.

Sada zapravo instaliramo sve što smo htjeli i otvaramo portove za web:

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

Ako želite, ovdje možete staviti i bazu podataka, ali osobno je pokušavam držati odvojenom od web poslužitelja. Iako je brže držati nju blizu, da. Brzina virtualnih mrežnih adaptera obično je oko gigabita, a kada se radi na istom računalu, pozivi se javljaju gotovo trenutno. Ali manje je sigurno. Što je kome važnije?

Sada dodajemo parametar u konfiguracijsku datoteku (stvaramo novu, moderna ideologija CentOS-a je ovakva)

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

Ponovno pokrećemo server.
U komentarima su me prekorili što sam savjetovao da isključim SeLinux, pa ću se ispraviti i napisati da nakon ovoga morate zapamtiti konfiguraciju SeLinuxa.
Zapravo, profit! 🙂

Izvor: www.habr.com

Dodajte komentar