In den Linux-Systemen RHEL 8 / CentOS 8 hat sich die Art und Weise geändert, wie Software organisiert ist:Kritische Pakete sind jetzt in den BaseOs
enthalten Repository, während der AppStream
one enthält mehrere Versionen einiger der am häufigsten verwendeten Anwendungen und Programmiersprachen, die in Modulen organisiert sind und unabhängig vom Release-Zyklus der Distribution aktualisiert werden. Diese Strategie wurde eingeführt, um das Problem zu vermeiden, an einer bestimmten, zu veralteten oder zu neuen Version einer bestimmten Software hängen zu bleiben.
In diesem Tutorial lernen Sie:
- So installieren Sie PHP auf RHEL 8 / CentOS 8
- Was sind Softwaremodule in RHEL 8 / CentOS 8
- Wie man verschiedene Versionen des PHP-Moduls installiert und zwischen ihnen wechselt
Softwareanforderungen und verwendete Konventionen
Kategorie | Anforderungen, Konventionen oder verwendete Softwareversion |
---|---|
System | RHEL 8 / CentOS 8 |
Software | Für dieses Tutorial ist keine zusätzliche Software erforderlich |
Andere | Berechtigung zum Ausführen des Befehls mit Root-Rechten. |
Konventionen | # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden |
Was ist PHP?
PHP (PHP:Hypertext Preprocessor) braucht nicht viele Präsentationen:Diese universelle Programmiersprache wurde ursprünglich 1994 von Rasmus Lerdorf entwickelt und wird unter der PHP-Lizenz als Open-Source-Software veröffentlicht. Ihr Hauptanwendungsgebiet ist das Web, aber die Sprache kann auch in anderen Kontexten verwendet werden. RHEL 8 / CentOS 8 verfügt über zwei aktivierte Haupt-Repositories:BaseOs
und AppStream
.
Das erste enthält die Kernpakete
der Distribution, die dem Lebenszyklus der Distributionen selbst folgen; die zweite enthält verschiedene Versionen mehrerer Userspace-Anwendungen, die unabhängig von der Hauptdistribution aktualisiert werden. Die darin enthaltene Software ist in modules
organisiert . Jedes Modul bietet verschiedene Versionen einer Anwendung, die es ermöglichen, zwischen den verfügbaren Versionen zu wechseln (aber nicht, sie gleichzeitig zu installieren). In diesem Tutorial werden wir sehen, wie einfach es ist, PHP zu installieren und zwischen verschiedenen Versionen dieser Sprache auf den RHEL 8 / CentOS 8-Distributionen zu wechseln.
Welche PHP-Version?
Während die Version 5.6 von PHP nun offiziell tot ist (sie erreichte EOL am 1. Januar 2019), werden derzeit drei Zweige der Programmiersprache gepflegt:7.1
, das eigentlich nur Sicherheitsfixes erhält und bis zum 1. Dezember 2019 gepatcht wird, und Versionen 7.2
und 7.3
, die jeweils bis zum 30. November 2020 und bis zum 6. Dezember 2021 unterstützt werden.
Die in RHEL 8 / CentOS 8 standardmäßig bereitgestellte PHP-Version aus dem AppStream
Repository ist 7.2.11
, wie wir durch Ausführen von dnf info php
überprüfen können Befehl, der die folgende Ausgabe zurückgibt:
Available Packages Name : php Version : 7.2.11 Release : 1.el8+2002+9409c40c Arch : x86_64 Size : 1.5 M Source : php-7.2.11-1.el8+2002+9409c40c.src.rpm Repo : rhel-8-for-x86_64-appstream-beta-rpms Summary : PHP scripting language for creating dynamic web sites URL : http://www.php.net/ License : PHP and Zend and BSD and MIT and ASL 1.0 Description : PHP is an HTML-embedded scripting language. PHP attempts to make it : easy for developers to write dynamically generated web pages. PHP also : offers built-in database integration for several commercial and : non-commercial database management systems, so writing a : database-enabled webpage with PHP is fairly simple. The most common : use of PHP coding is probably as a replacement for CGI scripts. : : The php package contains the module (often referred to as mod_php) : which adds support for the PHP language to Apache HTTP Server.
Gibt es andere PHP-Versionen, die im AppStream
verfügbar sind Repository?. Um diese Frage zu beantworten, können wir einen speziellen Unterbefehl von dnf, module
, ausführen , und fragen Sie Informationen über das PHP-Modul ab, indem Sie die list
verwenden Aktion:
$ sudo dnf module list php Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) Name Stream Profiles Summary php 7.1 devel, minimal, default [d] PHP scripting language php 7.2 [d] devel, minimal, default [d] PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Beim Ausführen der dnf module list
Befehl werden standardmäßig alle verfügbaren Module angezeigt. Um die Abfrage nur auf ein bestimmtes Modul zu beschränken, geben wir den Modulnamen an den Befehl an. In diesem Fall können wir sehen, dass zwei Streams für das PHP-Modul existieren, die die Versionen 7.1
abdecken und 7.2
der Sprache und verwandte Bibliotheken. Wie wir gesehen haben, wird die letztere Version standardmäßig installiert:In der Ausgabe des Befehls, den wir oben ausführen, wird dies durch die Verwendung von [d]
hervorgehoben Markierung in der zweiten Spalte, die, wie in der Legende angegeben, für default
steht .
Ein weiterer interessanter Teil der Ausgabe sind die Profiles
Spalte, in der die verfügbaren Profile für einen Stream gemeldet werden. Mehrere Profile können gleichzeitig installiert werden und jedes von ihnen umfasst einen anderen Satz von Paketen. Der [d]
Notation wird auch hier verwendet, um das bei der Installation des Streams ausgewählte Standardprofil zu markieren.
Um das Paket eines bestimmten Streams eines Softwaremoduls zu installieren, müssen wir den name:stream/profile
verwenden Notation. Zum Beispiel, um die Version 7.1
zu installieren von PHP können wir Folgendes ausführen:
$ sudo dnf module install php:7.1/default
In diesem Fall hätten wir den Profilnamen weglassen können, da default
wird automatisch verwendet, wenn kein anderer angegeben ist. Wenn wir denselben Befehl verwenden, den wir oben ausgeführt haben, können wir jetzt sehen, dass 7.1
Stream ist mit [e]
gekennzeichnet , was für aktiviert steht, und default
Profil des Streams ist mit [i]
gekennzeichnet , was anzeigt, dass das Profil des Streams installiert ist:
$ sudo dnf module list php Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) Name Stream Profiles Summary php 7.1 [e] devel, minimal, default [d] [i] PHP scripting language php 7.2 [d] devel, minimal, default [d] PHP scripting language
Wenn wir einen Stream installiert haben und zu einem anderen der verfügbaren wechseln möchten, können wir diesen einfach installieren:Die Pakete werden je nach Situation automatisch aktualisiert oder heruntergestuft. Um zu 7.2
zu wechseln streamen würden wir beispielsweise ausführen:
$ sudo dnf module install php:7.2/default ======================================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================================= Upgrading: php-common x86_64 7.2.11-1.el8+2002+9409c40c rhel-8-for-x86_64-appstream-beta-rpms 653 k php-mbstring x86_64 7.2.11-1.el8+2002+9409c40c rhel-8-for-x86_64-appstream-beta-rpms 580 k php-xml x86_64 7.2.11-1.el8+2002+9409c40c rhel-8-for-x86_64-appstream-beta-rpms 188 k php-fpm x86_64 7.2.11-1.el8+2002+9409c40c rhel-8-for-x86_64-appstream-beta-rpms 1.6 M php-json x86_64 7.2.11-1.el8+2002+9409c40c rhel-8-for-x86_64-appstream-beta-rpms 73 k php-cli x86_64 7.2.11-1.el8+2002+9409c40c rhel-8-for-x86_64-appstream-beta-rpms 3.1 M Switching module streams: php 7.1 -> 7.2 Transaction Summary ======================================================================================================================================================= Upgrade 6 Packages Total download size: 6.2 M Is this ok [y/N]: y
Wenn wir einen bestimmten Modul-Stream entfernen möchten, können wir auf ähnliche Weise den remove
verwenden Aktion statt "Installieren". Dadurch wird ein Stream entfernt:Wenn wir ein Profil angeben, werden nur die Pakete entfernt, die zu diesem Profil gehören, ansonsten sind alle Profile eines Streams an der Aktion interessiert. Zum Beispiel, um alle Pakete zu deinstallieren, die zu allen Profilen von 7.2
gehören stream, würden wir einfach ausführen:
$ sudo dnf module remove php:7.2
Um nur die Pakete zu entfernen, die sich auf devel
beziehen Profil desselben Streams, stattdessen würden wir Folgendes ausführen:
$ sudo dnf module remove php:7.2/devel
Schlussfolgerungen
Die neue Version von Red Hat Enterprise Linux bringt eine Änderung in der Art und Weise mit sich, wie Software organisiert ist. Die BaseOs
Das Repository enthält die Pakete, die den Kern der Distributionen darstellen, und folgt seinem Veröffentlichungszyklus, dem AppStream
one enthält stattdessen Userspace-Software, die in Modulen organisiert ist und verschiedene Versionen oder "Streams" zur Verfügung stellt, die installiert werden können:PHP wird auch auf diese Weise bereitgestellt.
Die in RHEL 8 / CentOS 8 standardmäßig
verfügbaren PHP-Versionen sind 7.1.20
und 7.2.11
. Es ist möglich, andere Versionen der Programmiersprache aus externen Repositories wie Remi zu installieren, aber ich empfehle, bei den Standard-Softwarequellen zu bleiben, wenn dies nicht unbedingt erforderlich ist.