Webový server na CentOS 8 s php7, node.js a redis

Predslov

Už sú to 2 dni od vydania novej verzie operačného systému CentOS, konkrétne CentOS 8. A zatiaľ je na internete dosť článkov o tom, ako sa v ňom veci robia, tak som sa rozhodol túto medzeru vyplniť. Okrem toho vám poviem nielen o tom, ako nainštalovať túto dvojicu programov, ale aj o tom, ako vo všeobecnosti vidím inštaláciu Linuxu vo virtuálnom prostredí v modernom svete pre typické úlohy, vrátane rozdeľovania diskov a tak ďalej.

Ale na začiatku chcem stručne povedať, prečo sa oplatí prejsť na túto verziu zo všetkých predchádzajúcich, a to z dvoch dôvodov:

  1. php7! V predchádzajúcej verzii CentOS bol nainštalovaný „ortodoxný“ php5.4...

    Dobre, aby som bol trochu vážnejší, veľa balíkov hromadne preskočilo niekoľko verzií. My (fanúšikovia redhat-like OS) sme konečne vstúpili ak nie do budúcnosti, tak aspoň do súčasnosti. A priaznivci Ubuntu sa nám už nebudú smiať a ukazovať na nás prstom, no... aspoň na chvíľu ;).

  2. Prechod z yum na dnf. Hlavným rozdielom je, že teraz je oficiálne podporovaná práca s niekoľkými verziami balíkov naraz. Priamo v osmičke som to nikdy nepovažoval za užitočné, ale znie to sľubne.

Vytvorte virtuálny stroj

Existujú rôzne hypervízory a nemám za cieľ prispôsobiť čitateľa konkrétnemu, poviem vám o všeobecných princípoch.

pamäť

Najprv... Na inštaláciu systému CentOS od 7 určite a podľa mňa to tak bolo aj v 6 (“ale to nie je isté”), potrebujete minimum 2 GB RAM. Preto vám radím, aby ste najprv dali toľko.

Ale ak niečo, po inštalácii sa veľkosť pamäte môže znížiť. Pri 1 GB holý systém funguje celkom dobre, skontroloval som.

disk

Pre bežnú inštaláciu by ste si mali vytvoriť virtuálny disk s kapacitou 20-30 GB. To systému stačí. A druhý disk na dáta. Môže sa pridať vo fáze vytvárania virtuálneho počítača aj po ňom. Zvyčajne to pridávam neskôr.

procesor

Na jednom jadre sa holý systém nespomalí. A keďže zdroje sú voľne škálovateľné, nevidím dôvod dávať viac vo fáze inštalácie (pokiaľ nepoznáte dokonale požiadavky a nie ste príliš leniví na to, aby ste znova prešli do konfigurátora)

Zvyšok možno zvyčajne ponechať ako predvolený.

Skutočná inštalácia

Takže... Spustíme inštalátor... Osobne si takéto služby už dlhšie inštalujem len vo forme virtuálnych strojov, takže nebudem popisovať všelijaké záznamy o distribúcii na flash disku - len namontujem ISO ako CD v mojom obľúbenom hypervízore, stiahnuť a ísť.

Základná inštalácia je celkom typická, pozastavím sa len pri niekoľkých bodoch.

Výber zdroja

Od vydania ôsmej verzie zrkadlo od spoločnosti Yandex ležalo niekoľko dní. To znamená, že pravidelne stúpa a potom znova začne vykazovať chybu. Som si istý, že je to kvôli nadmernému zaťaženiu služby. Preto, aby som uviedol zdroj, osobne som musel namiesto zadania obvyklej adresy ísť tu, vyberte zrkadlo, ktoré sa mi tam páči a ručne zadajte adresu do okna inštalátora. Tu je dôležité pamätať na to, že musíte zadať cestu k priečinku, v ktorom sa adresár nachádza repodata, Napríklad mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Rozdelenie disku

Táto otázka je podľa mňa skôr náboženská. Každý admin má v tejto veci svoj vlastný postoj. Ale aj tak sa podelím o svoj pohľad na problém.

Áno, v zásade môžete koreňom prideliť celý priestor a bude to fungovať, najčastejšie dokonca celkom dobre. Prečo potom oplotiť záhradu rôznymi časťami? — Podľa môjho názoru sú na to dva hlavné dôvody: kvóty a prenosnosť.

Napríklad, ak sa niečo pokazí a vyskytnú sa chyby na hlavnom dátovom oddiele, chcete mať stále možnosť zaviesť systém a vykonať resuscitačné opatrenia. Preto osobne prideľujem samostatný oddiel pre /boot. Je tam jadro a bootloader. Zvyčajne stačí 500 megabajtov, ale v zriedkavých prípadoch môže byť potrebných viac a vzhľadom na to, že sme si už zvykli merať priestor v terabajtoch, vyčlením pre túto časť 2 GB. A dôležité je, že sa to nedá urobiť lvm.

Ďalej prichádza koreň systému. Na bežnú inštaláciu som nikdy nepotreboval viac ako 4 GB na systém, ale počas naplánovaných udalostí často používam adresár /tmp na rozbaľovanie distribúcií a nevidím zmysel v jeho vyhradení na samostatný oddiel - v moderných systémoch čistí sa automaticky, takže sa nenapĺňa. Takže pre root alokujem 8GB.

Vymeňte... Celkovo je z toho málo praktického využitia. Ak na svojom serveri začnete používať swap, dnes to v reálnom svete znamená len to, že server potrebuje pridať viac RAM. V opačnom prípade sú zaručené problémy s výkonom (alebo niektorým programom „vytečie“ pamäť). Preto je táto časť potrebná len na diagnostické účely. Preto sú 2 GB výborné číslo. Áno, bez ohľadu na to, koľko pamäte je na serveri. Ano cital som vsetky tie clanky kde sa pise o pomere objemu pamate k swapovaciemu objemu...IMHO su zastarale. Za 10 rokov praxe som to nikdy nepotreboval. Pred 15 rokmi som ich používal, áno.

IMHO sa každý môže rozhodnúť sám, či alokuje /home do samostatnej partície. Ak niekto na serveri bude aktívne používať tento adresár, je lepšie ho prideliť. Ak nikto, netreba.

Ďalej /var. Podľa mňa to treba určite vyzdvihnúť. Na začiatok sa môžete obmedziť na 4 GB a uvidíte, ako to pôjde. A áno, tým „ako to chodí“ to myslím

  1. Po prvé, vždy môžete pripojiť ďalší disk do podadresára /var (čo ukážem neskôr na príklade)
  2. Po druhé, máme lvm - vždy ho môžete pridať. A väčšinou ho musíte pridať, keď sa tam začne sypať priveľa polená. Nikdy som však nedokázal predpovedať toto číslo vopred, takže začínam s 2 GB a potom sledujem.

Nepridelené miesto zostane voľné v skupine zväzkov a môže sa kedykoľvek použiť neskôr.

LVM

všetko V LVM má zmysel vytvoriť iné oddiely ako /boot. Áno, vrátane výmeny. Áno, podľa všetkých rád by mal byť swap na začiatku disku, ale v prípade LVM sa jeho umiestnenie v zásade nedá určiť. Ale ako som písal vyššie, váš systém by nemali používať swap vôbec. Preto je jedno, kde je. No, nežijeme v roku 95, úprimne!

Ďalej, v LVM existuje niekoľko základných entít, s ktorými musíte byť schopní žiť:

  • fyzický objem
  • objemová skupina
  • logický objem

Fyzické nosiče sú kombinované do skupín a každý fyzický nosič môže byť len v jednej skupine a skupina môže byť umiestnená na niekoľkých fyzických nosičoch naraz.
A logické zväzky sú každý v jednej skupine.

Ale... Sakra, je tu opäť 21. storočie. A servery sú virtuálne. Nemá zmysel aplikovať na ne rovnaké mechanizmy, aké boli aplikované na fyzické. A pre virtuálnych je dôležité mať dáta oddelene od systému! Je to veľmi dôležité najmä pre možnosť rýchleho prepínania dát na iný virtuálny stroj (napríklad pri prechode na nový OS) a vo všeobecnosti pre všetky druhy užitočných vychytávok (oddelené zálohy podľa oddielov napríklad pomocou nástrojov hypervízora) . Preto sa jedna skupina zväzkov používa pre systém a nevyhnutne iná sa používa pre údaje! Toto logické delenie veľmi pomáha v živote!

Ak ste pri vytváraní virtuálneho počítača vytvorili iba jeden virtuálny pevný disk, tu konfigurácia končí. A ak sú dve, tak druhú ešte neoznačujte.

Začnime s inštaláciou.

Po inštalácii

Novo nainštalovaný systém sa teda konečne spustil. Prvá vec, ktorú musíte skontrolovať, je internet.

ping ya.ru

Existuje odpoveď? - Skvelé, stlačte Ctrl-C.
Ak nie, založte si sieť, bez toho nie je život, ale o tom môj článok nie je.

Teraz, ak ešte nie sme pod rootom, prejdite pod root, pretože písanie toto množstvo príkazov so sudom ma osobne zlomilo (a nech mi paranoidní admini odpustia):

sudo -i

Teraz prvá vec, ktorú urobíme, je typ

dnf -y update

A ak čítate tento článok v roku 2019, s najväčšou pravdepodobnosťou sa nič nestane, ale za pokus to stálo.

Teraz nakonfigurujeme zostávajúci disk

Povedzme, že oddiel so systémom bol xvda, potom dátový disk bude xvdb. OK.

Väčšina rád začína slovami „Spustite fdisk a vytvorte oddiel...“

Takže toto je nesprávne!

Poviem to znova, pretože je to veľmi dôležité! V tomto prípade je práca s LVM, ktorá zaberá jeden celý virtuálny disk, a vytváranie oddielov na ňom škodlivá! Každé slovo v tejto fráze je dôležité. Ak pracujeme bez LVM, musíme. Ak máme na disku systém a dáta, potrebujeme ich. Ak z nejakého dôvodu potrebujeme nechať polovicu disku prázdnu, mali by sme tiež. Ale zvyčajne sú všetky tieto predpoklady čisto teoretické. Pretože ak sa rozhodneme pridať miesto do existujúceho oddielu, najjednoduchší spôsob, ako to urobiť, je s touto konfiguráciou. A jednoduchosť administrácie tak prevažuje nad mnohými inými vecami, že cielene smerujeme k tejto konfigurácii.

Výhodou je, že ak chcete rozšíriť dátový oddiel, jednoducho do virtuálneho oddielu pridáte medzery, potom rozšírite skupinu pomocou vgextend a je to! V zriedkavých prípadoch môže byť potrebné niečo iné, ale aspoň nebudete musieť na začiatku rozširovať logický zväzok, čo je už teraz pekné. V opačnom prípade na rozšírenie práve tohto zväzku odporúčajú najprv vymazať existujúci a potom vytvoriť nový navrchu... Čo nevyzerá veľmi pekne a nedá sa to urobiť naživo, ale rozšírenie podľa scenára, ktorý som naznačil, môže byť vykonávané „za behu“ bez demontáže priečky.

Takže vytvoríme fyzický zväzok, potom skupinu zväzkov, ktorá ho obsahuje, a potom oddiel pre náš server:

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

Tu môžete namiesto veľkého písmena „L“ (a veľkosti v GB) zadať malú veľkosť a potom namiesto absolútnej veľkosti zadať relatívnu veľkosť, napríklad na využitie polovice aktuálne voľného miesta v skupinu objemov, musíte zadať „-l +50 % ZDARMA“

A posledný príkaz naformátuje partíciu v súborovom systéme ext4 (ktorý zatiaľ podľa mojich skúseností vykazuje najväčšiu stabilitu v prípade, že sa všetko pokazí, preto ho preferujem).

Teraz namontujeme oddiel na správne miesto. Ak to chcete urobiť, pridajte správny riadok do /etc/fstab:

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

A vytáčame

mount /var/www

Ak sa vyskytne chyba, spustite alarm! Pretože to znamená, že máme chybu v /etc/fstab. A že pri ďalšom reštarte budeme mať veľmi veľké problémy. Systém nemusí vôbec nabehnúť, čo je pri cloudových službách často veľmi smutné. Preto je potrebné buď urýchlene opraviť posledný pridaný riadok, alebo ho úplne vymazať! Preto sme príkaz mount nepísali ručne - potom by sme nemali takú vynikajúcu príležitosť hneď skontrolovať konfiguráciu.

Teraz skutočne nainštalujeme všetko, čo sme chceli, a otvoríme porty pre web:

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

Ak chcete, môžete sem umiestniť aj databázu, ale osobne sa ju snažím držať oddelene od webového servera. Aj keď držať ju blízko je rýchlejšie, áno. Rýchlosť virtuálnych sieťových adaptérov sa zvyčajne pohybuje okolo gigabitov a pri práci na tom istom počítači sa hovory vyskytujú takmer okamžite. Ale je to menej bezpečné. Čo je pre koho dôležitejšie?

Teraz pridáme parameter do konfiguračného súboru (vytvoríme nový, moderná ideológia CentOS je takáto)

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

Reštartujeme server.
V komentároch som bol pokarhaný, že mi poradil vypnúť SeLinux, tak sa opravím a napíšem o tom, že potom treba pamätať na konfiguráciu SeLinuxu.
Vlastne zisk! 🙂

Zdroj: hab.com

Pridať komentár