Apache: Tipps & Tricks

Artikel geschrieben am 01.02.2022 um 19:47 Uhr, aktualisiert um 18:47 Uhr.

Oft wird bei einer Webserver-Installation die Standardpakete der Distribution genutzt. Das ist der bequeme Weg, birgt allerdings auch Gefahren, denen man sich bewusst sein sollte.
Wird PHP mit dem Befehl sudo apt-get install php installiert, dann hat das einige Besonderheiten. Sobald eine neue Hauptversion der verwendeten Distribution angeboten wird steht man oft vor der Wahl: Aktualisieren oder auf der alten bleiben?
Wo man früher auch mal eine Version ausgelassen hat ist heute das Thema Sicherheit doch ein ganz anderes. Auch in der Entwicklung sind andere Zeichen angebrochen und abgesehen von der nicht ganz irrelevanten Leistungssteigerung sind oft auch erwartete Neuerungen dabei, die gerne genutzt werden wollen.
Wichtig: Es geht hier konkret um die Debian-Distribution. Abkömmlinge können ganz anders organisiert sein! Als Beispiel bestizt Ubuntu ein richtiges Update-Programm, dass installierte Software analysiert und bei einem Upgrade der Distribution deutlich anders behandelt als man das evtl. vermutet hätte.

Hat man sich bewusst (oder unbewusst) von den Standardpaketen abhängig gemacht, dann kann ein Upgrade des Betriebssystem dazu führen, dass auch die PHP-Installation angepasst wird! Das gilt dann, wenn in der neuen Version eine neue PHP-Hauptversion integriert ist.

Hintergrundinformation: Viele wissen oft nicht was ein Systemupdate bedeutet. Unter anderen Systemen erfolgt oft eine lange Aktualisierung, gefolgt von teils mehreren Neustarts und diversen Ladebalken. Das ist unter Linux-Systemen allgemein anders. Zuerst lösen wir uns von den existierenden Abhängigkeiten. Das gilt natürlich nicht für die Praxis, aber es vereinfacht die Vorstellung!
Haben wir zum Beispiel ein Softwarepaket Standard in der Version 1.5.8 installiert und es ist definiert, dass die nächste Distribution die Version 1.6.0+ beinhalten wird, dann erhalten wir derzeit regelmäßig (hoffentlich) Sicherheitsaktualisierungen für die Version 1.5.X. Um die Distribution zu aktualisieren wird nichts anderes getan, als die Standard-Paketquellen der aktuellen Version abzuändern und als Ziel die Paketquellen der neuen Distribution einzutragen. Wird der Befehl für das Suchen von Updates ausgeführt, dann wird er die Version 1.6.X aus der neuen Paketquelle finden, sehen dass es eine neuere Version als die installierte ist und ein Update durchführen. Das ist im Kern die "Magie" einer Systemaktualisierung. Idealerweise (und da kommt es extrem auf die Abhängigkeiten an!) könnten alle Pakete sofort und ohne Probleme aktualisiert werden.
Meistens kommt natürlich ein neuer Linux-Kernel mit, weshalb auch hier der Neustart relevant ist.

Für einen Server, der verschiedenste Kundenprojekte beinhaltet, ist die Vorgabe einer zentralen PHP-Konfiguration nicht ideal. Deshalb gibt es von einem offiziellen Debian-Entwickler ein nettes Repository , in dem er alle aktiven PHP-Versionen für Debian (und Ubuntu) bereitstellt.
Die Anleitung dafür gibt es auch dort zu finden, aber nachfolgend die wichtigsten Zeilen, die als root ausgeführt werden müssen.

root> apt-get -y install apt-transport-https lsb-release ca-certificates curl
root> wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
root> sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
root> apt-get update

Nachdem die neue Paketquelle installiert und aktualisiert ist, können gezielt einzelne PHP-Versionen installiert werden. Im Falle von PHP-FPM auch gleichzeitig auf dem gleichen System. Via Apache-Modul kann natürlich nur eine Version gleichzeitig aktiviert sein.
Damit ließe sich als Beispiel die derzeit verbreitete Version php7.4-fpm installieren und gleichzeitig bereits die php8.1-fpm. Vorteil: Projekte können rechtzeitig bereits mit neuen Versionen getestet werden! Selbstverständlich ist auch die Möglichkeit gegeben, dass jedes Projekt seine entsprechend unterstütze Version erhält, sofern diese im Repository verfügbar ist.
Gerade bei noch älteren Versionen wird man hier deutliche Probleme bekommen. In diesem Fall würde nur die eigene Kompilierung des PHP-Quellcodes übrig bleiben. Davon würde ich aber lieber abraten, auch wenn bzw. gerade weil es für alte Versionen keine Sicherheitsaktualisierungen mehr geben wird!