Spletni strežnik na CentOS 8 s php7, node.js in redis

Predgovor

Minila sta že 2 dni od izida nove različice operacijskega sistema CentOS, in sicer CentOS 8. In do sedaj je na spletu kar nekaj člankov o tem, kako se v njem dela, zato sem se odločil zapolniti to vrzel. Poleg tega vam bom povedal ne samo o tem, kako namestiti ta par programov, ampak tudi o tem, kako na splošno vidim namestitev Linuxa v virtualnem okolju v sodobnem svetu za tipične naloge, vključno s particioniranjem diskov in tako naprej.

Toda na začetku želim na kratko spregovoriti o tem, zakaj je vredno preklopiti na to različico od vseh prejšnjih, in za to sta dva razloga:

  1. php7! V prejšnji različici CentOS je bil nameščen “pravoslavni” php5.4...

    Okej, če smo malo bolj resni, veliko paketov je množično skakalo skozi več različic. Končno smo (ljubitelji operacijskih sistemov, podobnih redhatu) vstopili, če ne v prihodnost, pa vsaj v sedanjost. In podporniki Ubuntuja se nam ne bodo več smejali in kazali s prstom na nas, no...vsaj nekaj časa ;).

  2. Prehod iz yum v dnf. Glavna razlika je v tem, da je zdaj uradno podprto delo z več različicami paketov hkrati. Prav v osmici, to se mi nikoli ni zdelo uporabno, vendar zveni obetavno.

Ustvarite virtualni stroj

Obstajajo različni hipervizorji in nimam cilja, da bi bralca prilagodil določenemu, povedal vam bom o splošnih načelih.

spomin

Prvič ... Za namestitev sistema CentOS od 7 zagotovo, in po mojem mnenju je bilo tako tudi v 6 ("ampak to ni gotovo"), potrebujete najnižja 2 GB RAM. Zato vam svetujem, da najprej toliko izdate.

Če pa kaj, se lahko po namestitvi velikost pomnilnika zmanjša. Pri 1 GB goli sistem deluje precej dobro, sem preveril.

disk

Za običajno namestitev bi morali ustvariti virtualni disk s kapaciteto 20-30 GB. To je dovolj za sistem. In drugi disk za podatke. Doda se lahko tako v fazi ustvarjanja virtualnega stroja kot po njem. Običajno ga dodam pozneje.

procesor

Na enem jedru se goli sistem ne upočasni. In ker so viri prosto prilagodljivi, ne vidim smisla, da bi dali več v fazi namestitve (razen če popolnoma poznate zahteve in ste preleni, da bi znova šli v konfigurator)

Ostalo lahko običajno pustite privzeto.

Dejanska namestitev

Torej ... Zaženimo namestitveni program ... Osebno že dolgo nameščam takšne storitve samo v obliki virtualnih strojev, zato ne bom opisoval vseh vrst distribucijskih zapisov na bliskovnem pogonu - samo priklopim ISO kot CD v mojem najljubšem hipervizorju, prenesite in pojdite.

Osnovna namestitev je precej tipična, osredotočil se bom le na nekaj točk.

Izbira vira

Od izdaje osme različice ogledalo iz Yandexa leži več dni. No, to je, občasno se dvigne, nato pa spet začne kazati napako. Prepričan sem, da je to posledica prevelike obremenitve storitve. Zato sem osebno moral, da bi navedel vir, namesto da vnesem običajni naslov, iti tukaj, tam izberite ogledalo, ki mi je všeč, in ročno vnesite naslov v okno namestitvenega programa. Pomembno si je zapomniti, da morate določiti pot do mape, v kateri se nahaja imenik repodata. Na primer mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Particioniranje diska

To vprašanje je po mojem mnenju precej versko. Vsak administrator ima svoje stališče do te zadeve. Vendar bom vseeno delil svoje stališče do tega vprašanja.

Da, načeloma lahko korenu dodelite ves prostor in bo delovalo, največkrat celo kar dobro. Zakaj potem ograditi vrt z različnimi deli? — Po mojem mnenju sta za to dva glavna razloga: kvote in prenosljivost.

Na primer, če gre kaj narobe in pride do napak na glavni podatkovni particiji, želite imeti še vedno možnost zagona sistema in izvajanja ukrepov oživljanja. Zato osebno dodelim ločeno particijo za /boot. Obstajata jedro in zagonski nalagalnik. Običajno je dovolj 500 megabajtov, v redkih primerih pa bo morda potrebno več in glede na to, da smo prostor že navajeni meriti v terabajtih, temu razdelku namenjam 2 GB. In pomembna stvar tukaj je, da tega ni mogoče storiti lvm.

Sledi koren sistema. Za običajno namestitev nikoli nisem potreboval več kot 4 GB na sistem, vendar med načrtovanimi dogodki pogosto uporabljam imenik /tmp za razpakiranje distribucij in ne vidim smisla, da bi ga namenil ločeni particiji - v sodobnih sistemih se samodejno očisti, zato se ne polni. Zato dodelim 8 GB za root.

Zamenjava... Na splošno je malo praktične uporabe. Če na svojem strežniku začnete uporabljati swap, to danes v resničnem svetu pomeni le, da mora strežnik dodati več RAM-a. V nasprotnem primeru so težave z delovanjem zagotovljene (ali kakšen program "pušča" pomnilnik). Zato je ta razdelek potreben samo za diagnostične namene. Zato je 2 GB odlična številka. Da, ne glede na to, koliko pomnilnika je na strežniku. Ja, bral sem vse tiste članke, kjer piše o razmerju med prostornino pomnilnika in prostornino swapa... IMHO, so zastareli. V 10 letih prakse tega še nikoli nisem potreboval. Pred 15 leti sem jih uporabljal, ja.

IMHO, vsak se lahko sam odloči, ali bo /home dodelil v ločeno particijo. Če bo nekdo na strežniku aktivno uporabljal ta imenik, je bolje, da ga dodelite. Če nihče, ni potrebe.

Naprej, /var. Po mojem mnenju ga je vsekakor treba izpostaviti. Za začetek se lahko omejite na 4 GB in poglejte, kako gre. In ja, s "kako gre" mislim na to

  1. Prvič, vedno lahko namestite drug disk v podimenik /var (kar bom kasneje pokazal s primerom)
  2. Drugič, imamo lvm - vedno ga lahko dodate. In običajno ga morate dodati, ko se začne tja zlivati ​​preveč polen. Toda nikoli nisem mogel vnaprej predvideti te številke, zato začnem z 2 GB in nato gledam.

Nedodeljeni prostor bo ostal prost v skupini nosilcev in ga je mogoče uporabiti pozneje.

LVM

vsi V LVM je smiselno narediti particije, ki niso /boot. Da, vključno z menjavo. Ja, po vseh nasvetih bi moral biti swap na začetku diska, pri LVM pa njegove lokacije načeloma ni mogoče določiti. Ampak kot sem napisal zgoraj, vaš sistem ne bi smel sploh uporabi swap. Zato ni pomembno, kje je. No, res ne živimo v letu 95!

Poleg tega je v LVM več osnovnih entitet, s katerimi morate biti sposobni živeti:

  • fizični volumen
  • nosilna skupina
  • logični volumen

Fizični nosilci so združeni v skupine in vsak fizični nosilec je lahko samo v eni skupini, skupina pa se lahko nahaja na več fizičnih nosilcih hkrati.
In logični nosilci so vsak v eni skupini.

Ampak ... Presneto, spet je 21. stoletje. In strežniki so virtualni. Zanje nima smisla uporabljati enakih mehanizmov, kot so bili uporabljeni za fizične. In za virtualne je pomembno imeti podatke ločeno od sistema! To je zelo pomembno, zlasti zaradi možnosti hitrega preklopa podatkov na drug virtualni stroj (na primer pri preklopu na nov OS) in na splošno za vse vrste uporabnih dobrot (ločevanje varnostnih kopij po particijah z orodji za hipervizor, na primer). . Zato se ena nosilna skupina uporablja za sistem in nujno druga za podatke! Ta logična delitev zelo pomaga v življenju!

Če ste pri ustvarjanju virtualnega stroja ustvarili samo en navidezni trdi disk, se tukaj konfiguracija konča. In če sta dva, drugega še ne označite.

Začnimo z namestitvijo.

Po namestitvi

Tako se je na novo nameščen sistem končno zagnal. Prva stvar, ki jo morate preveriti, je internet.

ping ya.ru

Ali obstaja odgovor? - Super, pritisnite Ctrl-C.
Če ne, pojdite vzpostaviti omrežje, brez tega ni življenja, vendar moj članek ne govori o tem.

Zdaj, če še nismo pod root, gremo pod root, ker tipkanje ta osebno me je zlomilo število ukazov s sudo (in naj mi paranoični skrbniki oprostijo):

sudo -i

Prva stvar, ki jo naredimo, je tipkanje

dnf -y update

In če ta članek berete v letu 2019, se najverjetneje ne bo zgodilo nič, vendar je bilo vredno poskusiti.

Zdaj pa konfigurirajmo preostali disk

Recimo, da je bila particija s sistemom xvda, potem bo podatkovni disk xvdb. V REDU.

Večina nasvetov se bo začela z "Zaženi fdisk in ustvari particijo..."

Torej je to nepravilno!

Še enkrat bom povedal, ker je tako pomembno! V tem primeru je za delo z LVM, ki zaseda en celoten virtualni disk, ustvarjanje particij na njem škodljivo! Vsaka beseda v tej frazi je pomembna. Če delamo brez LVM, moramo. Če imamo sistem in podatke na disku, jih potrebujemo. Če moramo iz nekega razloga pustiti polovico diska prazno, bi tudi morali. Toda običajno so vse te predpostavke zgolj teoretične. Kajti če se odločimo, da bomo obstoječi particiji dodali prostor, potem je to najlažje narediti s to konfiguracijo. Enostavnost upravljanja tako odtehta mnoge druge stvari, da se namerno premikamo proti tej konfiguraciji.

In priročnost je v tem, da če želite razširiti podatkovno particijo, preprosto dodate presledke v virtualno particijo, nato razširite skupino z uporabo vgextend in to je to! V redkih primerih bo morda potrebno kaj drugega, vendar vam vsaj ne bo treba razširiti logičnega nosilca na začetku, kar je že lepo. Sicer pa za razširitev prav tega volumna priporočajo, da najprej izbrišete obstoječega, nato pa ustvarite novega na vrhu ... Kar ne izgleda zelo lepo in se ne da izvesti v živo, lahko pa razširitev po scenariju, ki sem ga navedel izvedeno "sproti", ne da bi sploh odstranili particijo.

Torej ustvarimo fizični nosilec, nato skupino nosilcev, ki ga vključuje, in nato particijo za naš strežnik:

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

Tukaj lahko namesto velike črke "L" (in velikosti v GB) določite majhno, nato pa namesto absolutne velikosti določite relativno, na primer, da uporabite polovico trenutno prostega prostora v skupino nosilcev, morate določiti »-l +50% BREZPLAČNO«

In zadnji ukaz formatira particijo v datotečnem sistemu ext4 (ki do sedaj po mojih izkušnjah kaže največjo stabilnost, če se vse pokvari, zato ga imam raje).

Zdaj namestimo particijo na pravo mesto. Če želite to narediti, dodajte pravilno vrstico v /etc/fstab:

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

In pokličemo

mount /var/www

Če pride do napake, sprožite alarm! Ker to pomeni, da imamo napako v /etc/fstab. In da bomo ob naslednjem ponovnem zagonu imeli zelo velike težave. Sistem se morda sploh ne zažene, kar je pogosto zelo žalostno za storitve v oblaku. Zato je treba bodisi nujno popraviti zadnjo dodano vrstico ali pa jo v celoti izbrisati! Zato ukaza mount nismo napisali ročno - potem ne bi imeli tako odlične priložnosti, da takoj preverimo konfiguracijo.

Zdaj dejansko namestimo vse, kar smo želeli, in odpremo vrata za splet:

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

Če želite, lahko tukaj postavite tudi bazo podatkov, vendar se osebno trudim, da je ločena od spletnega strežnika. Čeprav je obdržati bližino hitreje, ja. Hitrost navideznih omrežnih adapterjev je običajno okoli gigabitov, pri delu na istem računalniku pa se klici zgodijo skoraj v trenutku. Vendar je manj varno. Kaj je komu bolj pomembno?

Zdaj dodamo parameter v konfiguracijsko datoteko (ustvarimo novo, sodobna ideologija CentOS je takšna)

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

Ponovno zaženite strežnik.
V komentarjih so me grajali, ker sem svetoval, naj izklopim SeLinux, zato se bom popravil in pisal o dejstvu, da se morate po tem spomniti konfiguracije SeLinuxa.
Pravzaprav dobiček! 🙂

Vir: www.habr.com

Dodaj komentar