Webserver op CentOS 8 met php7, node.js en redis

Voorwoord

Het is 2 dagen geleden sinds de release van een nieuwe versie van het CentOS-besturingssysteem, namelijk CentOS 8. En tot nu toe zijn er nogal wat artikelen op internet over hoe dingen daarin worden gedaan, dus ik besloot deze leemte op te vullen. Bovendien zal ik je niet alleen vertellen over hoe je dit paar programma's moet installeren, maar ook over hoe ik Linux over het algemeen in een virtuele omgeving in de moderne wereld zie installeren voor typische taken, inclusief het partitioneren van schijven enzovoort.

Maar in het begin wil ik kort vertellen waarom het de moeite waard is om van alle voorgaande naar deze versie over te schakelen, en daar zijn twee redenen voor:

  1. php7! In de vorige versie van CentOS was de “Orthodoxe” php5.4 geïnstalleerd...

    Oké, om iets serieuzer te zijn: veel pakketten zijn massaal door verschillende versies gesprongen. Wij (fans van redhat-achtige besturingssystemen) zijn eindelijk, zo niet in de toekomst, dan toch in ieder geval het heden binnengegaan. En Ubuntu-aanhangers zullen ons niet langer uitlachen en met de vingers naar ons wijzen, nou ja... tenminste voor een tijdje ;).

  2. Overgang van yum naar dnf. Het belangrijkste verschil is dat het nu officieel wordt ondersteund om met meerdere versies van pakketten tegelijk te werken. In de acht heb ik dit nooit nuttig gevonden, maar het klinkt veelbelovend.

Een virtuele machine maken

Er zijn verschillende hypervisors en het is niet mijn doel om de lezer aan een specifieke hypervisor aan te passen; ik zal je vertellen over de algemene principes.

Память

Ten eerste... Om zeker een CentOS-systeem te installeren vanaf 7, en naar mijn mening was dit ook het geval in 6 (“maar dit is niet zeker”), heb je nodig minimum 2 GB RAM. Daarom raad ik je aan om eerst zoveel uit te geven.

Maar als er iets is, kan na de installatie de geheugengrootte worden verkleind. Met 1 GB werkt het kale systeem redelijk goed, heb ik gecontroleerd.

schijf

Voor een normale installatie moet u een virtuele schijf maken met een capaciteit van 20-30 GB. Dit is voldoende voor het systeem. En een tweede schijf voor data. Het kan zowel tijdens het maken van een virtuele machine als daarna worden toegevoegd. Meestal voeg ik het later toe.

bewerker

Op één kern vertraagt ​​het kale systeem niet. En aangezien bronnen vrij schaalbaar zijn, zie ik geen enkel nut om meer te geven in de installatiefase (tenzij je de vereisten perfect kent en te lui bent om opnieuw in de configurator te gaan)

De rest kan meestal als standaard blijven staan.

De eigenlijke installatie

Dus... Laten we het installatieprogramma starten... Persoonlijk installeer ik dergelijke services al heel lang alleen in de vorm van virtuele machines, dus ik zal niet allerlei distributierecords op een flashstation beschrijven - ik mount gewoon de ISO als CD in mijn favoriete hypervisor, downloaden en gaan.

De basisinstallatie is vrij typisch, ik zal slechts op een paar punten ingaan.

Bron selectie

Sinds de release van de achtste versie ligt de spiegel van Yandex al dagen rond. Welnu, dat wil zeggen, het stijgt periodiek en begint dan opnieuw een fout te vertonen. Ik weet zeker dat dit te wijten is aan overmatige belasting van de service. Om de bron aan te geven, moest ik daarom persoonlijk, in plaats van het gebruikelijke adres in te voeren, gaan hier, selecteer daar de spiegel die ik leuk vind en voer het adres handmatig in het installatievenster in. Het is belangrijk om hier te onthouden dat u het pad moet opgeven naar de map waarin de map zich bevindt repodata. Bijvoorbeeld mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Schijfpartitionering

Deze vraag is naar mijn mening nogal religieus. Elke beheerder heeft zijn eigen standpunt hierover. Maar ik zal nog steeds mijn mening over deze kwestie delen.

Ja, in principe kun je de hele ruimte aan de root toewijzen en het zal werken, meestal zelfs redelijk goed. Waarom zou je dan een tuin afschermen met verschillende secties? — Naar mijn mening zijn daar twee belangrijke redenen voor: quota en overdraagbaarheid.

Als er bijvoorbeeld iets misgaat en er fouten optreden op de hoofdgegevenspartitie, wilt u het systeem nog steeds kunnen opstarten en reanimatiemaatregelen kunnen uitvoeren. Daarom wijs ik persoonlijk een aparte partitie toe voor /boot. Er is een kernel en een bootloader. Meestal is 500 megabytes voldoende, maar in zeldzame gevallen kan er meer nodig zijn, en aangezien we al gewend zijn aan het meten van de ruimte in terabytes, wijs ik 2 GB toe voor deze sectie. En het belangrijkste hier is dat het niet lvm kan worden gedaan.

Vervolgens komt de wortel van het systeem. Voor een normale installatie heb ik nooit meer dan 4 GB per systeem nodig gehad, maar tijdens geplande evenementen gebruik ik vaak de map /tmp om distributies uit te pakken, en ik zie geen enkel nut in het toewijzen ervan aan een aparte partitie - in moderne systemen deze wordt automatisch gereinigd, dus niet gevuld. Dus wijs ik 8 GB toe voor de root.

Wisselen... Over het algemeen heeft het weinig praktisch nut. Als u swap op uw server gaat gebruiken, betekent dit in de echte wereld tegenwoordig alleen maar dat de server meer RAM moet toevoegen. Anders zijn prestatieproblemen gegarandeerd (of "lekt" een bepaald programma geheugen). Daarom is dit gedeelte alleen nodig voor diagnostische doeleinden. Daarom is 2 GB een uitstekend aantal. Ja, ongeacht hoeveel geheugen er op de server staat. Ja, ik heb al die artikelen gelezen waarin geschreven wordt over de verhouding tussen geheugenvolume en swapvolume... IMHO, ze zijn verouderd. In de 10 jaar praktijkervaring heb ik dit nog nooit nodig gehad. 15 jaar geleden gebruikte ik ze, ja.

IMHO kan iedereen voor zichzelf beslissen of /home in een aparte partitie wordt geplaatst. Als iemand op de server deze map actief gaat gebruiken, is het beter om deze toe te wijzen. Als er niemand is, is er geen noodzaak.

Vervolgens /var. Wat mij betreft mag dit zeker benadrukt worden. Om te beginnen kun je jezelf beperken tot 4 GB en kijken hoe het gaat. En ja, met “hoe het gaat” bedoel ik dat

  1. Ten eerste kun je altijd een andere schijf mounten in de submap /var (wat ik later met een voorbeeld zal laten zien)
  2. Ten tweede hebben we lvm - je kunt het altijd toevoegen. En meestal moet je het toevoegen als er te veel houtblokken binnenstromen. Maar ik heb dit cijfer nooit van tevoren kunnen voorspellen, dus ik begin met 2 GB en kijk dan.

De niet-toegewezen ruimte blijft vrij in de volumegroep en kan later altijd worden gebruikt.

LVM

Alle Het is zinvol om andere partities dan /boot in LVM te maken. Ja, inclusief ruilen. Ja, volgens al het advies zou de swap aan het begin van de schijf moeten staan, maar in het geval van LVM kan de locatie ervan in principe niet worden bepaald. Maar zoals ik hierboven schreef, jouw systeem zou niet moeten gebruik überhaupt swap. Daarom maakt het niet uit waar hij is. Nou, eerlijk gezegd leven we niet in '95!

Verder zijn er in LVM verschillende basisentiteiten waarmee je moet kunnen leven:

  • fysiek volume
  • volumegroep
  • logisch volume

Fysieke volumes worden gecombineerd in groepen, en elk fysiek volume kan zich in slechts één groep bevinden, en een groep kan zich op meerdere fysieke volumes tegelijk bevinden.
En de logische volumes bevinden zich elk in één groep.

Maar... Verdomd, het is weer de 21e eeuw. En de servers zijn virtueel. Het heeft geen zin om op hen dezelfde mechanismen toe te passen die op fysieke mechanismen werden toegepast. En voor virtuele data is het belangrijk om de data los van het systeem te hebben! Dit is erg belangrijk, met name voor de mogelijkheid om snel gegevens naar een andere virtuele machine over te zetten (bijvoorbeeld bij het overstappen naar een nieuw besturingssysteem) en in het algemeen voor allerlei nuttige goodies (afzonderlijke back-ups per partities met behulp van bijvoorbeeld hypervisortools) . Daarom wordt één volumegroep gebruikt voor het systeem en noodzakelijkerwijs een andere voor gegevens! Deze logische indeling helpt veel in het leven!

Als u slechts één virtuele harde schijf hebt gemaakt bij het maken van een virtuele machine, eindigt hier de configuratie. En als er twee zijn, markeer dan de tweede nog niet.

Laten we beginnen met de installatie.

Post-installatie

Dus het nieuw geïnstalleerde systeem is eindelijk opgestart. Het eerste dat u moet controleren, is internet.

ping ya.ru

Is er een antwoord? - Geweldig, druk op Ctrl-C.
Zo niet, ga dan een netwerk opzetten, er is geen leven zonder dit, maar daar gaat mijn artikel niet over.

Als we nu nog niet onder de root zitten, ga dan onder de root, want typen zo een het aantal opdrachten met sudo heeft mij persoonlijk gebroken (en mogen de paranoïde beheerders mij vergeven):

sudo -i

Het eerste wat we nu doen is typen

dnf -y update

En als je dit artikel in 2019 leest, zal er hoogstwaarschijnlijk niets gebeuren, maar het was het proberen waard.

Laten we nu de resterende schijf configureren

Laten we zeggen dat de partitie met het systeem xvda is, dan zal de gegevensschijf xvdb zijn. OK.

Het meeste advies begint met "Voer fdisk uit en maak een partitie ..."

Dus dit is onjuist!

Ik zeg het nog een keer omdat het zo belangrijk is! In dit geval is het schadelijk om met LVM te werken, dat één volledige virtuele schijf in beslag neemt! Elk woord in deze zin is belangrijk. Als we zonder LVM werken, moeten we dat doen. Als we een systeem en gegevens op de schijf hebben, hebben we die nodig. Als we om de een of andere reden de helft van de schijf leeg moeten laten, moeten we dat ook doen. Maar meestal zijn al deze aannames puur theoretisch. Want als we besluiten ruimte toe te voegen aan een bestaande partitie, dan is de eenvoudigste manier om dit te doen deze configuratie. En het beheergemak weegt zoveel zwaarder dan veel andere zaken, dat we doelbewust naar deze configuratie toe bewegen.

En het gemak is dat als u de gegevenspartitie wilt uitbreiden, u eenvoudigweg spaties aan de virtuele partitie toevoegt, vervolgens de groep uitbreidt met vgextend en dat is alles! In zeldzame gevallen kan iets anders nodig zijn, maar je hoeft het logische volume in ieder geval niet in het begin uit te breiden, wat al prettig is. Anders raden ze aan om, om juist dit volume uit te breiden, eerst het bestaande te verwijderen en vervolgens een nieuw volume erbovenop te maken... Dat ziet er niet erg mooi uit en kan niet live worden gedaan, maar uitbreiding volgens het scenario dat ik heb aangegeven kan wel 'on the fly' uitgevoerd zonder zelfs maar de partitie te demonteren.

We maken dus een fysiek volume, vervolgens een volumegroep die dit volume bevat, en vervolgens een partitie voor onze server:

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

Hier kunt u in plaats van een hoofdletter “L” (en de grootte in GB) een kleine opgeven, en vervolgens in plaats van een absolute grootte een relatieve opgeven, bijvoorbeeld om de helft van de momenteel vrije ruimte in een volumegroep, moet u “-l +50%FREE” opgeven

En met het laatste commando wordt de partitie geformatteerd in het ext4-bestandssysteem (wat tot nu toe, naar mijn ervaring, de grootste stabiliteit laat zien voor het geval alles kapot gaat, dus ik geef er de voorkeur aan).

Nu monteren we de scheidingswand op de juiste plaats. Om dit te doen, voegt u de juiste regel toe aan /etc/fstab:

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

En wij bellen

mount /var/www

Als er een fout optreedt, sla dan alarm! Omdat dit betekent dat we een fout hebben in /etc/fstab. En dat we bij de volgende herstart hele grote problemen zullen hebben. Het systeem start mogelijk helemaal niet op, wat vaak erg triest is voor cloudservices. Daarom is het noodzakelijk om de laatst toegevoegde regel dringend te corrigeren of helemaal te verwijderen! Dat is de reden waarom we het mount-commando niet handmatig hebben geschreven - dan hadden we niet zo'n uitstekende gelegenheid gehad om de configuratie meteen te controleren.

Nu installeren we eigenlijk alles wat we wilden en openen we de poorten voor internet:

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

Als je wilt, kun je hier ook een database plaatsen, maar persoonlijk probeer ik deze gescheiden te houden van de webserver. Hoewel het sneller is om haar dichtbij te houden, ja. De snelheid van virtuele netwerkadapters ligt meestal rond de gigabit, en wanneer u op dezelfde machine werkt, vinden oproepen vrijwel onmiddellijk plaats. Maar het is minder veilig. Wat is belangrijker voor wie?

Nu voegen we de parameter toe aan het configuratiebestand (we maken een nieuwe, de moderne ideologie van CentOS is als volgt)

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

Start de server opnieuw op.
In de commentaren werd ik uitgescholden omdat ik me adviseerde SeLinux uit te schakelen, dus ik zal mezelf corrigeren en schrijven over het feit dat je hierna moet onthouden om SeLinux te configureren.
Eigenlijk: winst! 🙂

Bron: www.habr.com

Voeg een reactie