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

Forord

Det har gått 2 dager siden utgivelsen av en ny versjon av CentOS-operativsystemet, nemlig CentOS 8. Og så langt er det ganske mange artikler på Internett om hvordan ting gjøres i det, så jeg bestemte meg for å fylle dette gapet. Dessuten vil jeg fortelle deg ikke bare om hvordan du installerer dette paret med programmer, men også om hvordan jeg generelt ser på å installere Linux i et virtuelt miljø i den moderne verden for typiske oppgaver, inkludert partisjonering av disker og så videre.

Men i begynnelsen vil jeg kort snakke om hvorfor det er verdt å bytte til denne versjonen fra alle tidligere, og det er to grunner til dette:

  1. php7! I den forrige versjonen av CentOS ble den "ortodokse" php5.4 installert...

    Ok, for å være litt mer seriøs, mange pakker hoppet gjennom flere versjoner i massevis. Vi (fans av redhat-lignende operativsystemer) har endelig gått inn i, om ikke i fremtiden, så i det minste inn i nåtiden. Og Ubuntu-tilhengere vil ikke lenger le av oss og peke fingre til oss, vel... i hvert fall for en stund ;).

  2. Overgang fra nam til dnf. Hovedforskjellen er at det nå er offisielt støttet å jobbe med flere versjoner av pakker samtidig. Akkurat i de åtte har jeg aldri funnet dette nyttig, men det høres lovende ut.

Lag en virtuell maskin

Det er forskjellige hypervisorer, og jeg har ikke noe mål å skreddersy leseren til en spesifikk, jeg skal fortelle deg om de generelle prinsippene.

Память

Først... For å installere et CentOS-system fra 7 helt sikkert, og etter min mening var dette også tilfelle i 6 ("men dette er ikke sikkert"), trenger du minimum 2 GB RAM. Derfor anbefaler jeg deg å gi ut så mye først.

Men om noe, etter installasjonen kan minnestørrelsen reduseres. Ved 1 GB fungerer det bare systemet ganske bra, sjekket jeg.

disk

For en normal installasjon bør du lage en virtuell disk med en kapasitet på 20-30 GB. Dette er nok for systemet. Og en annen disk for data. Det kan legges til både på scenen for å lage en virtuell maskin og etterpå. Jeg pleier å legge det til senere.

prosessor

På den ene kjernen bremses ikke det nakne systemet. Og siden ressurser er fritt skalerbare, ser jeg ikke noe poeng i å gi mer på installasjonsstadiet (med mindre du kjenner kravene perfekt og er for lat til å gå inn i konfiguratoren igjen)

Resten kan vanligvis stå som standard.

Selve installasjonen

Så... La oss starte installasjonsprogrammet... Personlig har jeg installert slike tjenester bare i form av virtuelle maskiner i lang tid, så jeg vil ikke beskrive alle slags distribusjonsposter på en flash-stasjon - jeg bare monter ISO som en CD i min favoritt hypervisor, last ned og la oss gå.

Den grunnleggende installasjonen er ganske typisk, jeg vil bare dvele ved noen få punkter.

Kildevalg

Siden utgivelsen av den åttende versjonen har speilet fra Yandex ligget i flere dager. Vel, det vil si at den stiger med jevne mellomrom, og begynner så igjen å vise en feil. Jeg er sikker på at det er på grunn av overdreven belastning på tjenesten. Derfor, for å angi kilden, måtte jeg personlig gå, i stedet for å angi den vanlige adressen her, velg speilet jeg liker der og skriv inn adressen manuelt i installasjonsvinduet. Det er viktig å huske her at du må spesifisere banen til mappen der katalogen ligger repodata. For eksempel, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Diskpartisjonering

Dette spørsmålet er ganske religiøst etter min mening. Hver administrator har sitt eget standpunkt i denne saken. Men jeg vil likevel dele mitt syn på saken.

Ja, i prinsippet kan du tildele hele plassen til roten, og det vil fungere, oftest til og med ganske bra. Hvorfor da inngjerde en hage med ulike seksjoner? — Etter min mening er det to hovedgrunner til dette: kvoter og portabilitet.

For eksempel, hvis noe går galt og det oppstår feil på hoveddatapartisjonen, ønsker du fortsatt å kunne starte opp systemet og utføre gjenopplivningstiltak. Derfor tildeler jeg personlig en egen partisjon for /boot. Det er en kjerne og en bootloader. Vanligvis er 500 megabyte nok, men i sjeldne tilfeller kan det være behov for mer, og gitt at vi allerede er vant til å måle plass i terabyte, tildeler jeg 2GB til denne delen. Og det viktige her er at det ikke kan gjøres lvm.

Deretter kommer roten til systemet. For en normal installasjon har jeg aldri trengt mer enn 4 GB per system, men under planlagte hendelser bruker jeg ofte /tmp-katalogen til å pakke ut distribusjoner, og jeg ser ikke noe poeng i å dedikere den til en separat partisjon - i moderne systemer den renses automatisk, så den fylles ikke . Så jeg tildeler 8 GB for roten.

Bytt... I det store og hele er det liten praktisk nytte av det. Hvis du begynner å bruke swap på serveren din, betyr i dag i den virkelige verden dette bare at serveren trenger å legge til mer RAM. Ellers er problemer med ytelse garantert (eller noe program "lekker" minne). Derfor er denne delen kun nødvendig for diagnostiske formål. Derfor er 2 GB et utmerket tall. Ja, uansett hvor mye minne det er på serveren. Ja, jeg leste alle artiklene der det er skrevet om forholdet mellom minnevolum og byttevolum... IMHO, de er utdaterte. I 10 års praksis har jeg aldri trengt dette. For 15 år siden brukte jeg dem, ja.

IMHO, alle kan bestemme selv om de skal tildele /home i en egen partisjon. Hvis noen på serveren aktivt vil bruke denne katalogen, er det bedre å tildele den. Hvis ingen, er det ikke nødvendig.

Neste, /var. Etter min mening bør det absolutt fremheves. Til å begynne med kan du begrense deg til 4 GB, og se hvordan det går. Og ja, med "hvordan det går" mener jeg det

  1. For det første kan du alltid montere en annen disk i /var underkatalogen (som jeg vil vise senere med et eksempel)
  2. For det andre har vi lvm - du kan alltid legge det til. Og du må vanligvis legge den til når for mange vedkubber begynner å strømme inn der. Men jeg har aldri vært i stand til å forutsi dette tallet på forhånd, så jeg starter med 2 GB og ser så.

Den ikke-allokerte plassen vil forbli ledig i volumgruppen og kan alltid brukes senere.

LVM

Alle Det er fornuftig å lage andre partisjoner enn /boot i LVM. Ja, inkludert bytte. Ja, i henhold til alle rådene, bør swap være i begynnelsen av disken, men når det gjelder LVM, kan ikke plasseringen i prinsippet bestemmes. Men som jeg skrev ovenfor, systemet ditt bør ikke bruk bytte i det hele tatt. Derfor spiller det ingen rolle hvor han er. Vel, vi lever ikke i ’95, ærlig talt!

Videre, i LVM er det flere grunnleggende enheter du trenger for å kunne leve med:

  • fysisk volum
  • volumgruppe
  • logisk volum

Fysiske volumer er kombinert i grupper, og hvert fysisk volum kan være i bare én gruppe, og en gruppe kan være lokalisert på flere fysiske volumer samtidig.
Og de logiske volumene er hver i en gruppe.

Men... Jammen, det er det 21. århundre igjen. Og serverne er virtuelle. Det gir ingen mening å bruke på dem de samme mekanismene som ble brukt på fysiske. Og for virtuelle er det viktig å ha data separat fra systemet! Dette er veldig viktig, spesielt for muligheten til raskt å bytte data til en annen virtuell maskin (for eksempel når du bytter til et nytt OS) og generelt for alle slags nyttige godbiter (separate sikkerhetskopier av partisjoner ved hjelp av hypervisorverktøy, for eksempel) . Derfor brukes en volumgruppe for systemet og nødvendigvis en annen for data! Denne logiske inndelingen hjelper mye i livet!

Hvis du bare opprettet én virtuell harddisk når du opprettet en virtuell maskin, er det her konfigurasjonen slutter. Og hvis det er to, så bare ikke merk den andre ennå.

La oss starte installasjonen.

Etterinstallasjon

Så det nylig installerte systemet startet endelig opp. Det første du må sjekke er Internett.

ping ya.ru

Finnes det et svar? - Flott, trykk Ctrl-C.
Hvis ikke, sett opp et nettverk, det er ikke noe liv uten dette, men det er ikke det artikkelen min handler om.

Nå hvis vi ikke er under root ennå, gå under root, fordi du skriver такое antall kommandoer med sudo brøt meg personlig (og må de paranoide administratorene tilgi meg):

sudo -i

Nå er det første vi gjør er å skrive

dnf -y update

Og hvis du leser denne artikkelen i 2019, vil mest sannsynlig ingenting skje, men det var verdt et forsøk.

La oss nå konfigurere den gjenværende disken

La oss si at partisjonen med systemet var xvda, da vil datadisken være xvdb. OK.

De fleste råd vil starte med "Kjør fdisk og lag en partisjon ..."

Så dette er feil!

Jeg sier det igjen fordi det er så viktig! I dette tilfellet, å jobbe med LVM, som opptar en hel virtuell disk, er det skadelig å lage partisjoner på den! Hvert ord i denne setningen er viktig. Hvis vi jobber uten LVM, må vi. Hvis vi har et system og data på disken, trenger vi det. Hvis vi av en eller annen grunn må la halvparten av disken være tom, bør vi også gjøre det. Men vanligvis er alle disse antakelsene rent teoretiske. For hvis vi bestemmer oss for å legge til plass til en eksisterende partisjon, er den enkleste måten å gjøre det på med denne konfigurasjonen. Og enkel administrasjon veier så mye tyngre enn mange andre ting at vi målrettet beveger oss mot denne konfigurasjonen.

Og det praktiske er at hvis du vil utvide datapartisjonen, legger du ganske enkelt til mellomrom til den virtuelle partisjonen, utvider deretter gruppen ved å bruke vgextend og det er det! I sjeldne tilfeller kan noe annet være nødvendig, men du trenger i det minste ikke å utvide det logiske volumet i begynnelsen, noe som allerede er fint. Ellers, for å utvide dette volumet, anbefaler de først å slette det eksisterende, og deretter opprette et nytt på toppen... Som ikke ser veldig bra ut og ikke kan gjøres live, men utvidelse i henhold til scenariet jeg antydet kan være utføres "on the fly" uten engang å demontere skilleveggen.

Så vi lager et fysisk volum, deretter en volumgruppe som inkluderer det, og deretter en partisjon for serveren vår:

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

Her, i stedet for en stor bokstav "L" (og størrelsen i GB), kan du spesifisere en liten, og deretter i stedet for en absolutt størrelse, spesifisere en relativ, for eksempel for å bruke halvparten av den ledige plassen i en volumgruppe, må du spesifisere "-l +50%FREE"

Og den siste kommandoen formaterer partisjonen i ext4-filsystemet (som så langt, etter min erfaring, viser størst stabilitet i tilfelle alt går i stykker, så jeg foretrekker det).

Nå monterer vi skilleveggen på riktig sted. For å gjøre dette, legg til riktig linje i /etc/fstab:

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

Og vi ringer

mount /var/www

Hvis det oppstår en feil, slå alarm! Fordi dette betyr at vi har en feil i /etc/fstab. Og at vi ved neste omstart vil få veldig store problemer. Systemet starter kanskje ikke opp i det hele tatt, noe som ofte er veldig trist for skytjenester. Derfor er det nødvendig å enten snarest korrigere den siste linjen som ble lagt til, eller slette den helt! Det er derfor vi ikke skrev mount-kommandoen manuelt - da hadde vi ikke hatt en så utmerket mulighet til å sjekke konfigurasjonen med en gang.

Nå installerer vi faktisk alt vi ønsket og åpner portene for nettet:

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å legge inn en database her, men personlig prøver jeg å holde den adskilt fra webserveren. Selv om det går raskere å holde henne tett, ja. Hastigheten til virtuelle nettverkskort er vanligvis rundt gigabit, og når du jobber på samme maskin, oppstår anrop nesten umiddelbart. Men det er mindre trygt. Hva er viktigst for hvem?

Nå legger vi til parameteren i konfigurasjonsfilen (vi lager en ny, den moderne ideologien til CentOS er slik)

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

Vi starter serveren på nytt.
I kommentarfeltet ble jeg skjelt ut for å ha rådet meg til å slå av SeLinux, så jeg skal korrigere meg selv og skrive om at du etter dette må huske å konfigurere SeLinux.
Faktisk profitt! 🙂

Kilde: www.habr.com

Legg til en kommentar