Debian Apache HTTP2-FPM-PHP

Aus Wiki
Zur Navigation springen Zur Suche springen

Introduction

Das HTTP-Protokoll Version 1.1 ist bereis mehr als 20 Jahre alt. Nichtsdestotrotz funktioniert es nachwievor zuverlässig und sicher (bei entsprechender Konfiguration). Nichtsdestotrotz gibt es mit HTTP/2 seit 2015 einen leistungsfähigeren Nachfolger. Dies ist ein binäres Protokoll, das mit der Bandbreite effektiver umgeht. Zusätzlich kann innerhalb einer TCP-Verbindung viele Abfragen parallel abzuarbeiten, anstatt jedesmal erneut eine neue TCP-Verbidung aufzubauen bei HTTP/1.1. Alle relativ modernen Browser beherrschen HTTP/2. Die Browser erfordern für HTTP/2 Verbindungen HTTPS. Dies wird üblicherweise als h2 Protokol bezeichnet. HTTP/2 existiert auch in einer unverschlüsselten Form als h2c (clear). Dies unterstützt aber keiner der Browser, sodass dieses Protokoll in der Praxis keinerlei Bedeutung spielt. Aktuelle Apache 2.4 Versionen beherreschen out of the box HTTP72. Allerdings ist das mpm-prefork Modul, das vor allem für PHP-Seiten erforderlich ist, nicht kompatibel mit HTTP/2. Aber auch dies stellt keinen Nachteil dar, sondern eher einen Vorteil, denn mit PHP-FPM, das auf mpm_event angewiesen ist, stehet eine leistungsfähigere und Resourcensparendere Variante zur Verfügung. D.h. bei Umsetzug beider Punkte wird der Seitenaufbau beschleunigt und gleichzeitig weniger Resourcen auf dem Webserver verbraucht.

PHP-FPM und mpm_event

Installation und Konfiguration

apt-get install php-fpm libapache2-mod-fcgid

Atuell verwendetes Apache PHP-Modul ermitteln

ls /etc/apache2/mods-enabled/php5*.conf

Ausgabe z.B. /etc/apache2/mods-enabled/php5.conf oder /etc/apache2/mods-enabled/php7.0.conf oder neuer

PHP Modul deaktivieren. php5 evtl. durch php7.0 oder php7.2 usw ersetzen, ja nach Version

a2dismod php5
a2dismod mpm_prefork
a2enmod mpm_event
a2enmod actions fcgid proxy_fcgi alias setenvif

PHP-FPM Version ermitteln:

ls /etc/apache2/conf-available/php*fpm.conf

Ausgabe z.B. /etc/apache2/conf-available/php7.3-fpm.conf

a2enconf php7.3-fpm

Apache neu starten:

systemctl restart apache2


PHP Funktionscheck

PHP-Seite auf dem eigenen Server im Browser aufrufen. Seite sollte wie gewohnt angezeigt werden.


HTTP/2

HTTP/2 aktivieren

Aktivieren des http2-Moduls:

a2enmod http2

Apache neu starten:

systemctl restart apache2


HTTP/2 Funktionscheck

curl -sI https://domain.org -o/dev/null -w '%{http_version}\n'

Ausgabe sollte 2 sein, falls HTTP/2 aktiv ist. Falls noch 1.1 aktiv ist, wird 1.1 ausgegeben.