PHP 7.4 auf FreeBSD 14.0 mit der Legacy Ports Collection installieren
PHP ist eine weit verbreitete serverseitige Skriptsprache, die hauptsächlich für die Entwicklung dynamischer Webseiten und Anwendungen genutzt wird. Obwohl PHP 7.4 am 28. November 2022 das End-of-Life (EOL) erreicht hat, verlassen sich manche ältere Projekte weiterhin aus Kompatibilitätsgründen darauf. In den aktuellen FreeBSD Ports-Zweigen ist PHP 7.4 nicht mehr enthalten, jedoch kann es über einen Legacy-Zweig weiterhin installiert werden.
Diese Anleitung beschreibt den Prozess zur Einrichtung von PHP 7.4 auf FreeBSD 14.0 mithilfe des 2022Q4-Zweigs der FreeBSD Ports Collection. Sie kompilieren PHP aus dem Quellcode, richten PHP-FPM ein und integrieren es in den Apache-Webserver, um alte Anwendungen weiterhin zu unterstützen.
Warnung
PHP 7.4 ist veraltet und erhält keine Sicherheitsupdates mehr. Da es EOL ist, kann die weitere Nutzung Ihr System Sicherheitsrisiken aussetzen. Verwenden Sie es ausschließlich für Legacy-Anwendungen, die es erfordern, und planen Sie eine Migration zu einer unterstützten Version so bald wie möglich.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie:
- Zugriff auf ein FreeBSD 14.0 System als Nicht-Root-Sudo-Nutzer haben.
Schritt 1: Installation der FreeBSD Ports Collection
Die FreeBSD Ports Collection ermöglicht das Kompilieren und Installieren von Drittanbieter-Software aus dem Quellcode. Um PHP 7.4 zu installieren, muss der ältere 2022Q4-Zweig verwendet werden.
Aktualisieren Sie die Paketinformationen auf dem Server:
$ sudo pkg update
Installieren Sie Git:
$ sudo pkg install -y git
Klonen Sie den Legacy-Zweig der Ports Collection (2022Q4):
$ sudo git clone --depth 1 https://git.FreeBSD.org/ports.git -b 2022Q4 /usr/ports
Prüfen Sie, ob das Verzeichnis /usr/ports
existiert:
$ ls /usr/ports
Schritt 2: PHP 7.4 kompilieren und installieren
Da FreeBSDs aktuelle Ports-Bäume PHP 7.4 nicht mehr unterstützen, muss es über den Legacy-Zweig kompiliert werden. Gehen Sie dazu wie folgt vor, um Abhängigkeiten zu installieren, Perl neu zu kompilieren und anschließend PHP 7.4 zu bauen.
Installieren Sie die benötigten Build-Werkzeuge:
$ sudo pkg install -y curl re2c zip cmake gperf libzip html2text libxml2 gettext-tools
Entfernen Sie das vorhandene Perl-Binary, um Konflikte zu vermeiden:
$ sudo pkg remove -y perl5
Wechseln Sie in das Verzeichnis der Perl 5.36 Quellen:
$ cd /usr/ports/lang/perl5.36
Kompilieren und installieren Sie Perl 5.36:
$ sudo make BATCH=yes install clean
Wechseln Sie anschließend in das Quellverzeichnis von PHP 7.4:
$ cd /usr/ports/lang/php74
Kompilieren und installieren Sie PHP 7.4:
$ sudo make BATCH=yes install clean
Schritt 3: PHP-Installation überprüfen
Prüfen Sie die installierte PHP-Version:
$ php -v
Kopieren Sie die Standard-Produktionskonfigurationsdatei:
$ sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
Überprüfen Sie die aktiven Variablen in der php.ini
-Datei:
$ cat /usr/local/etc/php.ini | egrep -v '^;|^$'
Dieser Befehl listet alle aktivierten Konfigurationsoptionen wie Speicherlimits, Ausführungszeit und Dateiupload-Einstellungen auf. Passen Sie diese Werte an die Anforderungen Ihrer Anwendung an.
PHP 7.4 Erweiterungen installieren
PHP-Erweiterungen erweitern die Funktionalität von PHP, indem sie zusätzliche Features wie Datenbankanbindung oder Datenverarbeitung bereitstellen. Führen Sie die folgenden Schritte aus, um die benötigten PHP 7.4-Erweiterungen zu kompilieren und zu aktivieren.
Wechseln Sie in das Verzeichnis der PHP 7.4 Erweiterungen:
$ cd /usr/ports/lang/php74-extensions
Starten Sie das Konfigurationstool:
$ sudo make config
Nutzen Sie die Pfeiltasten zur Navigation und die Leertaste, um die gewünschten Erweiterungen auszuwählen. Drücken Sie anschließend Enter, um die Auswahl zu speichern und den Dialog zu verlassen.
Kompilieren und installieren Sie die ausgewählten Erweiterungen:
$ sudo make BATCH=yes install
Überprüfen Sie die installierten PHP-Module:
$ php -m
Die Ausgabe sollte eine Liste der installierten Module enthalten, darunter Datenbanktreiber, Kompression, XML-Verarbeitung und mehr.
PHP 7.4 FPM kompilieren und installieren
PHP-FPM (FastCGI Process Manager) verarbeitet PHP-Anfragen effizient und verbessert die Performance. Beim Kompilieren von PHP 7.4 aus der Ports Collection wird PHP-FPM automatisch mit installiert. Führen Sie die folgenden Schritte aus, um den Dienst zu konfigurieren und zu starten.
Prüfen Sie die installierte PHP-FPM-Version:
$ php-fpm --version
Aktivieren Sie PHP-FPM für den automatischen Start beim Booten:
$ sudo sysrc php_fpm_enable=YES
Starten Sie den PHP-FPM-Dienst:
$ sudo service php-fpm start
Prüfen Sie den Status, um sicherzustellen, dass der Dienst läuft:
$ sudo service php-fpm status
PHP-FPM 7.4 konfigurieren
Passen Sie nun die PHP-FPM-Einstellungen an, indem Sie die Standard-Pool-Konfiguration bearbeiten. Diese Anpassungen helfen dabei, die Ressourcennutzung zu optimieren und die Leistung entsprechend der Serverlast zu verbessern.
Navigieren Sie in das Konfigurationsverzeichnis:
$ cd /usr/local/etc/php-fpm.d/
Stellen Sie sicher, dass die Datei www.conf
vorhanden ist:
$ ls
Öffnen Sie die Datei www.conf
mit einem Texteditor:
$ sudo vim www.conf
Passen Sie die folgenden Pool-Einstellungen an:
[www]
user = www
group = www
...
listen = /var/run/php-fpm.sock
listen.owner = www
listen.group = www
listen.mode = 0660
...
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
......
Erklärung der wichtigsten Parameter:
- [www]: Definiert den Namen des Pools. Mehrere Pools können unabhängig voneinander verwaltet werden.
- user/group: Gibt das Systemkonto an, mit dem PHP-FPM Skripte sicher ausführt.
- listen: Legt den Socket oder die TCP-Adresse für FastCGI-Verbindungen fest.
- listen.owner / listen.group: Bestimmen die Eigentümer des Sockets und schränken so den Zugriff ein.
- listen.mode: Definiert die Berechtigungen für den Socket.
- pm: Legt die Strategie zur Prozessverwaltung fest (hier dynamische Skalierung).
- pm.max_children: Begrenzung der maximalen gleichzeitigen PHP-Worker.
- pm.start_servers: Anzahl der Worker, die beim Start geladen werden.
- pm.min_spare_servers / pm.max_spare_servers: Verwaltung der minimalen und maximalen Leerlaufprozesse, um eine Balance zwischen Reaktionsfähigkeit und Speicherverbrauch zu gewährleisten.
Starten Sie PHP-FPM neu, um die Änderungen zu übernehmen:
$ sudo service php-fpm restart
Prüfen Sie erneut den Status, um sicherzustellen, dass PHP-FPM mit der neuen Konfiguration läuft:
$ sudo service php-fpm status
PHP 7.4 testen und verwenden
In diesem Abschnitt überprüfen Sie, ob PHP 7.4 korrekt installiert und funktionsfähig ist. Sie testen die PHP-CLI, führen ein Beispielskript aus und konfigurieren Apache, um PHP-FPM-Anfragen über einen UNIX-Socket zu verarbeiten. So stellen Sie sicher, dass das System die gewünschte PHP-Version nutzt.
PHP-CLI testen
Überprüfen Sie zunächst die installierte PHP-Version:
$ php -v
Wechseln Sie in Ihr Home-Verzeichnis:
$ cd ~
Legen Sie eine Testdatei mit dem Namen greet.php
an:
$ vim greet.php
Fügen Sie folgenden PHP-Code ein:
Führen Sie das Skript mit der PHP-CLI aus:
$ php greet.php
Apache mit PHP-FPM konfigurieren
Sobald PHP 7.4 über die CLI funktioniert, können Sie es mit Apache über PHP-FPM und einen UNIX-Socket integrieren.
Installieren Sie Apache:
$ sudo pkg install -y apache24
Aktivieren Sie den automatischen Start von Apache beim Booten:
$ sudo sysrc apache24_enable="YES"
Starten Sie den Apache-Dienst:
$ sudo service apache24 start
Überprüfen Sie den Status von Apache:
$ sudo service apache24 status
Bearbeiten Sie die Apache-Konfigurationsdatei:
$ sudo vim /usr/local/etc/apache24/httpd.conf
Kommentieren Sie die folgenden Module ein, indem Sie das #
am Zeilenanfang entfernen:
LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
Legen Sie eine neue VirtualHost-Konfigurationsdatei an:
$ sudo vim /usr/local/etc/apache24/Includes/php74.conf
Fügen Sie die folgende Konfiguration ein:
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/usr/local/www/apache24/data"
<Directory "/usr/local/www/apache24/data">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog "/var/log/httpd-error.log"
CustomLog "/var/log/httpd-access.log" combined
</VirtualHost>
Erstellen Sie eine Test-PHP-Datei im Webverzeichnis:
$ echo '<?php
echo "<div style=\"text-align: center;\">
<h1>Grüße von centron!</h1>
</div>";
?>' | sudo tee /usr/local/www/apache24/data/test.php > /dev/null
Starten Sie PHP-FPM und Apache neu:
$ sudo service php-fpm restart
$ sudo service apache24 restart
Prüfen Sie, ob die Dienste laufen:
$ sudo service php-fpm status
$ sudo service apache24 status
Öffnen Sie schließlich folgende URL in Ihrem Browser, um die Testseite anzuzeigen:
http://your-server-ip/test.php
Fazit
Sie haben erfolgreich PHP 7.4 auf FreeBSD 14.0 mithilfe der Legacy Ports Collection installiert, PHP-FPM zur Leistungsoptimierung konfiguriert und Apache so eingerichtet, dass es FastCGI-Anfragen verarbeitet. Die Installation wurde über die CLI und ein Beispielszenario im Browser überprüft. Dieses Setup ermöglicht den Betrieb älterer Anwendungen mit PHP 7.4. Da diese Version jedoch veraltet ist und keine Sicherheitsupdates mehr erhält, wird dringend empfohlen, auf eine unterstützte Version wie PHP 8.x zu migrieren, um bessere Sicherheit, Kompatibilität und Performance zu gewährleisten.