Beispiel: Konfigurieren von HTTP / 2 mit Apache 2.4, PHP 7 und Ubuntu 18.04 LTS

Ich verstehe, dass Apache derzeit möglicherweise nicht die bevorzugte Wahl ist, um neue Projekte darauf zu starten. Es existiert jedoch, lebt weiter und die Projekte arbeiten daran. Die Wahl für ihn kann aus persönlichen Gründen, aufgrund von Kompatibilitätsanforderungen oder aus anderen Gründen fallen ... nicht der Punkt. In diesem Artikel möchte ich Schritt für Schritt beschreiben, wie die Unterstützung für das HTTP / 2-Protokoll auf dem Apache-Webserver konfiguriert wird, da ich es selbst verwende und in einem solchen Artikel benötige , und ich hoffe, dass es auch für jemanden in der Praxis nützlich sein wird.

Was ist HTTP / 2? Wie der Name schon sagt, ist dies die zweite Version des HTTP-Protokolls. Sie können mehr über die Vorteile zumindest auf Wikipedia lesen. Ich sage nur alleine, wenn Sie kein Shared Hosting hosten, ist die Unterstützung dieses Protokolls ein Muss, wie zum Beispiel HTTPS. Ja, damit HTTP / 2 für Sie funktioniert, benötigen Sie vollen Zugriff auf die Konsole des Computers (wenn auch virtuell) über ssh oder auf andere Weise sowie auf bereits konfiguriertes HTTPS (TLS / SSL). Kommen wir zur Sache.

Erster Schritt. Apache-Update


Das HTTP / 2-Protokoll wird vom Apache-Server ab Version 2.4.24 unterstützt. Wenn Sie also eine ältere Version installiert haben, ist es Zeit, diese zu aktualisieren. Aber zuerst überprüfen:

apache -v 

Dieser Befehl erzeugt ungefähr Folgendes:

 Server version: Apache/2.4.37 (Ubuntu) Server built: 2018-10-28T15:27:08 

Die erste Zeile zeigt die Version des Servers. Wenn es größer oder gleich 2.4.24 ist, können wir sicher mit dem zweiten Schritt fortfahren. Andernfalls müssen Sie den Apache aktualisieren, dessen aktuelle Version Sie in der PPA des berühmten Entwicklers finden (falls Sie Debian / Ubuntu bereits etwas Neues hinzufügen mussten) - Ondřej Surý. PPAs sind persönliche Pakete, die nicht in den offiziellen Distributions-Repositories enthalten sind. Um sie zu verwenden, müssen Sie dem System zunächst beibringen, was und wo es erhältlich ist:

 sudo add-apt-repository ppa:ondrej/apache2 

Der Typ macht einen guten Job und es macht ihm nichts aus, einen kleinen Donut zu bekommen, was sehr deutlich wird, wenn man sich mit seinen Rüben verbindet ...

Außerdem aktualisieren wir die Pakete:

 sudo apt update sudo apt upgrade 

Und wieder überprüfen wir die Version von Apache. Wenn alles gut gegangen ist, wird Apache auf Ihrem Server installiert, auf dem Sie HTTP / 2 konfigurieren können. Wenn alles schief gelaufen ist - ich fürchte, das ist nicht das Thema dieses Artikels. Fahren Sie nun mit dem zweiten Schritt fort.

Schritt zwei Verwenden von FastCGI


Was ist FastCGI? Wie ich bereits sagte, ist es besser, zumindest auf Wikipedia zu lesen, da Sie uns dies nicht kurz sagen können. Sie müssen zu PHP wechseln, das im FastCGI-Modus (php-fpm) ausgeführt wird. Wie es funktioniert - eine gute Antwort gibt es auf dem Toaster . Hier werde ich nicht auf solche Nuancen eingehen, sondern sofort mit der Installation fortfahren:

 sudo apt install php-fpm 

Nach der Installation wird uns buchstäblich Folgendes mitgeteilt: Um PHP 7.2 FPM in Apache2 zu aktivieren, gehen Sie wie folgt vor:

 sudo a2enmod proxy_fcgi setenvif sudo a2enconf php7.2-fpm 

Wir machen es Danach müssen Sie mod_php deaktivieren, da Sie stattdessen php-fpm haben.

 sudo a2dismod php7.2 

Im Allgemeinen hatten Sie möglicherweise zuvor eine andere Version von PHP. Sie können sich die Module ansehen, die Sie im Verzeichnis / etc / apache2 / mods-available / installiert haben und die in / etc / apache2 / mods-enabled aktiv sind

Starten Sie als Nächstes Apache neu

 sudo service apache2 restart 

und gehe zum dritten Schritt.

Schritt drei Wechsel von Prefork zu Event


Was ist MPM und was ist der Unterschied zwischen Prefork, Event, Worker? Sie können hier in diesem wunderbaren Artikel lesen ... aber jetzt ist es wirklich wichtig, nur eines zu wissen: Die "Standard" -Vorgabel ist nicht sehr kompatibel mit HTTP / 2, daher müssen Sie eine geeignetere verwenden . Schalten Sie einen aus, schalten Sie den anderen ein und starten Sie Apache neu.

 sudo a2dismod mpm_prefork sudo a2enmod mpm_event service apache2 restart 

Der vierte Schritt. Aktivieren Sie HTTP / 2


Entweder in der Host-Konfigurationsdatei, die sich im Verzeichnis / etc / apache2 / sites-enabled / befindet , oder in der Konfiguration des Servers /etc/apache2/apache2.conf selbst sagen wir , dass wir Unterstützung für das neue Protokoll benötigen:
Protocols h2 h2c http/1.1

Was wirklich zählt, ist h2 . Zwei weitere Punkte liegen in Ihrem Ermessen. h2c unterstützt HTTP / 2 über TCP (nicht TLS). http / 1.1 - Unterstützung für die alte Version von HTTP.

Schalten Sie das http2-Modul ein und starten Sie den Server neu:

 sudo a2enmod http2 service apache2 restart 

Angekommen sind


Von nun an. Ihre Ressource sollte über HTTP / 2 arbeiten. Wenn Sie Chrome verwenden, indem Sie zur Ressource gehen, sehen Sie, wie der Blitz in der oberen rechten Ecke des Browsers blau leuchtet. Wenn Sie den Mauszeiger darüber halten, wird die Eingabeaufforderung HTTP / 2-enabled (h2) angezeigt. Wechseln Sie in Firefox zum Entwicklerfenster und aktivieren Sie auf der Registerkarte Netzwerk die Spalte Protokoll. Für Ressourcen von Ihrer Site sollte HTTP / 2.0 aufgeführt sein. Sie können auch überprüfen, ob Ihre Ressource dieses Protokoll auf einer der vielen Websites im Web unterstützt. Aber entspann dich nicht, denn HTTP / 3 ist schon auf den Fersen :)

Source: https://habr.com/ru/post/de430188/


All Articles