Žiniatinklio serveris CentOS 8 su php7, node.js ir redis

pratarmė

Praėjo 2 dienos nuo naujos CentOS operacinės sistemos versijos išleidimo, būtent CentOS 8. Ir iki šiol internete yra nemažai straipsnių, kaip joje viskas daroma, todėl nusprendžiau užpildyti šią spragą. Be to, aš jums papasakosiu ne tik apie tai, kaip įdiegti šią porą programų, bet ir apie tai, kaip aš paprastai matau „Linux“ diegimą virtualioje aplinkoje šiuolaikiniame pasaulyje atliekant tipines užduotis, įskaitant diskų skaidymą ir pan.

Tačiau pradžioje noriu trumpai pakalbėti apie tai, kodėl verta pereiti prie šios versijos iš visų ankstesnių, ir tam yra dvi priežastys:

  1. php7! Ankstesnėje CentOS versijoje buvo įdiegtas „Orthodox“ php5.4...

    Gerai, jei rimčiau, daug paketų masiškai peršoko kelias versijas. Mes (į redhat panašių OS gerbėjai) pagaliau įžengėme jei ne į ateitį, tai bent į dabartį. O Ubuntu šalininkai nebejuoks iš mūsų ir nebadys pirštais, na... bent jau kurį laiką ;).

  2. Perėjimas iš yum į dnf. Pagrindinis skirtumas yra tas, kad dabar oficialiai palaikomas darbas su keliomis paketų versijomis vienu metu. Aštuntoje man tai niekada nebuvo naudinga, bet tai skamba daug žadančiai.

Sukurkite virtualią mašiną

Yra įvairių hipervizorių ir aš neturiu tikslo pritaikyti skaitytoją prie konkretaus, aš jums papasakosiu apie bendruosius principus.

atmintis

Pirma... Norint tikrai įdiegti CentOS sistemą pradedant nuo 7 ir, mano nuomone, taip buvo ir 6 („bet tai neaišku“), reikia minimalus 2 GB RAM. Todėl patariu pirmiausia tiek atiduoti.

Bet jei kas, po įdiegimo atminties dydis gali būti sumažintas. Prie 1 GB plika sistema veikia gana gerai, patikrinau.

diskas

Įprastam diegimui turėtumėte sukurti virtualų diską, kurio talpa 20-30 GB. To pakanka sistemai. Ir antras diskas duomenims. Jį galima pridėti tiek virtualios mašinos kūrimo etape, tiek vėliau. Dažniausiai pridedu vėliau.

procesorius

Viename šerdyje plika sistema nesulėtėja. Ir kadangi ištekliai yra laisvai keičiami, nematau prasmės duoti daugiau diegimo etape (nebent puikiai žinote reikalavimus ir tingite vėl eiti į konfigūratorių)

Likusią dalį paprastai galima palikti kaip numatytąjį.

Tikrasis įrengimas

Taigi... Paleiskime diegimo programą... Asmeniškai aš tokias paslaugas jau senokai diegiau tik virtualių mašinų pavidalu, todėl visokių platinimo įrašų „flash“ diske neaprašysiu - tiesiog montuoju ISO kaip kompaktinį diską mano mėgstamiausiame hipervizoriuje, atsisiųskite ir eikite.

Pagrindinis diegimas yra gana tipiškas, aš apsistosiu tik prie kelių punktų.

Šaltinio pasirinkimas

Nuo aštuntosios versijos išleidimo veidrodis iš „Yandex“ gulėjo kelias dienas. Na, tai yra, jis periodiškai pakyla, o tada vėl pradeda rodyti klaidą. Esu tikras, kad taip yra dėl per didelės paslaugos apkrovos. Todėl, norėdamas nurodyti šaltinį, aš asmeniškai turėjau eiti, o ne įvesti įprastą adresą čia, pasirinkite ten man patinkantį veidrodį ir rankiniu būdu įveskite adresą diegimo programos lange. Čia svarbu atsiminti, kad reikia nurodyti kelią į aplanką, kuriame yra katalogas repodata. Pavyzdžiui, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Disko skaidymas

Šis klausimas, mano nuomone, yra gana religinis. Kiekvienas administratorius šiuo klausimu turi savo poziciją. Bet vis tiek pasidalinsiu savo požiūriu į šį klausimą.

Taip, iš principo galite skirti visą erdvę šaknims ir ji veiks, dažniausiai net visai neblogai. Kam tada aptverti sodą su skirtingomis atkarpomis? — Mano nuomone, tam yra dvi pagrindinės priežastys: kvotos ir perkeliamumas.

Pavyzdžiui, jei kas nors negerai ir pagrindiniame duomenų skaidinyje atsiranda klaidų, norite, kad vis tiek galėtumėte paleisti sistemą ir atlikti gaivinimo priemones. Todėl aš asmeniškai skiriu atskirą skaidinį /boot. Yra branduolys ir įkrovos įkroviklis. Įprastai užtenka 500 megabaitų, bet retais atvejais gali prireikti ir daugiau, o atsižvelgiant į tai, kad jau esame įpratę erdvę matuoti terabaitais, šiai sekcijai skiriu 2GB. Ir čia svarbu tai, kad to negalima padaryti lvm.

Toliau ateina sistemos šaknis. Įprastam diegimui man niekada nereikėjo daugiau nei 4 GB vienai sistemai, bet suplanuotų įvykių metu dažnai naudoju /tmp katalogą paskirstymams išpakuoti ir nematau prasmės jį skirti atskiram skaidiniui - šiuolaikinėse sistemose jis išvalomas automatiškai, todėl neužpildomas. Taigi šaknims skiriu 8 GB.

Sukeisti... Iš esmės praktiškai iš to mažai naudos. Jei savo serveryje pradėsite naudoti swap, šiandien realiame pasaulyje tai reiškia tik tai, kad serveriui reikia pridėti daugiau RAM. Priešingu atveju garantuojamos našumo problemos (arba kai kurioms programoms „praleidžiama“ atmintis). Todėl šis skyrius reikalingas tik diagnostikos tikslais. Todėl 2 GB yra puikus skaičius. Taip, nepaisant to, kiek atminties yra serveryje. Taip, skaičiau visus tuos straipsnius, kur rašoma apie atminties tūrio ir swap apimties santykį... IMHO, jie pasenę. Per 10 praktikos metų man to niekada neprireikė. Prieš 15 metų aš juos naudojau, taip.

IMHO, kiekvienas gali pats nuspręsti, ar priskirti /home į atskirą skaidinį. Jei kas nors iš serverio aktyviai naudosis šiuo katalogu, geriau jį paskirstyti. Jei niekas, tai ir nereikia.

Kitas, /var. Mano nuomone, tai būtinai reikėtų pabrėžti. Pirmiausia galite apsiriboti iki 4 GB ir pamatyti, kaip viskas vyksta. Ir taip, sakydamas „kaip tai vyksta“ aš tai turiu omenyje

  1. Pirma, visada galite prijungti kitą diską į /var pakatalogią (kurį parodysiu vėliau su pavyzdžiu)
  2. Antra, mes turime lvm - visada galite jį pridėti. O pridėti dažniausiai tenka tada, kai ten pradeda pilti per daug rąstų. Bet aš niekada negalėjau iš anksto numatyti šio skaičiaus, todėl pradedu nuo 2 GB, o tada žiūriu.

Nepaskirstyta vieta tūrio grupėje liks laisva ir ją visada bus galima panaudoti vėliau.

LVM

visi Prasminga LVM sukurti kitus skaidinius nei /boot. Taip, įskaitant mainus. Taip, pagal visus patarimus, swap turėtų būti disko pradžioje, bet LVM atveju jo vieta iš esmės negali būti nustatyta. Bet kaip jau rašiau aukščiau, jūsų sistema neturėtų išvis naudok swap. Todėl nesvarbu, kur jis yra. Na, mes gyvename ne 95-aisiais, sąžiningai!

Be to, LVM yra keletas pagrindinių objektų, su kuriais turite mokėti gyventi:

  • fizinis tūris
  • tūrio grupė
  • loginis tūris

Fiziniai tūriai yra sujungiami į grupes, ir kiekvienas fizinis tūris gali būti tik vienoje grupėje, o grupė vienu metu gali būti keliuose fiziniuose tūriuose.
Ir kiekvienas loginis tomas yra vienoje grupėje.

Bet... Po velnių, vėl XXI amžius. O serveriai virtualūs. Nėra prasmės jiems taikyti tuos pačius mechanizmus, kurie buvo taikomi fiziniams. O virtualiems svarbu turėti duomenis atskirai nuo sistemos! Tai labai svarbu, ypač norint greitai perjungti duomenis į kitą virtualią mašiną (pavyzdžiui, perjungiant į naują OS) ir apskritai dėl visų naudingų dalykų (pvz., atskirų skaidinių atsarginių kopijų kūrimas naudojant hipervizoriaus įrankius). . Todėl sistemai naudojama viena tūrio grupė, o duomenims būtinai – kita! Šis loginis skirstymas labai padeda gyvenime!

Jei kurdami virtualią mašiną sukūrėte tik vieną virtualų standųjį diską, čia konfigūracija baigiasi. O jei yra du, tai tik dar nežymėkite antrojo.

Pradėkime diegimą.

Po montavimo

Taigi, naujai įdiegta sistema pagaliau buvo paleista. Pirmas dalykas, kurį reikia patikrinti, yra internetas.

ping ya.ru

Ar yra atsakymas? - Puiku, paspauskite Ctrl-C.
Jei ne, sukurkite tinklą, be to nėra gyvenimo, bet mano straipsnis ne apie tai.

Dabar, jei mes dar nesame pagal šaknį, eikite į šaknį, nes spausdiname tokių sudo komandų skaičius mane asmeniškai sulaužė (ir tegul paranojiški administratoriai man atleidžia):

sudo -i

Dabar pirmas dalykas, kurį darome, yra rašyti

dnf -y update

Ir jei skaitysite šį straipsnį 2019 m., greičiausiai nieko nebus, bet pabandyti buvo verta.

Dabar sukonfigūruokime likusį diską

Tarkime, skaidinys su sistema buvo xvda, tada duomenų diskas bus xvdb. GERAI.

Dauguma patarimų prasidės žodžiais „Paleiskite fdisk ir sukurkite skaidinį...“

Taigi tai yra neteisingai!

Pakartosiu dar kartą, nes tai labai svarbu! Tokiu atveju dirbti su LVM, kuris užima vieną visą virtualų diską, jame kurti skaidinius yra žalinga! Kiekvienas šios frazės žodis yra svarbus. Jei dirbame be LVM, reikia. Jei diske turime sistemą ir duomenis, mums jų reikia. Jei dėl kokių nors priežasčių mums reikia palikti pusę disko tuščią, taip pat turėtume. Tačiau dažniausiai visos šios prielaidos yra grynai teorinės. Nes jei nuspręsime pridėti vietos esamam skaidiniui, tai lengviausias būdas tai padaryti naudojant šią konfigūraciją. O administravimo paprastumas taip nusveria daugelį kitų dalykų, kad kryptingai judame šios konfigūracijos link.

O patogumas yra tas, kad jei norite išplėsti duomenų skaidinį, tiesiog pridėkite tarpų prie virtualaus skaidinio, tada išplėskite grupę naudodami vgextend ir viskas! Retais atvejais gali prireikti ko nors kito, bet bent jau pradžioje nereikės plėsti loginio tūrio, o tai jau malonu. Kitu atveju, norint išplėsti būtent šį apimtį, jie rekomenduoja iš pradžių ištrinti esamą, o tada sukurti naują ant viršaus... Kas neatrodo labai gražiai ir negali būti padaryta gyvai, bet išplėsti pagal mano nurodytą scenarijų gali būti atliekami „skraidydami“, net neatjungiant pertvaros.

Taigi, sukuriame fizinį tomą, tada tomo grupę, kurioje jis yra, ir savo serverio skaidinį:

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

Čia vietoj didžiosios raidės „L“ (ir dydį GB) galite nurodyti mažą, o tada vietoj absoliutaus dydžio nurodyti santykinį, pavyzdžiui, kad būtų panaudota pusė šiuo metu laisvos vietos. apimties grupę, turite nurodyti „-l +50%FREE“

O paskutine komanda suformatuoja skaidinį ext4 failų sistemoje (kuri kol kas, mano patirtimi, rodo didžiausią stabilumą tuo atveju, jei viskas sugestų, todėl man labiau patinka).

Dabar pertvarą montuojame tinkamoje vietoje. Norėdami tai padaryti, į /etc/fstab pridėkite tinkamą eilutę:

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

Ir renkame

mount /var/www

Jei įvyko klaida, skambinkite pavojaus signalu! Nes tai reiškia, kad /etc/fstab yra klaida. Ir kad per kitą paleidimą turėsime labai didelių problemų. Sistema gali visai nepasileisti, o tai dažnai labai liūdna debesijos paslaugoms. Todėl būtina arba skubiai pataisyti paskutinę pridėtą eilutę, arba iš viso ją ištrinti! Štai kodėl mes neparašėme mount komandos rankiniu būdu - tada nebūtume turėję tokios puikios galimybės iš karto patikrinti konfigūraciją.

Dabar iš tikrųjų įdiegiame viską, ko norėjome, ir atidarome žiniatinklio prievadus:

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

Jei norite, čia galite įdėti ir duomenų bazę, bet aš asmeniškai stengiuosi ją laikyti atskirai nuo žiniatinklio serverio. Nors išlaikyti ją šalia yra greičiau, taip. Virtualių tinklo adapterių greitis paprastai yra apie gigabitą, o dirbant tame pačiame kompiuteryje skambučiai atsiranda beveik akimirksniu. Bet tai mažiau saugu. Kas kam svarbiau?

Dabar pridedame parametrą į konfigūracijos failą (sukuriame naują, šiuolaikinė CentOS ideologija yra tokia)

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

Perkrauname serverį.
Komentaruose sulaukiau priekaištų, kad patariau išjungti SeLinux, todėl pasitaisysiu ir parašysiu apie tai, kad po to reikia nepamiršti konfigūruoti SeLinux.
Tiesą sakant, pelnas! 🙂

Šaltinis: www.habr.com

Добавить комментарий