Ich verwende die folgende Version von Apache auf Centos 7:
httpd.x86_64 2.4.6-97.el7.centos.5 @updates
httpd-tools.x86_64 2.4.6-97.el7.centos.5 @updates
Dies ist das Standardpaket, das mit dem System geliefert wurde. Ich möchte http/2 unterstützen können, aber die Anweisungen, die ich gefunden habe, erfordern, dass ich die Software mit diesem Parameter erstelle/konfiguriere. Ich verwende jedoch ein Standardpaket, um die Aktualisierung zu vereinfachen. Gibt es eine Möglichkeit, diese Funktion zu aktivieren und trotzdem denselben Aktualisierungsbaum zu verwenden? Oder gibt es ein besseres Paket/Repository? Oder gibt es eine Möglichkeit, die vorhandene Installation so zu konfigurieren, dass http 2.0 aktiviert wird? Ich habe nachgeschaut und mod_http2.so nicht gefunden – gibt es eine Möglichkeit, das zu installieren und dann über die Konfiguration zu aktivieren, sodass ich Apache nicht von Grund auf neu erstellen muss?
HINWEIS: Es gibt bereits eine Frage (HTTP/2 auf CentOS 7 auf Apache mit PHP7) darüber, aber es ist 5 Jahre alt und ich hoffe auf eine aktuellere Antwort, da damals gesagt wurde, dass http/2 nicht so stabil/unterstützt sei
Antwort1
CentOS7 ist standardmäßig auf Apache httpd 2.4.6 beschränkt, das das mod_http2.so
Modul zur Implementierung von HTTP/2 nicht bereitstellt.
So gehen Sie mit unterstützter Software und ohne Neukompilierung vor:
Aktivieren Sie dieRepository für Softwaresammlungen
Dies sind unterstützte Zusatzpakete, einschließlich neuerer Versionen vorhandener Pakete. Sie werden in einem separaten Verzeichnis (normalerweise
/opt/rh
) installiert, damit sie nicht mit der Originalversion kollidieren. Dies bedeutet auch, dass die Nutzung einiger ihrer Funktionen etwas mehr Aufwand erfordert.yum install centos-release-scl
Dadurch wird ein neues Repository mit den zusätzlichen Paketen installiert
Installieren
httpd24
yum install httpd24
das hauptsächlich das eigentliche Paket herunterlädt
httpd24-httpd
und, was für diese Antwort wichtiger ist, wiederum Folgendes herunterlädthttpd24-libnghttp2
: Eine Bibliothek, die das HTTP/2-Protokoll implementiert.Konfigurieren Sie die neuere Installation in ihren eigenen Konfigurationsverzeichnissen
Wie vieleSCLPakete, dieses Paket soll ohne Konflikte mit dem Paket, das es ersetzt, installiert werden, anstatt es zu aktualisieren. Die meisten Konfigurationsdateien, die normalerweise in zu finden sind,
/etc/httpd
befinden sich jetzt in/opt/rh/httpd24/root/etc/httpd
.Daher bitte die Einstellungen über die neue Stelle kopieren und anpassen (sofern absolute Verzeichnisverweise in Konfigurationen etc. vorhanden sind):
/opt/rh/httpd24/root/etc/httpd
Diese Version wird mit aktiviertem HTTP/2 ausgeliefert:
# grep -r http2 /opt/rh/httpd24/root/etc/httpd/ /opt/rh/httpd24/root/etc/httpd/conf.modules.d/00-base.conf:LoadModule http2_module modules/mod_http2.so
Syntax usw. überprüfen.
Dies ist Teil der SCL-Besonderheiten. Es müssen vorbereitende Befehle ausgeführt werden, um den richtigen Pfad und die richtigen Bibliotheken für die hinzugefügten Komponenten zu verwenden.
Interaktiv (stattdessen könnte aber sofort ein nicht interaktiver Befehl ausgeführt werden):
# scl enable httpd24 -- bash -l
Die neue Shell erbt zusätzliche Umgebungen:
# printenv |grep /opt/rh MANPATH=/opt/rh/httpd24/root/usr/share/man: LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64 LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64 PATH=/opt/rh/httpd24/root/usr/bin:/opt/rh/httpd24/root/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin PKG_CONFIG_PATH=/opt/rh/httpd24/root/usr/lib64/pkgconfig
und kann jetzt Befehle wie diese ausführen:
# httpd -v Server version: Apache/2.4.34 (Red Hat) Server built: Feb 1 2022 14:11:48
Den Dienst umstellen
systemdDienste sind bereits für die Nutzung dieser neuen Umgebung eingerichtet, daher ist hier nichts im Zusammenhang mit dem vorherigen Punkt erforderlich
systemctl disable --now httpd systemctl enable --now httpd24-httpd
Antwort2
Anweisungen für Red Hat/Fedora finden Sie hier:https://www.ubuntupit.com/wie-man-http-2-in-apache-auf-linux-system-aktiviert/