Wie aktiviere ich http/2 aus einem Centos-Paket/yum?

Wie aktiviere ich http/2 aus einem Centos-Paket/yum?

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.soModul 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

  • Installierenhttpd24

    yum install httpd24
    

    das hauptsächlich das eigentliche Paket herunterlädt httpd24-httpdund, was für diese Antwort wichtiger ist, wiederum Folgendes herunterlädt httpd24-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/httpdbefinden 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

verwandte Informationen