Webserver auf CentOS 8 mit php7, node.js und redis

Vorwort

Seit der Veröffentlichung einer neuen Version des CentOS-Betriebssystems, nämlich CentOS 2, sind zwei Tage vergangen. Und bisher gibt es im Internet eine ganze Reihe von Artikeln darüber, wie die Dinge darin gemacht werden, also habe ich beschlossen, diese Lücke zu schließen. Darüber hinaus erzähle ich Ihnen nicht nur, wie Sie dieses Programmpaar installieren, sondern auch, wie ich mir die Installation von Linux in einer virtuellen Umgebung in der modernen Welt für typische Aufgaben, einschließlich der Partitionierung von Festplatten usw., generell vorstelle.

Aber zu Beginn möchte ich kurz darauf eingehen, warum es sich lohnt, von allen vorherigen auf diese Version umzusteigen, und das aus zwei Gründen:

  1. php7! In der Vorgängerversion von CentOS war das „Orthodoxe“ php5.4 installiert...

    Okay, um es etwas ernster zu nehmen: Viele Pakete durchliefen massenhaft mehrere Versionen. Wir (Fans von Redhat-ähnlichen Betriebssystemen) sind endlich, wenn nicht in die Zukunft, so doch zumindest in die Gegenwart eingetreten. Und Ubuntu-Anhänger werden uns nicht mehr auslachen und mit dem Finger auf uns zeigen, na ja... zumindest für eine Weile ;).

  2. Übergang von lecker zu dnf. Der Hauptunterschied besteht darin, dass es jetzt offiziell unterstützt wird, mit mehreren Paketversionen gleichzeitig zu arbeiten. Im Achtelfinale habe ich das noch nie als nützlich empfunden, aber es klingt vielversprechend.

Erstellen Sie eine virtuelle Maschine

Es gibt verschiedene Hypervisoren und ich habe nicht das Ziel, den Leser auf einen bestimmten zuzuschneiden, ich werde Ihnen die allgemeinen Prinzipien erläutern.

Память

Erstens ... Um ein CentOS-System ab 7 sicher zu installieren, und meiner Meinung nach war dies auch in 6 der Fall („aber das ist nicht sicher“), benötigen Sie Minimum 2 GB RAM. Daher rate ich Ihnen, zunächst so viel auszugeben.

Aber wenn überhaupt, kann die Speichergröße nach der Installation reduziert werden. Bei 1 GB funktioniert das nackte System recht gut, habe ich überprüft.

Fahren

Für eine normale Installation sollten Sie eine virtuelle Festplatte mit einer Kapazität von 20-30 GB erstellen. Das reicht für das System. Und eine zweite Festplatte für Daten. Es kann sowohl beim Erstellen einer virtuellen Maschine als auch danach hinzugefügt werden. Normalerweise füge ich es später hinzu.

Prozessor

Auf einem Kern wird das nackte System nicht langsamer. Und da die Ressourcen frei skalierbar sind, sehe ich keinen Sinn darin, bei der Installation mehr anzugeben (es sei denn, man kennt die Anforderungen genau und ist zu faul, noch einmal in den Konfigurator zu gehen).

Der Rest kann normalerweise als Standard belassen werden.

Die eigentliche Installation

Also... Starten wir das Installationsprogramm... Persönlich installiere ich solche Dienste schon seit langem nur in Form von virtuellen Maschinen, daher werde ich nicht alle Arten von Verteilungsdatensätzen auf einem Flash-Laufwerk beschreiben - ich einfach Mounten Sie die ISO als CD in meinem Lieblingshypervisor, laden Sie sie herunter und los geht's.

Die Grundinstallation ist recht typisch, ich werde nur auf einige Punkte eingehen.

Quellenauswahl

Seit der Veröffentlichung der achten Version liegt der Mirror von Yandex tagelang herum. Nun, das heißt, es steigt periodisch an und zeigt dann erneut einen Fehler an. Ich bin sicher, dass es an der übermäßigen Auslastung des Dienstes liegt. Um die Quelle anzugeben, musste ich persönlich daher, anstatt die übliche Adresse einzugeben, gehen hierher, wähle dort den Spiegel aus, der mir gefällt, und gib die Adresse manuell in das Installationsfenster ein. Hierbei ist zu beachten, dass Sie den Pfad zu dem Ordner angeben müssen, in dem sich das Verzeichnis befindet Repodaten. Zum Beispiel Mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Festplattenpartitionierung

Diese Frage ist meiner Meinung nach eher religiös. Jeder Admin hat zu diesem Thema seine eigene Position. Aber ich werde trotzdem meinen Standpunkt zu diesem Thema darlegen.

Ja, im Prinzip kann man dem Root den gesamten Speicherplatz zuweisen und es wird funktionieren, meistens sogar ganz gut. Warum dann einen Garten mit verschiedenen Abschnitten umzäunen? — Meiner Meinung nach gibt es dafür vor allem zwei Gründe: Quoten und Portabilität.

Wenn beispielsweise etwas schief geht und Fehler auf der Hauptdatenpartition auftreten, möchten Sie das System trotzdem booten und Wiederbelebungsmaßnahmen durchführen können. Daher ordne ich persönlich eine separate Partition für /boot zu. Es gibt einen Kernel und einen Bootloader. Normalerweise reichen 500 Megabyte aus, aber in seltenen Fällen kann es sein, dass mehr benötigt wird, und da wir es bereits gewohnt sind, Speicherplatz in Terabyte zu messen, ordne ich diesem Abschnitt 2 GB zu. Und das Wichtigste dabei ist, dass es nicht lvm möglich ist.

Als nächstes kommt die Wurzel des Systems. Für eine normale Installation habe ich nie mehr als 4 GB pro System benötigt, aber bei geplanten Ereignissen verwende ich häufig das Verzeichnis /tmp zum Entpacken von Distributionen, und ich sehe keinen Sinn darin, es einer separaten Partition zuzuweisen – in modernen Systemen Es wird automatisch gereinigt und ist daher nicht gefüllt. Also ordne ich dem Root 8 GB zu.

Tauschen... Im Großen und Ganzen hat es wenig praktischen Nutzen. Wenn Sie Swap auf Ihrem Server verwenden, bedeutet dies heute in der realen Welt nur, dass der Server mehr RAM hinzufügen muss. Andernfalls sind Leistungsprobleme garantiert (oder ein Programm verliert Speicher). Daher wird dieser Abschnitt nur zu Diagnosezwecken benötigt. Daher sind 2 GB eine ausgezeichnete Zahl. Ja, unabhängig davon, wie viel Speicher auf dem Server vorhanden ist. Ja, ich habe alle Artikel gelesen, in denen es um das Verhältnis von Speichervolumen zu Swap-Volumen geht ... Meiner Meinung nach sind sie veraltet. In 10 Jahren Praxis habe ich das noch nie gebraucht. Vor 15 Jahren habe ich sie benutzt, ja.

Meiner Meinung nach kann jeder selbst entscheiden, ob er /home eine separate Partition zuweist. Wenn jemand auf dem Server dieses Verzeichnis aktiv nutzt, ist es besser, es zuzuweisen. Wenn niemand, gibt es keine Notwendigkeit.

Als nächstes /var. Meiner Meinung nach sollte es unbedingt hervorgehoben werden. Zunächst können Sie sich auf 4 GB beschränken und sehen, wie es läuft. Und ja, mit „wie es läuft“ meine ich das

  1. Erstens können Sie jederzeit eine andere Festplatte im Unterverzeichnis /var mounten (was ich später anhand eines Beispiels zeigen werde).
  2. Zweitens haben wir LVM – Sie können es jederzeit hinzufügen. Und normalerweise müssen Sie es hinzufügen, wenn zu viele Holzscheite hineinströmen. Diese Zahl konnte ich aber nie im Voraus vorhersagen, also fange ich mit 2 GB an und schaue dann zu.

Der nicht zugewiesene Speicherplatz bleibt in der Volume-Gruppe frei und kann jederzeit später verwendet werden.

LVM

alle Es ist sinnvoll, in LVM andere Partitionen als /boot zu erstellen. Ja, inklusive Tausch. Ja, allen Ratschlägen zufolge sollte sich der Swap am Anfang der Festplatte befinden, aber im Fall von LVM kann seine Position grundsätzlich nicht bestimmt werden. Aber wie ich oben geschrieben habe, Ihr System sollte nicht Swap überhaupt nutzen. Daher spielt es keine Rolle, wo er ist. Ehrlich gesagt leben wir nicht im Jahr 95!

Darüber hinaus gibt es in LVM mehrere grundlegende Entitäten, mit denen Sie leben müssen:

  • physisches Volumen
  • Volumengruppe
  • logisches Volumen

Physische Datenträger werden in Gruppen zusammengefasst, und jeder physische Datenträger kann nur einer Gruppe angehören, und eine Gruppe kann sich auf mehreren physischen Datenträgern gleichzeitig befinden.
Und die logischen Volumes befinden sich jeweils in einer Gruppe.

Aber... Verdammt, es ist wieder das 21. Jahrhundert. Und die Server sind virtuell. Es macht keinen Sinn, auf sie die gleichen Mechanismen anzuwenden, die auf physische Mechanismen angewendet wurden. Und bei virtuellen ist es wichtig, die Daten getrennt vom System zu haben! Dies ist sehr wichtig, insbesondere für die Möglichkeit, Daten schnell auf eine andere virtuelle Maschine zu übertragen (z. B. beim Wechsel auf ein neues Betriebssystem) und im Allgemeinen für alle möglichen nützlichen Extras (z. B. getrennte Backups nach Partitionen mithilfe von Hypervisor-Tools). . Daher wird eine Volume-Gruppe für das System und zwangsläufig eine andere für Daten verwendet! Diese logische Aufteilung hilft sehr im Leben!

Wenn Sie beim Erstellen einer virtuellen Maschine nur eine virtuelle Festplatte erstellt haben, endet die Konfiguration hier. Und wenn es zwei sind, dann markieren Sie den zweiten einfach noch nicht.

Beginnen wir mit der Installation.

Nach der Installation

Das neu installierte System startete also endlich. Das erste, was Sie überprüfen müssen, ist das Internet.

ping ya.ru

Gibt es eine Antwort? - Großartig, drücken Sie Strg-C.
Wenn nicht, richten Sie ein Netzwerk ein, ohne das gibt es kein Leben, aber darum geht es in meinem Artikel nicht.

Wenn wir jetzt noch nicht unter Root sind, gehen Sie unter Root, weil Sie tippen ist Die Anzahl der Befehle mit sudo hat mich persönlich kaputt gemacht (und mögen mir die paranoiden Admins verzeihen):

sudo -i

Jetzt tippen wir als Erstes

dnf -y update

Und wenn Sie diesen Artikel im Jahr 2019 lesen, wird höchstwahrscheinlich nichts passieren, aber es war einen Versuch wert.

Lassen Sie uns nun die verbleibende Festplatte konfigurieren

Nehmen wir an, die Partition mit dem System war xvda, dann ist die Datenfestplatte xvdb. OK.

Die meisten Ratschläge beginnen mit „Führen Sie fdisk aus und erstellen Sie eine Partition …“

Das ist also so falsch!

Ich sage es noch einmal, weil es so wichtig ist! In diesem Fall ist es schädlich, mit LVM zu arbeiten, das eine ganze virtuelle Festplatte belegt, und darauf Partitionen zu erstellen! Jedes Wort in diesem Satz ist wichtig. Wenn wir ohne LVM arbeiten, müssen wir das tun. Wenn wir ein System und Daten auf der Festplatte haben, brauchen wir diese. Wenn wir aus irgendeinem Grund die Hälfte der Festplatte leer lassen müssen, sollten wir das auch tun. Aber normalerweise sind alle diese Annahmen rein theoretisch. Denn wenn wir uns entscheiden, Speicherplatz zu einer vorhandenen Partition hinzuzufügen, ist diese Konfiguration der einfachste Weg, dies zu tun. Und die einfache Administration überwiegt so viele andere Dinge, dass wir uns gezielt für diese Konfiguration entscheiden.

Und der Komfort besteht darin, dass Sie, wenn Sie die Datenpartition erweitern möchten, einfach Leerzeichen zur virtuellen Partition hinzufügen, dann die Gruppe mit vgextend erweitern und fertig! In seltenen Fällen ist möglicherweise etwas anderes erforderlich, aber zumindest müssen Sie das logische Volumen nicht am Anfang erweitern, was schon schön ist. Andernfalls empfehlen sie, um genau dieses Volume zu erweitern, zuerst das vorhandene zu löschen und dann ein neues darüber zu erstellen ... Was nicht sehr schön aussieht und nicht live durchgeführt werden kann, eine Erweiterung gemäß dem von mir angegebenen Szenario jedoch möglich ist „on the fly“ durchgeführt werden, ohne dass die Partition überhaupt ausgehängt werden muss.

Also erstellen wir ein physisches Volume, dann eine Volume-Gruppe, die es enthält, und dann eine Partition für unseren Server:

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

Hier können Sie anstelle eines Großbuchstabens „L“ (und der Größe in GB) einen kleinen angeben und dann anstelle einer absoluten Größe eine relative Größe angeben, um beispielsweise die Hälfte des aktuell freien Speicherplatzes zu nutzen Für eine Volume-Gruppe müssen Sie „-l +50 %FREE“ angeben.

Und der letzte Befehl formatiert die Partition im ext4-Dateisystem (das meiner Erfahrung nach bisher die größte Stabilität aufweist, falls alles kaputt geht, also bevorzuge ich es).

Jetzt mounten wir die Partition an der richtigen Stelle. Fügen Sie dazu die richtige Zeile zu /etc/fstab hinzu:

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

Und wir wählen

mount /var/www

Tritt ein Fehler auf, schlagen Sie Alarm! Denn das bedeutet, dass wir einen Fehler in /etc/fstab haben. Und dass wir beim nächsten Neustart sehr große Probleme haben werden. Das System startet möglicherweise überhaupt nicht, was bei Cloud-Diensten oft sehr traurig ist. Daher ist es notwendig, die letzte hinzugefügte Zeile entweder dringend zu korrigieren oder ganz zu löschen! Aus diesem Grund haben wir den Mount-Befehl nicht manuell geschrieben – dann hätten wir nicht so eine hervorragende Gelegenheit gehabt, die Konfiguration sofort zu überprüfen.

Jetzt installieren wir tatsächlich alles, was wir wollten und öffnen die Ports für das Web:

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

Wenn Sie möchten, können Sie hier auch eine Datenbank hinterlegen, aber ich persönlich versuche, sie vom Webserver getrennt zu halten. Obwohl es schneller ist, sie in der Nähe zu halten, ja. Die Geschwindigkeit virtueller Netzwerkadapter liegt normalerweise bei etwa Gigabit, und wenn auf derselben Maschine gearbeitet wird, erfolgen Anrufe fast augenblicklich. Aber es ist weniger sicher. Was ist wem wichtiger?

Jetzt fügen wir den Parameter zur Konfigurationsdatei hinzu (wir erstellen eine neue, die moderne Ideologie von CentOS sieht so aus)

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

Starten Sie den Server neu.
In den Kommentaren wurde ich gescholten, weil ich mir geraten hatte, SeLinux auszuschalten. Deshalb werde ich mich korrigieren und darüber schreiben, dass Sie danach daran denken müssen, SeLinux zu konfigurieren.
Eigentlich Gewinn! 🙂

Source: habr.com

Kommentar hinzufügen