Webbserver pÄ CentOS 8 med php7, node.js och redis

Förord

Det har gÄtt 2 dagar sedan lanseringen av en ny version av CentOS operativsystem, nÀmligen CentOS 8. Och Àn sÄ lÀnge finns det en hel del artiklar pÄ Internet om hur saker och ting görs i det, sÄ jag bestÀmde mig för att fylla denna lucka. Dessutom kommer jag att berÀtta inte bara om hur man installerar det hÀr paret av program, utan ocksÄ om hur jag generellt ser installation av Linux i en virtuell miljö i den moderna vÀrlden för typiska uppgifter, inklusive partitionering av diskar och sÄ vidare.

Men i början vill jag kort prata om varför det Àr vÀrt att byta till den hÀr versionen frÄn alla tidigare, och det finns tvÄ anledningar till detta:

  1. php7! I den tidigare versionen av CentOS installerades den "ortodoxa" php5.4...

    Okej, för att vara lite mer seriös sÄ hoppade mÄnga paket igenom flera versioner i massor. Vi (fans av redhat-liknande operativsystem) har Àntligen kommit in, om inte i framtiden, sÄ Ätminstone in i nuet. Och Ubuntu-anhÀngare kommer inte lÀngre att skratta Ät oss och peka fingrar Ät oss, ja... Ätminstone ett tag ;).

  2. ÖvergĂ„ng frĂ„n yum till dnf. Den största skillnaden Ă€r att det nu officiellt stöds att arbeta med flera versioner av paket samtidigt. Mitt i Ă„tta har jag aldrig funnit det hĂ€r anvĂ€ndbart, men det lĂ„ter lovande.

Skapa en virtuell maskin

Det finns olika hypervisorer och jag har inget mÄl att skrÀddarsy lÀsaren till en specifik, jag ska berÀtta om de allmÀnna principerna.

ĐŸĐ°ĐŒŃŃ‚ŃŒ

Först... För att sÀkert installera ett CentOS-system frÄn 7, och enligt min mening var det ocksÄ fallet i 6 ("men det hÀr Àr inte sÀkert") minimum 2 GB RAM. DÀrför rÄder jag dig att ge ut sÄ mycket först.

Men om nÄgot, efter installationen kan minnesstorleken minskas. Vid 1 GB fungerar bara systemet ganska bra, jag kollade.

skiva

För en normal installation bör du skapa en virtuell disk med en kapacitet pÄ 20-30 GB. Detta rÀcker för systemet. Och en andra disk för data. Det kan lÀggas till bÄde nÀr du skapar en virtuell maskin och efter. Jag brukar lÀgga till det senare.

processor

PÄ en kÀrna saktar inte det kala systemet ner. Och eftersom resurser Àr fritt skalbara, ser jag ingen mening med att ge mer i installationsstadiet (om du inte kÀnner till kraven perfekt och Àr för lat för att gÄ in i konfiguratorn igen)

Resten kan vanligtvis lÀmnas som standard.

SjÀlva installationen

SÄ... LÄt oss starta installationsprogrammet... Personligen har jag installerat sÄdana tjÀnster bara i form av virtuella maskiner under lÄng tid, sÄ jag kommer inte att beskriva alla möjliga distributionsposter pÄ en flashenhet - jag monterar bara ISO som en CD i min favorit hypervisor, ladda ner och gÄ.

Grundinstallationen Àr ganska typisk, jag kommer bara att uppehÄlla mig vid nÄgra fÄ punkter.

Val av kÀlla

Sedan slÀppet av den Ättonde versionen har spegeln frÄn Yandex legat i flera dagar. Tja, det vill sÀga, det stiger med jÀmna mellanrum och börjar sedan igen visa ett fel. Jag Àr sÀker pÄ att det beror pÄ överdriven belastning pÄ tjÀnsten. DÀrför, för att ange kÀllan, var jag personligen tvungen att, istÀllet för att ange den vanliga adressen, gÄ hÀr, vÀlj spegeln som jag gillar dÀr och skriv in adressen manuellt i installationsfönstret. Det Àr viktigt att komma ihÄg hÀr att du mÄste ange sökvÀgen till mappen dÀr katalogen finns repodata. Till exempel mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Diskpartitionering

Denna frÄga Àr ganska religiös enligt mig. Varje administratör har sin egen stÄndpunkt i denna frÄga. Men jag kommer ÀndÄ att dela min syn pÄ frÄgan.

Ja, i princip kan du allokera hela utrymmet till roten och det kommer att fungera, oftast till och med ganska bra. Varför dĂ„ inhĂ€gna en trĂ€dgĂ„rd med olika sektioner? — Enligt min mening finns det tvĂ„ huvudsakliga skĂ€l till detta: kvoter och portabilitet.

Till exempel, om nÄgot gÄr fel och fel uppstÄr pÄ huvuddatapartitionen, vill du fortfarande kunna starta upp systemet och utföra ÄterupplivningsÄtgÀrder. DÀrför tilldelar jag personligen en separat partition för /boot. Det finns en kÀrna och en bootloader. Vanligtvis rÀcker det med 500 megabyte, men i sÀllsynta fall kan det behövas fler, och med tanke pÄ att vi redan Àr vana vid att mÀta utrymme i terabyte sÄ avsÀtter jag 2GB för detta avsnitt. Och det viktiga hÀr Àr att det inte kan göras lvm.

DÀrefter kommer roten till systemet. För en normal installation har jag aldrig behövt mer Àn 4 GB per system, men under schemalagda hÀndelser anvÀnder jag ofta katalogen /tmp för att packa upp distributioner, och jag ser ingen mening med att dedikera den till en separat partition - i moderna system den rengörs automatiskt, sÄ den Àr inte fylld. SÄ jag tilldelar 8GB för roten.

Byt... I stort sett Àr det liten praktisk anvÀndning av det. Om du börjar anvÀnda swap pÄ din server betyder detta idag i den verkliga vÀrlden att servern behöver lÀgga till mer RAM. Annars garanteras problem med prestanda (eller nÄgot program "lÀcker" minne). DÀrför behövs detta avsnitt endast för diagnostiska ÀndamÄl. DÀrför Àr 2 GB ett utmÀrkt tal. Ja, oavsett hur mycket minne det finns pÄ servern. Ja, jag lÀste alla de dÀr artiklarna dÀr det skrivs om förhÄllandet mellan minnesvolym och vÀxlingsvolym... IMHO, de Àr förÄldrade. Under 10 Ärs praktik har jag aldrig behövt detta. För 15 Är sedan anvÀnde jag dem, ja.

IMHO, alla kan sjÀlva bestÀmma om de ska tilldela /home i en separat partition. Om nÄgon pÄ servern aktivt anvÀnder den hÀr katalogen Àr det bÀttre att allokera den. Om ingen finns det inget behov.

NÀsta, /var. Enligt min mening bör det definitivt lyftas fram. Till att börja med kan du begrÀnsa dig till 4 GB, och se hur det gÄr. Och ja, med "hur det gÄr" menar jag det

  1. För det första kan du alltid montera en annan disk i underkatalogen /var (som jag kommer att visa senare med ett exempel)
  2. För det andra har vi lvm - du kan alltid lÀgga till det. Och det brukar man behöva lÀgga till nÀr för mÄnga stockar börjar strömma in dÀr. Men jag har aldrig kunnat förutsÀga den hÀr siffran i förvÀg, sÄ jag börjar med 2 GB och tittar sedan.

Det otilldelade utrymmet förblir ledigt i volymgruppen och kan alltid anvÀndas senare.

LVM

Alla Det Àr vettigt att göra andra partitioner Àn /boot i LVM. Ja, inklusive byte. Ja, enligt alla rÄd bör swap vara i början av disken, men i fallet med LVM kan dess placering i princip inte bestÀmmas. Men som jag skrev ovan, ditt system borde inte anvÀnd swap överhuvudtaget. DÀrför spelar det ingen roll var han Àr. Tja, vi lever inte i 95, Àrligt talat!

Vidare, i LVM finns det flera grundlÀggande enheter som du behöver kunna leva med:

  • fysisk volym
  • volymgrupp
  • logisk volym

Fysiska volymer kombineras i grupper, och varje fysisk volym kan endast finnas i en grupp, och en grupp kan placeras pÄ flera fysiska volymer samtidigt.
Och de logiska volymerna Àr var och en i en grupp.

Men... Fan, det Àr 21-talet igen. Och servrarna Àr virtuella. Det Àr ingen mening att tillÀmpa pÄ dem samma mekanismer som tillÀmpades pÄ fysiska. Och för virtuella Àr det viktigt att ha data separat frÄn systemet! Detta Àr mycket viktigt, sÀrskilt för möjligheten att snabbt byta data till en annan virtuell maskin (till exempel nÀr du byter till ett nytt OS) och i allmÀnhet för alla möjliga anvÀndbara godsaker (separata sÀkerhetskopior av partitioner med hjÀlp av hypervisorverktyg, till exempel) . DÀrför anvÀnds en volymgrupp för systemet och nödvÀndigtvis en annan för data! Denna logiska uppdelning hjÀlper mycket i livet!

Om du bara skapade en virtuell hÄrddisk nÀr du skapade en virtuell maskin, Àr det hÀr konfigurationen slutar. Och om det finns tvÄ, markera bara inte den andra Àn.

LÄt oss börja installationen.

Efterinstallation

SÄ det nyinstallerade systemet startade Àntligen. Det första du behöver kontrollera Àr Internet.

ping ya.ru

Finns det ett svar? - Bra, tryck Ctrl-C.
Om inte, skapa ett nÀtverk, det finns inget liv utan detta, men det Àr inte vad min artikel handlar om.

Nu om vi inte Àr under root Ànnu, gÄ under root, eftersom att skriva detta antalet kommandon med sudo bröt mig personligen (och mÄ de paranoida administratörerna förlÄta mig):

sudo -i

Nu Àr det första vi gör att skriva

dnf -y update

Och om du lÀser den hÀr artikeln under 2019 kommer troligen ingenting att hÀnda, men det var vÀrt ett försök.

LÄt oss nu konfigurera den ÄterstÄende disken

LÄt oss sÀga att partitionen med systemet var xvda, dÄ kommer datadisken att vara xvdb. OK.

De flesta rÄd börjar med "Kör fdisk och skapa en partition..."

SÄ detta Àr felaktigt!

Jag sĂ€ger det igen för det Ă€r sĂ„ viktigt! I det hĂ€r fallet, att arbeta med LVM, som upptar en hel virtuell disk, Ă€r det skadligt att skapa partitioner pĂ„ den! Varje ord i denna fras Ă€r viktigt. Om vi ​​jobbar utan LVM behöver vi det. Om vi ​​har ett system och data pĂ„ disken behöver vi det. Om vi ​​av nĂ„gon anledning behöver lĂ€mna hĂ€lften av disken tom, borde vi ocksĂ„ göra det. Men vanligtvis Ă€r alla dessa antaganden rent teoretiska. För om vi bestĂ€mmer oss för att lĂ€gga till utrymme till en befintlig partition, Ă€r det enklaste sĂ€ttet att göra det med den hĂ€r konfigurationen. Och enkel administration vĂ€ger sĂ„ mycket tyngre Ă€n mĂ„nga andra saker att vi mĂ„lmedvetet gĂ„r mot denna konfiguration.

Och bekvÀmligheten Àr att om du vill expandera datapartitionen lÀgger du helt enkelt till utrymmen till den virtuella partitionen, expanderar sedan gruppen med vgextend och det Àr allt! I sÀllsynta fall kan nÄgot annat krÀvas, men du behöver Ätminstone inte utöka den logiska volymen i början, vilket redan Àr trevligt. Annars, för att utöka just denna volym, rekommenderar de att först ta bort den befintliga och sedan skapa en ny ovanpÄ... Vilket inte ser sÀrskilt trevligt ut och inte kan göras live, men expansion enligt scenariot jag angav kan vara utföras "i farten" utan att ens demontera skiljevÀggen.

SÄ vi skapar en fysisk volym, sedan en volymgrupp som inkluderar den, och sedan en partition för vÄr server:

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

HÀr, istÀllet för en stor bokstav "L" (och storleken i GB), kan du ange en liten, och sedan istÀllet för en absolut storlek, ange en relativ, till exempel för att anvÀnda hÀlften av det lediga utrymmet i en volymgrupp mÄste du ange "-l +50%FREE"

Och det sista kommandot formaterar partitionen i ext4-filsystemet (som hittills, enligt min erfarenhet, visar den största stabiliteten om allt gÄr sönder, sÄ jag föredrar det).

Nu monterar vi partitionen pÄ rÀtt plats. För att göra detta, lÀgg till rÀtt rad i /etc/fstab:

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

Och vi ringer

mount /var/www

Om ett fel uppstÄr, slÄ larm! För det betyder att vi har ett fel i /etc/fstab. Och att vi vid nÀsta omstart kommer att ha vÀldigt stora problem. Systemet kanske inte startar upp alls, vilket ofta Àr vÀldigt trÄkigt för molntjÀnster. DÀrför Àr det nödvÀndigt att antingen snarast korrigera den sista raden som lades till, eller ta bort den helt och hÄllet! Det Àr dÀrför vi inte skrev monteringskommandot manuellt - dÄ hade vi inte haft ett sÄ utmÀrkt tillfÀlle att kontrollera konfigurationen direkt.

Nu installerar vi faktiskt allt vi ville och öppnar portarna för webben:

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

Om du vill kan du ocksĂ„ lĂ€gga in en databas hĂ€r, men personligen försöker jag hĂ„lla den Ă„tskild frĂ„n webbservern. Även om det gĂ„r snabbare att hĂ„lla henne nĂ€ra, ja. Hastigheten pĂ„ virtuella nĂ€tverkskort Ă€r vanligtvis runt gigabit, och nĂ€r man arbetar pĂ„ samma maskin uppstĂ„r samtal nĂ€stan omedelbart. Men det Ă€r mindre sĂ€kert. Vad Ă€r viktigast för vem?

Nu lÀgger vi till parametern i konfigurationsfilen (vi skapar en ny, den moderna ideologin för CentOS Àr sÄ hÀr)

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

Starta om servern.
I kommentarerna blev jag utskÀlld för att jag rÄdde mig att stÀnga av SeLinux, sÄ jag ska rÀtta mig och skriva om att du efter detta mÄste komma ihÄg att konfigurera SeLinux.
Egentligen vinst! 🙂

KĂ€lla: will.com

LĂ€gg en kommentar