Webserver på CentOS 8 med php7, node.js og redis

Forord

Det er 2 dage siden udgivelsen af ​​en ny version af CentOS-operativsystemet, nemlig CentOS 8. Og indtil videre er der en del artikler på internettet om, hvordan tingene gøres i det, så jeg besluttede at udfylde dette hul. Desuden vil jeg fortælle dig ikke kun om, hvordan du installerer dette par programmer, men også om, hvordan jeg generelt ser installation af Linux i et virtuelt miljø i den moderne verden til typiske opgaver, herunder partitionering af diske og så videre.

Men i begyndelsen vil jeg kort fortælle om, hvorfor det er værd at skifte til denne version fra alle tidligere, og der er to grunde til dette:

  1. php7! I den tidligere version af CentOS blev den "ortodokse" php5.4 installeret...

    Okay, for at være lidt mere seriøs sprang mange pakker igennem flere versioner i massevis. Vi (fans af redhat-lignende OS'er) er endelig trådt ind i, om ikke i fremtiden, så i det mindste i nutiden. Og Ubuntu-tilhængere vil ikke længere grine af os og pege fingre ad os, ja... i hvert fald for et stykke tid ;).

  2. Overgang fra yum til dnf. Den største forskel er, at det nu er officielt understøttet at arbejde med flere versioner af pakker på én gang. Lige i de otte har jeg aldrig fundet dette nyttigt, men det lyder lovende.

Opret en virtuel maskine

Der er forskellige hypervisorer, og jeg har ikke noget mål at skræddersy læseren til en bestemt, jeg vil fortælle dig om de generelle principper.

Память

Først... For at installere et CentOS-system fra 7 helt sikkert, og efter min mening var det også tilfældet i 6 ("men det er ikke sikkert"), skal du mindste 2 GB RAM. Derfor råder jeg dig til at give så meget ud først.

Men om noget, efter installationen kan hukommelsesstørrelsen reduceres. Ved 1 GB fungerer det bare system ganske godt, tjekkede jeg.

disk

For en normal installation bør du oprette en virtuel disk med en kapacitet på 20-30 GB. Dette er nok for systemet. Og en anden disk til data. Det kan tilføjes både på tidspunktet for oprettelse af en virtuel maskine og efter. Jeg plejer at tilføje det senere.

processor

På den ene kerne sænker det bare system ikke farten. Og da ressourcer er frit skalerbare, ser jeg ingen mening i at give mere på installationsstadiet (medmindre du kender kravene perfekt og er for doven til at gå ind i konfiguratoren igen)

Resten kan normalt stå som standard.

Selve installationen

Så... Lad os starte installationsprogrammet... Personligt har jeg kun installeret sådanne tjenester i form af virtuelle maskiner i lang tid, så jeg vil ikke beskrive alle mulige distributionsposter på et flashdrev - jeg skal bare monter ISO'en som en cd i min favorit hypervisor, download og lad os gå.

Den grundlæggende installation er ret typisk, jeg vil kun dvæle ved nogle få punkter.

Valg af kilde

Siden udgivelsen af ​​den ottende version har spejlet fra Yandex ligget rundt i dagevis. Nå, det vil sige, at den med jævne mellemrum stiger og begynder så igen at vise en fejl. Jeg er sikker på, at det skyldes overdreven belastning på tjenesten. Derfor, for at angive kilden, måtte jeg personligt, i stedet for at indtaste den sædvanlige adresse, gå her, vælg det spejl, jeg kan lide der, og indtast manuelt adressen i installationsvinduet. Det er vigtigt at huske her, at du skal angive stien til den mappe, hvor mappen er placeret repodata. For eksempel mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Diskpartitionering

Dette spørgsmål er efter min mening ret religiøst. Hver administrator har sin egen holdning til denne sag. Men jeg vil stadig dele mit synspunkt på spørgsmålet.

Ja, i princippet kan du allokere hele rummet til roden, og det vil fungere, oftest endda ret godt. Hvorfor så indhegne en have med forskellige sektioner? — Efter min mening er der to hovedårsager til dette: kvoter og portabilitet.

For eksempel, hvis noget går galt, og der opstår fejl på hoveddatapartitionen, vil du stadig være i stand til at starte systemet og udføre genoplivningsforanstaltninger. Derfor tildeler jeg personligt en separat partition til /boot. Der er en kerne og en bootloader. Normalt er 500 megabyte nok, men i sjældne tilfælde kan der være behov for mere, og i betragtning af at vi allerede er vant til at måle plads i terabyte, afsætter jeg 2 GB til dette afsnit. Og det vigtige her er, at det ikke kan lade sig gøre lvm.

Dernæst kommer roden af ​​systemet. Til en normal installation har jeg aldrig haft brug for mere end 4 GB pr. system, men under planlagte begivenheder bruger jeg ofte mappen /tmp til at pakke distributioner ud, og jeg kan ikke se nogen mening i at dedikere den til en separat partition - i moderne systemer den renses automatisk, så den er ikke fyldt . Så jeg tildeler 8 GB til root.

Byt... I det store og hele er der kun lidt praktisk nytte af det. Hvis du begynder at bruge swap på din server, betyder det i dag i den virkelige verden kun, at serveren skal tilføje mere RAM. Ellers garanteres problemer med ydeevnen (eller noget program "lækker" hukommelse). Derfor er dette afsnit kun nødvendigt til diagnostiske formål. Derfor er 2 GB et glimrende tal. Ja, uanset hvor meget hukommelse der er på serveren. Ja, jeg læste alle de artikler, hvor det er skrevet om forholdet mellem hukommelsesvolumen og swapvolumen... IMHO, de er forældede. I 10 års praksis har jeg aldrig haft brug for dette. For 15 år siden brugte jeg dem, ja.

IMHO, alle kan selv bestemme, om de vil tildele /home i en separat partition. Hvis nogen på serveren aktivt vil bruge denne mappe, er det bedre at tildele den. Hvis ingen, er der ikke behov.

Dernæst /var. Det skal efter min mening helt klart fremhæves. Til at begynde med kan du begrænse dig til 4 GB, og se hvordan det går. Og ja, med "hvordan går det" mener jeg det

  1. For det første kan du altid montere en anden disk i /var undermappen (som jeg vil vise senere med et eksempel)
  2. For det andet har vi lvm - du kan altid tilføje det. Og du skal normalt tilføje det, når der begynder at vælte for mange træstammer derind. Men jeg har aldrig været i stand til at forudsige dette tal på forhånd, så jeg starter med 2 GB og ser så.

Den ikke-allokerede plads forbliver ledig i volumengruppen og kan altid bruges senere.

LVM

Alle Det giver mening at lave andre partitioner end /boot i LVM. Ja, inklusive bytte. Ja, ifølge alle rådene skal swap være i begyndelsen af ​​disken, men i tilfælde af LVM kan dens placering i princippet ikke bestemmes. Men som jeg skrev ovenfor, dit system bør ikke bruge swap overhovedet. Derfor er det lige meget, hvor han er. Nå, vi lever ikke i ’95, ærligt talt!

Yderligere, i LVM er der flere grundlæggende enheder, som du skal kunne leve med:

  • fysisk volumen
  • volumen gruppe
  • logisk volumen

Fysiske volumener kombineres i grupper, og hvert fysisk volumen kan kun være i én gruppe, og en gruppe kan være placeret på flere fysiske volumener på én gang.
Og de logiske bind er hver i én gruppe.

Men... For pokker, det er det 21. århundrede igen. Og serverne er virtuelle. Det giver ingen mening at anvende de samme mekanismer på dem, som blev anvendt på fysiske. Og for virtuelle er det vigtigt at have data adskilt fra systemet! Dette er meget vigtigt, især for evnen til hurtigt at skifte data til en anden virtuel maskine (for eksempel når du skifter til et nyt OS) og generelt for alle mulige nyttige ting (separate sikkerhedskopier af partitioner ved hjælp af hypervisorværktøjer, for eksempel) . Derfor bruges en volumengruppe til systemet og nødvendigvis en anden bruges til data! Denne logiske opdeling hjælper meget i livet!

Hvis du kun oprettede én virtuel harddisk, da du oprettede en virtuel maskine, er det her, konfigurationen slutter. Og hvis der er to, så skal du bare ikke markere den anden endnu.

Lad os starte installationen.

Efterinstallation

Så det nyligt installerede system startede endelig. Det første du skal tjekke er internettet.

ping ya.ru

Er der et svar? - Godt, tryk på Ctrl-C.
Hvis ikke, så opret et netværk, der er intet liv uden dette, men det er ikke det, min artikel handler om.

Hvis vi endnu ikke er under rod, så gå under rod, fordi du skriver sådan antallet af kommandoer med sudo knækkede mig personligt (og må de paranoide administratorer tilgive mig):

sudo -i

Nu er det første, vi gør, at skrive

dnf -y update

Og hvis du læser denne artikel i 2019, vil der højst sandsynligt ikke ske noget, men det var et forsøg værd.

Lad os nu konfigurere den resterende disk

Lad os sige, at partitionen med systemet var xvda, så vil datadisken være xvdb. OKAY.

De fleste råd starter med "Kør fdisk og opret en partition..."

Så dette er forkert!

Jeg siger det igen, fordi det er så vigtigt! I dette tilfælde, at arbejde med LVM, som optager en hel virtuel disk, er det skadeligt at oprette partitioner på den! Hvert ord i denne sætning er vigtigt. Hvis vi arbejder uden LVM, er vi nødt til det. Hvis vi har et system og data på disken, har vi brug for det. Hvis vi af en eller anden grund skal lade halvdelen af ​​disken være tom, skal vi også. Men normalt er alle disse antagelser rent teoretiske. For hvis vi beslutter os for at tilføje plads til en eksisterende partition, så er den nemmeste måde at gøre det på med denne konfiguration. Og nem administration opvejer så mange andre ting, at vi målrettet bevæger os mod denne konfiguration.

Og bekvemmeligheden er, at hvis du vil udvide datapartitionen, skal du blot tilføje mellemrum til den virtuelle partition, derefter udvide gruppen ved hjælp af vgextend, og det er det! I sjældne tilfælde kan der være behov for noget andet, men du behøver i det mindste ikke at udvide den logiske volumen i begyndelsen, hvilket allerede er rart. Ellers, for at udvide netop denne volumen, anbefaler de først at slette den eksisterende og derefter oprette en ny ovenpå... Som ikke ser særlig pæn ud og ikke kan udføres live, men udvidelse i henhold til det scenarie, jeg angav, kan være udføres "on the fly" uden selv at afmontere skillevæggen.

Så vi opretter en fysisk volumen, derefter en volumengruppe, der inkluderer den, og derefter en partition til vores server:

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

Her kan du i stedet for et stort bogstav "L" (og størrelsen i GB) angive en lille, og så i stedet for en absolut størrelse angive en relativ, for eksempel for at bruge halvdelen af ​​den aktuelt ledige plads i en volumengruppe, skal du angive "-l +50%FREE"

Og den sidste kommando formaterer partitionen i ext4-filsystemet (som indtil videre, efter min erfaring, viser den største stabilitet, hvis alt går i stykker, så jeg foretrækker det).

Nu monterer vi skillevæggen det rigtige sted. For at gøre dette skal du tilføje den korrekte linje til /etc/fstab:

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

Og vi ringer

mount /var/www

Hvis der opstår en fejl, skal du slå alarm! Fordi det betyder, at vi har en fejl i /etc/fstab. Og at vi ved næste genstart får meget store problemer. Systemet starter måske slet ikke, hvilket ofte er meget trist for cloud-tjenester. Derfor er det nødvendigt enten hurtigt at rette den sidste tilføjede linje eller slette den helt! Derfor skrev vi ikke mount-kommandoen manuelt - så havde vi ikke haft sådan en glimrende mulighed for at tjekke konfigurationen med det samme.

Nu installerer vi faktisk alt, hvad vi ønskede, og åbner portene til internettet:

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

Hvis du ønsker det, kan du også lægge en database her, men personligt forsøger jeg at holde den adskilt fra webserveren. Selvom det er hurtigere at holde hende tæt på, ja. Hastigheden på virtuelle netværksadaptere er normalt omkring gigabit, og når du arbejder på den samme maskine, sker opkald næsten øjeblikkeligt. Men det er mindre sikkert. Hvad er vigtigere for hvem?

Nu tilføjer vi parameteren til konfigurationsfilen (vi opretter en ny, den moderne ideologi af CentOS er som denne)

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

Genstart serveren.
I kommentarerne blev jeg skældt ud for at råde mig til at slå SeLinux fra, så jeg vil rette mig selv og skrive om, at du herefter skal huske at konfigurere SeLinux.
Faktisk profit! 🙂

Kilde: www.habr.com

Tilføj en kommentar