Web server na CentOS 8 sa php7, node.js i redis

Predgovor

Prošlo je 2 dana od izlaska nove verzije CentOS operativnog sistema, odnosno CentOS 8. I do sada ima dosta članaka na internetu o tome kako se stvari rade u njemu, pa sam odlučio da popunim ovu prazninu. Štaviše, reći ću vam ne samo o tome kako instalirati ovaj par programa, već i o tome kako općenito vidim instaliranje 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 reći zašto se isplati preći na ovu verziju sa svih prethodnih, a za to postoje dva razloga:

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

    U redu, da budem malo ozbiljniji, puno paketa je masovno skočilo kroz nekoliko verzija. Mi (ljubitelji OS-ova nalik na redhat) konačno smo ušli, ako ne u budućnost, onda barem u sadašnjost. A pristalice Ubuntua nam se više neće smijati i upirati prstom u nas, pa... bar neko vrijeme ;).

  2. Prijelaz sa yum na dnf. Glavna razlika je u tome što je sada službeno podržan rad s nekoliko verzija paketa odjednom. Pravo u osmom, nikada ovo nisam smatrao korisnim, ali zvuči obećavajuće.

Kreirajte virtuelnu mašinu

Postoje različiti hipervizori i ja nemam cilj da čitaoca skrojim po određenom, reći ću vam o opštim principima.

memorija

Prvo... Da biste sigurno instalirali CentOS sistem počevši od 7, a po mom mišljenju tako je bilo i u 6 (“ali ovo nije sigurno”), trebate minimum 2 GB RAM-a. Stoga vam savjetujem da prvo date toliko.

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

disk

Za normalnu instalaciju trebali biste kreirati virtualni disk kapaciteta 20-30 GB. Ovo je dovoljno za sistem. I drugi disk za podatke. Može se dodati i u fazi kreiranja virtuelne mašine i nakon toga. Obično ga dodam kasnije.

procesor

Na jednom jezgru, goli sistem ne usporava. A pošto 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 ponovo ulazite u konfigurator)

Ostalo se obično može ostaviti kao zadano.

Prava instalacija

Dakle... Pokrenimo instalater... Lično, takve servise već dugo instaliram samo u vidu virtuelnih mašina, tako da neću opisivati ​​sve vrste distributivnih zapisa na fleš disku - samo montiram ISO kao CD u mom omiljenom hipervizoru, preuzmite i idite.

Osnovna instalacija je prilično tipična, zadržat ću se samo na nekoliko tačaka.

Odabir izvora

Od izlaska osme verzije, ogledalo iz Yandexa leži danima. Pa, to jest, periodično raste, a onda opet počinje da pokazuje grešku. Siguran sam da je to zbog prevelikog opterećenja servisa. Dakle, da bih naznačio izvor, morao sam lično, umjesto da unesem uobičajenu adresu, otići ovdje, tamo odaberite ogledalo koje mi se sviđa i ručno unesite adresu u prozor za instalaciju. Ovdje je važno zapamtiti da morate odrediti putanju do mape u kojoj se nalazi direktorij repodata. Na primjer mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Particioniranje diska

Ovo pitanje je po mom mišljenju prilično religiozno. Svaki administrator ima svoj stav po ovom pitanju. Ali ipak ću podijeliti svoje gledište o ovom pitanju.

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

Na primjer, ako nešto krene po zlu i dođe do grešaka na glavnoj particiji podataka, želite da i dalje budete u mogućnosti da pokrenete sistem i izvršite mjere oživljavanja. Stoga, ja lično izdvajam posebnu particiju za /boot. Postoji kernel i bootloader. Obično je dovoljno 500 megabajta, ali u rijetkim slučajevima može biti potrebno i više, a s obzirom na to da smo već navikli mjeriti prostor u terabajtima, za ovu sekciju izdvajam 2 GB. I važno je da se to ne može učiniti lvm.

Zatim dolazi korijen sistema. Za normalnu instalaciju nikada mi nije bilo potrebno više od 4 GB po sistemu, ali tokom zakazanih događaja često koristim /tmp direktorij za raspakivanje distribucija i ne vidim smisla da ga posvetim posebnoj particiji - u modernim sistemima čisti se automatski, tako da se ne puni. Tako da izdvajam 8GB za root.

Swap... Uglavnom, malo je praktične koristi od toga. Ako počnete koristiti swap na svom serveru, danas u stvarnom svijetu to samo znači da server treba dodati više RAM-a. U suprotnom, problemi sa performansama su zagarantovani (ili neki program „propušta“ memoriju). Stoga je ovaj odjeljak potreban samo u dijagnostičke svrhe. Stoga je 2 GB odličan broj. Da, bez obzira na to koliko memorije ima na serveru. Da, čitao sam sve one članke gdje piše o odnosu volumena memorije i swap volumena... IMHO, zastarjeli su. Za 10 godina prakse ovo mi nikada nije trebalo. Prije 15 godina koristio sam ih, da.

IMHO, svako može sam odlučiti da li da dodijeli /home u posebnu particiju. Ako će neko na serveru aktivno koristiti ovaj direktorij, bolje ga je dodijeliti. Ako niko, nema potrebe.

Dalje, /var. Po mom mišljenju, to svakako treba istaknuti. Za početak, možete se ograničiti na 4 GB i vidjeti kako ide. I da, pod "kako ide" mislim na to

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

Nedodijeljeni prostor će ostati 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 njegova lokacija se u principu ne može odrediti. Ali kao što sam gore napisao, vaš sistem ne bi trebalo uopste koristite swap. Stoga, nije bitno gde se on nalazi. Pa ne živimo '95, iskreno!

Nadalje, u LVM-u postoji nekoliko osnovnih entiteta s kojima morate biti u mogućnosti živjeti:

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

Fizički volumeni se kombiniraju u grupe, a svaki fizički volumen može biti u samo jednoj grupi, a grupa se može smjestiti na nekoliko fizičkih volumena odjednom.
A logički svesci su svaki u jednoj grupi.

Ali... Prokletstvo, opet je 21. vijek. A serveri su virtuelni. Nema smisla primjenjivati ​​na njih iste mehanizme koji su primijenjeni na fizičke. A za virtuelne je važno imati podatke odvojeno od sistema! Ovo je vrlo važno, posebno za mogućnost brzog prebacivanja podataka na drugu virtuelnu mašinu (na primjer, prilikom prelaska na novi OS) i općenito za sve vrste korisnih dobara (na primjer, odvojene sigurnosne kopije po particijama pomoću hipervizorskih alata) . Dakle, jedna grupa volumena se koristi za sistem i nužno se druga koristi za podatke! Ova logična podjela puno pomaže u životu!

Ako ste kreirali samo jedan virtuelni čvrsti disk prilikom kreiranja virtuelne mašine, tu se konfiguracija završava. A ako ih ima dva, samo nemojte još označavati drugu.

Započnimo instalaciju.

Nakon instalacije

Dakle, novoinstalirani sistem se konačno pokrenuo. Prva stvar koju trebate provjeriti je internet.

ping ya.ru

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

Sada ako još nismo pod root-om, idi pod root, jer kucamo je broj komandi sa sudo me je lično slomio (i neka mi oproste paranoični administratori):

sudo -i

Sada prvo što radimo je da kucamo

dnf -y update

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

Sada konfigurirajmo preostali disk

Recimo da je particija sa sistemom bila xvda, onda će disk sa podacima biti xvdb. UREDU.

Većina savjeta će početi sa “Pokreni fdisk i kreiraj particiju...”

Dakle, ovo je pogrešno!

Reći ću ponovo jer je jako važno! U ovom slučaju, rad sa LVM-om, koji zauzima cijeli jedan virtualni disk, stvaranje particija na njemu je štetno! Svaka riječ u ovoj frazi je važna. Ako radimo bez LVM-a, moramo. Ako imamo sistem i podatke na disku, potrebni su nam. Ako iz nekog razloga moramo ostaviti pola diska praznu, trebali bismo i mi. Ali obično su sve ove pretpostavke čisto teorijske. Jer ako odlučimo dodati prostor postojećoj particiji, onda je najlakši način da to učinimo s ovom konfiguracijom. A jednostavnost administracije toliko nadmašuje mnoge druge stvari da se namjerno krećemo prema ovoj konfiguraciji.

A pogodnost je da ako želite proširiti particiju podataka, jednostavno dodate razmake virtualnoj particiji, zatim proširite grupu pomoću vgextend i to je to! U rijetkim slučajevima može biti potrebno nešto drugo, ali barem nećete morati širiti logički volumen na početku, što je već lijepo. Inače, za proširenje baš ovog volumena, preporučuju prvo brisanje postojećeg, pa onda kreiranje novog na vrhu... Što ne izgleda baš lijepo i ne može se uživo, ali proširenje po scenariju koji sam naveo može biti izvedeno "u hodu" čak i bez demontaže pregrade.

Dakle, kreiramo fizički volumen, zatim grupu volumena koja ga uključuje, a zatim particiju za naš server:

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 odrediti malu, a zatim umjesto apsolutne veličine, navesti relativnu, na primjer, da biste koristili polovinu trenutno slobodnog prostora u grupu volumena, trebate navesti “-l +50% BESPLATNO”

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

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

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

I biramo

mount /var/www

Ako dođe do greške, oglasi se alarmom! Jer to znači da imamo grešku u /etc/fstab. I da ćemo pri sljedećem ponovnom pokretanju imati veoma velike probleme. Sistem se možda uopšte neće pokrenuti, što je često veoma tužno za usluge u oblaku. Stoga je potrebno hitno ispraviti zadnji dodani red ili ga potpuno izbrisati! Zato naredbu za montiranje nismo napisali ručno - tada ne bismo imali tako odličnu 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 lično se trudim da je držim odvojeno od web servera. Iako je držanje blizu nje brže, da. Brzina virtuelnih mrežnih adaptera je obično oko gigabita, a kada se radi na istoj mašini, pozivi se javljaju gotovo trenutno. Ali je manje siguran. Šta je kome važnije?

Sada dodajemo parametar u konfiguracijski fajl (kreiramo novi, moderna ideologija CentOS-a je ovakva)

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

Ponovo pokrećemo server.
U komentarima su me ukorili što mi je savjetovao da isključim SeLinux, pa ću se ispraviti i pisati o tome da nakon ovoga morate zapamtiti da konfigurišete SeLinux.
Zapravo, profit! 🙂

izvor: www.habr.com

Dodajte komentar