Веб-сервер на CentOS 8 с php7, node.js и redis

Predgovor

Pred dveema dnevi je izšla nova različica operacijskega sistema CentOS, in sicer CentOS 8. Na spletu je še vedno precej malo člankov o tem, kako v njem kaj delati, zato sem se odločil zapolniti to pomanjkljivost. Povedal bom ne le o tem, kako namestiti to dvojico programov, ampak tudi o tem, kako sploh vidim namestitev LINUX-a v virtualno okolje v sodobnem svetu za tipične naloge, vključno z razdelitvijo diskov in podobno.

Najprej pa želim na kratko povedati, zakaj se splača preiti na to različico iz vseh prejšnjih, in to iz dveh razlogov:

  1. php7! V prejšnji različici CentOS se je namestil "pravi" php5.4…

    No, če se pogovorim bolj resno, pa je veliko paketov preskočilo več različic naenkrat. Mi (občudovalci OS-ov na osnovi redhat) smo končno vstopili, če ne v prihodnost, pa vsaj v sedanjost. Podporniki Ubuntu nas ne bodo več tako zaničevali in kazali s prstom, no… vsaj za nekaj časa ;).

  2. Prehod z yum na dnf. Glavna razlika je v tem, da zdaj uradno podpiramo delo z več različicami paketov hkrati. Tukaj v osmo verzijo mi to še nikoli ni prav prišlo prav, ampak zveni obetavno.

Ustvarjanje virtualnega stroja

Hiperzavori so različni in nimam namena bralce usmerjati k določenemu, povedal bom o splošnih načelih.

Pomnilnik

Prvo… Za namestitev sistema CentOS je od različice 7 naprej točno tako, kot je bilo tudi v 6 ("ampak to ni natančno"), potrebno minimum 2 GB pomnilnika. Zato priporočam, da sprva dodelite toliko.

Ampak če se kaj zgodi, lahko po namestitvi količino pomnilnika tudi zmanjšate. Na 1 GB goli sistem deluje popolnoma normalno, preveril sem.

Disk

Za normalno namestitev bi morali ustvariti virtualni disk velikosti 20-30 GB. To je dovolj za sistem. In drugi disk za podatke. Dodate ga lahko tako med ustvarjanjem virtualne naprave, kot tudi kasneje. Običajno ga dodam kasneje.

Procesor

Na eni jedru goli sistem ne zaostaja. In ker se viri zlahka prilagajajo, ne vidim smisla, da bi ob namestitvi dodeljevali več (razen če točno poznate zahteve in vam je leno še enkrat iti v konfigurator).

Ostalo običajno lahko pustite privzeto.

Pravzaprav namestitev

Torej… Začenjamo z namestitvijo… Osebno sem že dolgo časa takšne storitve nameščal le v obliki virtualnih strojev, zato ne bom opisoval vsega, kar se tiče zapisovanja distribucije na USB ključek — preprosto montiram ISO kot CD-disk v svojem najljubšem hipervizorju, zagnati in gremo.

Osnovna namestitev poteka precej običajno, ustavil se bom le na nekaj točkah.

Izbira vira

Odkar je izšla osma različica, ogledalo od Yandexa leži že nekaj dni. No, občasno se dvigne, nato pa spet začne prikazovati napako. Prepričan sem, da je vzrok prekomerna obremenitev storitve. Zato sem moral pri navedbi vira osebno namesto da bi vnesel običajen naslov, iti, tukaj, izbrati tisto ogledalo, ki mi je všeč, in ročno vnesti naslov v okno namestitvenega programa. Tu je pomembno, da se spomnimo, da je treba navesti pot do tiste mape, kjer je katalog repodata. Na primer, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Delitev diska

To vprašanje je po mojem mnenju bolj religiozno. Vsak skrbnik ima svoje stališče glede tega. A vseeno bom delil svoje mnenje o tem vprašanju.

Ja, v bistvu je možno vse mesto dodeliti korenu in delovalo bi, večinoma celo zelo dobro. Zakaj bi torej delali vrtnarijo z različnimi razdelki? — Glavni razlogi so po mojem mnenju 2: kvote in prenosljivost.

Na primer, če gre kaj narobe in na glavnem razdelku s podatki nastanejo napake, si želimo imeti možnost, da še vedno naložimo sistem in izvedemo reševalne ukrepe. Zato osebno dodeljujem poseben razdelek za /boot. Tam leži jedro in nalagalnik. Običajno zadostuje 500 MB, a v redkih primerih je lahko potrebnih več, ob upoštevanju, da smo že navajeni meriti prostor v terabajtih, jaz dodeljujem 2 GB za ta razdelek. In tukaj je pomembno, da ga ne moremo narediti lvm.

Nato sledi koren sistema. Za normalno namestitev mi nikoli ni bilo potrebno več kot 4 GB prav za sistem, toda med načrtovanimi dejavnostmi pogosto uporabljam imenik /tmp za razpakiranje distribucij, in nimam smisla dodeliti ga za poseben razdelek — v sodobnih sistemih se samodejno čišči, zato se ne napolni. Tako da za koren dodeljujem 8 GB.

Swap… Na velik način, praktična korist od njega je mala. Ako se na vašem serveru koristi swap, to danas u stvarnom svetu znači samo jedno — serveru je potrebno dodati više RAM-a. Inače su problemi sa performansama zagarantovani (ili neka aplikacija „curi“). Stoga je ovaj odeljak potreban samo za dijagnostiku. Zbog toga je 2 GB odlična cifra. Da, bez obzira na to koliko memorije ima server. Da, pročitao sam sve te članke koji govore o odnosu između količine memorije i količine swap-a… Po mom mišljenju, oni su zastareli. U 10 godina prakse, to nikada nije bilo od koristi. Pre 15 godina, jesam ih primenjivao, da.

Da li odvojiti /home u poseban deo, mislim da svako može sam odlučiti. Ako neko aktivno koristi taj katalog na serveru, bolje je odvojiti. Ako niko — nema potrebe.

Dalje, /var. Po mom mišljenju, to se mora obavezno odvojiti. U početku možete ograničiti na cifru od 4 GB, a dalje kako bude išlo. I da, pod „kako bude išlo“ mislim da

  1. Prvo, uvek možete montirati drugi disk u poddirektorij /var (što ću kasnije pokazati na primeru)
  2. Drugo, mi imamo LVM — uvek možemo dodati. A obično se dodaje kada previše logova počne dolaziti. Ali nikada ne mogu unapred predvideti tu cifru, zato počinjem sa 2 GB, a onda gledam.

Neiskorišćeno mesto će ostati slobodno u grupi volumena, može se uvek iskoristiti kasnije.

LVM

Vse Odeljci, osim /boot, ima smisla napraviti u LVM-u. Da, uključujući swap. Da, prema svim savetima, swap bi trebao biti na početku diska, a u slučaju LVM-a, njegovo mesto ne može se utvrditi u načelu. No, kao što sam već napisao, vaš sistem ne bi smela može uopšte ne koristiti swap. I stoga nije važno gde se nalazi. Pa, ne živimo mi 1995. godine, iskreno!

Dalje, u LVM-u postoje nekoliko osnovnih entiteta s kojima treba znati živeti:

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

Fizički volumeni se kombinuju u grupe, pri čemu svaki fizički volumen može biti samo u jednoj grupi, a grupa može biti na više fizičkih volumena.
A logički volumeni su svaki u jednoj grupi.

A vendar... imamo, hudiča, spet 21. stoletje. In virtualni strežniki. Ni smiselno uporabljati istih mehanizmov, ki so se uporabljali za fizične. Za virtualne je zelo pomembno imeti podatke ločeno od sistema! To je še posebej pomembno za hitro premikanje podatkov na drugo virtualko (na primer pri prehodu na nov operacijski sistem) in druge koristne lastnosti (ločeni varnostni varnostni kopiji po delih, na primer s pomočjo hipervizorja). Zato se ena skupina prostornin uporablja za sistem, druga pa nujno za podatke! To logično ločevanje močno pomaga v vsakdanjem življenju!

Če ste ob ustvarjanju virtualnega stroja ustvarili le en virtualni disk, se tam konfiguracija konča. Če pa sta dva, drugega za zdaj preprosto ne označite.

Začnemo z namestitvijo.

Po namestitvi

Torej, končno se je naložil sveže nameščen sistem. Prva stvar, ki jo je treba preveriti — internet.

ping ya.ru

Je odgovor? — Odlično, pritisnite Ctrl-C.
Če ni — pojdite nastavit mrežo, brez tega ni življenja, toda moja objava ni o tem.

Zdaj, če še nismo pod rootom, se prijavimo kot root, ker mi je neprijetno vnašati takvo število ukazov s sudo (in naj me oprostijo paranoični administratorji):

sudo -i

Zdaj najprej vnašamo

dnf -y update

In če to objavo berete v letu 2019, verjetno se ne bo zgodilo nič, toda poskusiti je vredno.

Zdaj konfigurirajmo preostali disk

Recimo, da je particija s sistemom xvda, potem bo disk s podatki xvdb. V redu.

Večina nasvetov se bo začela z besedami 'Zaženi fdisk in ustvarite particijo...'

Torej, to je napačno!

Še enkrat ponavljam, ker je to pomembno! V tem primeru je za delo z LVM, ki zaseda en cel virtualni disk, ustvarjanje particij na njem škodljivo! Vsaka beseda v tej frazi je pomembna. Če delamo brez LVM — je treba. Če imamo na disku, recimo, sistem in podatke — je treba. Če moramo iz kakršnega koli razloga pustiti pol disk praznim — tudi je treba. A običajno so vsi ti predpostavki zgolj teoretični. Kajti če se odločimo dodati prostor obstoječi particiji, bo to najlažje narediti prav pri taki konfiguraciji. In praktičnost pri upravljanju toliko prevlada nad mnogimi stvarmi, da se usmerjamo k tej konfiguraciji.

Prednost je u tome što, ako želite proširiti odjeljak s podacima, jednostavno dodate prostor u virtualni odjeljak, nakon čega proširite grupu koristeći vgextend i to je to! U rijetkim slučajevima može biti potrebno nešto drugo, ali barem nije potrebno proširivati na početku logički volumen, što je već ugodno. Inače, za proširenje tog volumena preporučuju prvo brisanje postojećeg, a zatim stvaranje novog iznad... Što ne izgleda baš ugodno i ne može se napraviti uživo, dok se proširenje prema mom scenariju može provesti "u hodu" čak i bez odmaštavanja odjela.

Dakle, kreiramo fizički volumen, zatim grupu volumena koja ga uključuje i potom odjeljak za naš poslužitelj:

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

Ovde umjesto velike slova "L" (i veličine u GB) možemo navesti malo slovo i tada umjesto apsolutne veličine navesti relativnu, na primjer, da bismo iskoristili polovinu slobodnog prostora trenutno dostupnog u grupi volumena, trebamo navesti "-l +50%FREE".

Posljednja komanda formatira odjeljak u datotečni sustav ext4 (koji se do sada, prema mom iskustvu, pokazuje najstabilnijim u slučaju da se nešto pokvari, stoga ga preferiram).

Sada montiramo odjeljak na željeno mesto. Za to dodajemo pravu liniju u /etc/fstab:

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

I upisujemo

mount /var/www

Ako se pojavi greška — oglašavamo alarm! Jer to znači da imamo grešku u /etc/fstab. I da će sljedećim ponovnim pokretanjem biti vrlo velikih problema. Sustav možda uopće neće uspjeti pokrenuti, što je za cloud usluge često vrlo tužno. Stoga je potrebno ili hitno ispraviti posljednji napisani redak, ili ga potpuno ukloniti! Zato nismo ručno zapisali komandu za montiranje — tada ne bismo dobili ovu divnu mogućnost za provjeru konfiguracije odmah.

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

Po želji lahko tukaj namestite tudi podatkovno bazo, vendar osebno raje ohranjam ločeno od spletnega strežnika. Čeprav je bližje, hitreje, ja. Hitrost virtualnih omrežnih adapterjev je običajno okoli gigabita, pri delovanju na istem računalniku pa so dostopi skoraj trenutni. Vendar je to manj varno. Tu je odvisno, kaj je komu pomembneje.

Zdaj dodamo parameter v konfiguracijsko datoteko (ustvarimo novo, sodobna ideologija CentOS-a je taka)

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

Ponovno zagnamo strežnik.
V komentarjih so me kritizirali za nasvet, da izklopim SeLinux, zato se popravljam in pišem o tem, da po tem ne pozabite nastaviti SeLinux.
Dejansko, dobiček! 🙂

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster