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

předmluva

Jsou to 2 dny od vydání nové verze operačního systému CentOS, konkrétně CentOS 8. A na internetu je zatím poměrně dost článků o tom, jak se to v něm dělá, tak jsem se rozhodl tuto mezeru vyplnit. Navíc vám řeknu nejen o tom, jak nainstalovat tuto dvojici programů, ale také o tom, jak obecně vidím instalaci Linuxu ve virtuálním prostředí v moderním světě pro typické úkoly, včetně rozdělení disků a tak dále.

Ale na začátku chci krátce pohovořit o tom, proč stojí za to přejít na tuto verzi ze všech předchozích, a to ze dvou důvodů:

  1. php7! V předchozí verzi CentOS byl nainstalován „ortodoxní“ php5.4...

    Dobře, abych byl trochu vážnější, spousta balíčků hromadně prošla několika verzemi. My (fanoušci redhat-like OS) jsme konečně vstoupili, když ne do budoucnosti, tak alespoň do současnosti. A příznivci Ubuntu se nám už nebudou smát a ukazovat na nás prstem, no... alespoň na chvíli ;).

  2. Přechod z yum na dnf. Hlavní rozdíl je v tom, že nyní je oficiálně podporována práce s několika verzemi balíčků najednou. Přímo v osmičce jsem to nikdy nenašel užitečné, ale zní to slibně.

Vytvořte virtuální stroj

Existují různé hypervizory a já nemám za cíl přizpůsobit čtenáře konkrétnímu jednomu, řeknu vám o obecných principech.

Vzpomínka

Za prvé... K instalaci systému CentOS od 7 určitě a podle mého názoru tomu tak bylo i v 6 (“ale to není jisté”), potřebujete minimum 2 GB RAM. Proto vám radím, abyste nejprve rozdali tolik.

Ale pokud něco, po instalaci lze velikost paměti zmenšit. Při 1 GB holý systém funguje docela dobře, zkontroloval jsem.

Drive

Pro běžnou instalaci byste měli vytvořit virtuální disk s kapacitou 20-30 GB. To systému stačí. A druhý disk pro data. Lze jej přidat jak ve fázi vytváření virtuálního stroje, tak i poté. Obvykle přidávám později.

Procesor

Na jednom jádru se holý systém nezpomaluje. A protože zdroje jsou volně škálovatelné, nevidím žádný smysl dávat více ve fázi instalace (pokud neznáte dokonale požadavky a nejste příliš líní jít znovu do konfigurátoru)

Zbytek lze obvykle ponechat jako výchozí.

Skutečná instalace

Takže... Spustíme instalátor... Osobně si takové služby instaluji už delší dobu pouze ve formě virtuálních strojů, takže nebudu popisovat všemožné záznamy distribuce na flash disku - jen připojit ISO jako CD do mého oblíbeného hypervizoru, stáhnout a jedeme.

Základní instalace je vcelku typická, pozastavím se jen u pár bodů.

Výběr zdroje

Od vydání osmé verze zrcadlo od Yandexu leželo několik dní. No, to znamená, že pravidelně stoupá a pak znovu začne ukazovat chybu. Jsem si jistý, že je to kvůli nadměrnému zatížení služby. Proto, abych uvedl zdroj, jsem osobně musel místo zadávání obvyklé adresy jít zde, vyberte zrcadlo, které se mi tam líbí, a ručně zadejte adresu do okna instalátoru. Zde je důležité pamatovat na to, že je třeba zadat cestu ke složce, kde je adresář umístěn repodata. Například, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Rozdělení disku

Tato otázka je podle mého názoru spíše náboženská. Každý admin má v této záležitosti svůj vlastní postoj. Ale i tak se podělím o svůj pohled na věc.

Ano, v zásadě můžete kořenu přidělit celý prostor a bude to fungovat, nejčastěji dokonce docela dobře. Proč potom oplotit zahradu různými sekcemi? — Podle mého názoru to má dva hlavní důvody: kvóty a přenositelnost.

Pokud se například něco pokazí a dojde k chybám na hlavním datovém oddílu, chcete mít stále možnost zavést systém a provést resuscitační opatření. Osobně proto přiděluji samostatný oddíl pro /boot. Je tam jádro a bootloader. Obvykle stačí 500 megabajtů, ale ve vzácných případech může být potřeba více a vzhledem k tomu, že jsme již zvyklí měřit prostor v terabajtech, vyčleňuji pro tuto sekci 2 GB. A důležité je, že to nelze provést lvm.

Následuje kořen systému. Pro běžnou instalaci jsem nikdy nepotřeboval více než 4 GB na systém, ale při plánovaných událostech často používám k rozbalování distribucí adresář /tmp a nevidím smysl vyhradit jej na samostatný oddíl - v moderních systémech čistí se automaticky, takže se neplní . Takže pro root alokuji 8GB.

Swap... Celkově vzato z toho má jen málo praktického využití. Pokud na svém serveru začnete používat swap, dnes to v reálném světě znamená pouze to, že server potřebuje přidat více RAM. V opačném případě jsou zaručeny problémy s výkonem (nebo některý program „uniká“ paměť). Proto je tato část potřebná pouze pro diagnostické účely. Proto jsou 2 GB vynikající číslo. Ano, bez ohledu na to, kolik paměti je na serveru. Ano, četl jsem všechny ty články, kde se píše o poměru objemu paměti k objemu swapu... IMHO jsou zastaralé. Za 10 let praxe jsem to nikdy nepotřeboval. Před 15 lety jsem je používal, ano.

IMHO se každý může rozhodnout sám, zda alokuje /home do samostatného oddílu. Pokud někdo na serveru bude tento adresář aktivně používat, je lepší ho alokovat. Pokud nikdo, není potřeba.

Dále /var. Podle mě by se to rozhodně mělo vyzdvihnout. Pro začátek se můžete omezit na 4 GB a uvidíte, jak to půjde. A ano, tím „jak to chodí“ to myslím

  1. Za prvé, vždy můžete připojit další disk do podadresáře /var (což ukážu později na příkladu)
  2. Za druhé, máme lvm - vždy jej můžete přidat. A většinou ho musíte přidat, když se tam začne hrnout příliš mnoho polen. Ale nikdy jsem nebyl schopen předpovědět toto číslo předem, takže začínám s 2 GB a pak se dívám.

Nepřidělené místo zůstane volné ve skupině svazků a lze jej kdykoli použít později.

LVM

vše V LVM má smysl vytvářet jiné oddíly než /boot. Ano, včetně výměny. Ano, podle všech rad by swap měl být na začátku disku, ale v případě LVM nelze jeho umístění z principu určit. Ale jak jsem psal výše, váš systém by neměl vůbec používat swap. Proto je jedno, kde je. No, nežijeme v roce 95, upřímně!

Dále v LVM existuje několik základních entit, se kterými musíte být schopni žít:

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

Fyzické nosiče jsou sloučeny do skupin a každý fyzický nosič může být pouze v jedné skupině a skupina může být umístěna na několika fyzických nosičích najednou.
A logické svazky jsou každý v jedné skupině.

Ale... Sakra, je tu zase 21. století. A servery jsou virtuální. Nemá smysl uplatňovat na ně stejné mechanismy, jaké byly aplikovány na fyzické. A pro ty virtuální je důležité mít data odděleně od systému! To je velmi důležité zejména pro možnost rychlého přepnutí dat na jiný virtuální stroj (například při přechodu na nový OS) a obecně pro nejrůznější užitečné vychytávky (oddělené zálohy podle oddílů například pomocí hypervisorových nástrojů) . Proto se jedna skupina svazků používá pro systém a nutně jiná pro data! Toto logické dělení v životě hodně pomáhá!

Pokud jste při vytváření virtuálního počítače vytvořili pouze jeden virtuální pevný disk, zde konfigurace končí. A pokud jsou dva, tak druhého zatím neoznačujte.

Zahájíme instalaci.

Po instalaci

Nově nainstalovaný systém se tedy konečně spustil. První věc, kterou musíte zkontrolovat, je internet.

ping ya.ru

Existuje odpověď? - Skvělé, stiskněte Ctrl-C.
Pokud ne, založte si síť, bez toho není život, ale o tom můj článek není.

Nyní, pokud ještě nejsme pod rootem, přejděte pod root, protože píšete je počet příkazů se sudo mě osobně zlomil (a ať mi paranoidní admini odpustí):

sudo -i

Nyní první věc, kterou uděláme, je typ

dnf -y update

A pokud čtete tento článek v roce 2019, s největší pravděpodobností se nic nestane, ale za pokus to stálo.

Nyní nakonfigurujeme zbývající disk

Řekněme, že oddíl se systémem byl xvda, pak datový disk bude xvdb. OK.

Většina rad začíná „Spustit fdisk a vytvořit oddíl...“

Tak tohle je nesprávně!

Řeknu to znovu, protože je to tak důležité! V tomto případě je práce s LVM, který zabírá celý jeden virtuální disk, a vytváření oddílů na něm škodlivé! Každé slovo v této větě je důležité. Pokud pracujeme bez LVM, musíme. Pokud máme systém a data na disku, potřebujeme je. Pokud z nějakého důvodu potřebujeme nechat polovinu disku prázdnou, měli bychom také. Ale obvykle jsou všechny tyto předpoklady čistě teoretické. Protože pokud se rozhodneme přidat místo do existujícího oddílu, pak je nejjednodušší to udělat s touto konfigurací. A snadnost administrace tak převažuje nad mnoha jinými věcmi, že k této konfiguraci cíleně směřujeme.

A výhodou je, že pokud chcete rozšířit datový oddíl, jednoduše do virtuálního oddílu přidáte mezery, poté rozšíříte skupinu pomocí vgextend a je to! Ve vzácných případech může být vyžadováno něco jiného, ​​ale alespoň nebudete muset na začátku rozšiřovat logický svazek, což je již příjemné. Jinak pro rozšíření právě tohoto svazku doporučují nejprve smazat stávající, a pak vytvořit nový nahoře... Což nevypadá moc hezky a naživo to nejde, ale rozšíření podle mnou naznačeného scénáře jde provádí se „za běhu“, aniž by bylo nutné přepážku demontovat.

Vytvoříme tedy fyzický svazek, pak skupinu svazků, která jej obsahuje, a pak oddíl pro náš server:

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

Zde můžete místo velkého písmene „L“ (a velikosti v GB) zadat malé písmeno a místo absolutní velikosti zadat relativní velikost, například pro využití poloviny aktuálně volného místa v skupinu svazků, musíte zadat „-l +50 % ZDARMA“

A poslední příkaz naformátuje oddíl v souborovém systému ext4 (který zatím podle mých zkušeností vykazuje největší stabilitu pro případ, že by se vše rozbilo, tak to preferuji).

Nyní namontujeme oddíl na správné místo. Chcete-li to provést, přidejte správný řádek do /etc/fstab:

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

A vytáčíme

mount /var/www

Pokud dojde k chybě, zazní poplach! Protože to znamená, že máme chybu v /etc/fstab. A že při příštím restartu budeme mít hodně velké problémy. Systém nemusí vůbec nabootovat, což je u cloudových služeb často velmi smutné. Proto je nutné buď urychleně opravit poslední přidaný řádek, nebo jej úplně smazat! Proto jsme příkaz mount nepsali ručně - pak bychom neměli tak skvělou příležitost hned zkontrolovat konfiguraci.

Nyní nainstalujeme vše, co jsme chtěli, a otevřeme porty pro web:

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

Pokud chcete, můžete sem dát i databázi, ale osobně se ji snažím držet odděleně od webového serveru. I když udržet ji blízko je rychlejší, ano. Rychlost virtuálních síťových adaptérů se obvykle pohybuje kolem gigabitů a při práci na stejném stroji dochází k volání téměř okamžitě. Ale je to méně bezpečné. Co je pro koho důležitější?

Nyní přidáme parametr do konfiguračního souboru (vytvoříme nový, moderní ideologie CentOS je taková)

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

Restartujte server.
V komentářích mi bylo vynadáno, že mi poradil vypnout SeLinux, takže se opravím a napíšu o tom, že poté je potřeba nezapomenout na konfiguraci SeLinuxu.
Vlastně zisk! 🙂

Zdroj: www.habr.com

Přidat komentář