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