PHP-FPM 7.x selber bauen
Wer kennt das Problem nicht, das eingesetzte Linux liefert via Paketmanager nicht die benötigte PHP Version mit. Fremde Quellen möchte man auch ungern einbinden. Also warum nicht von php.net die aktuelle Version herunterladen und selber bauen?
Mit diesem Script könnt ihr im Handumdrehen die neuste PHP-FPM Version installieren und aktuell halten.
Punkt 1: Scripte herunterladen
Das Script wurde von mir unter Debian 9, Ubuntu 18.04 LTS und CentOS 7 mit PHP 7.3 und 7.4 getestet.
Ihr könnt mittels git das Repository klonen
1 | git clone https://github.com/adminforge/autobuild_php.git |
oder alternativ direkt herunterladen
1 | wget https://raw.githubusercontent.com/adminforge/autobuild_php/master/autobuild_php.sh |
Punkt 2: Erklärung der autobuild_php.sh
Folgende Features verbergen sich im Script die ansonst manuell ausgeführt werden müssten.
- Abhängigkeiten für die verschiedenen Distributionen werden installiert
- PHP-FPM wird nach
/opt/php-7.3
installiert - Die Source liegt im Ordner
/usr/local/src/php7.3-build
- Der Archive Download erfolgt nur von der offiziellen Seite https://www.php.net
- Gebaut wird mit 4 CPU Kernen
- Die Hauptkonfiguration wird kopiert
/opt/php-7.3/etc/php-fpm.conf
, pid und error_log werden aktiviert - In der Pool Konfiguration
/opt/php-7.3/etc/php-fpm.d/www.conf
wird listen auf127.0.0.1:9073
gestellt (da Port 9000 eher vergeben sein könnte) - Die
/opt/php-7.3/lib/php.ini
wird optimiert - Eine Systemd Unit wird erstellt
/etc/systemd/system/php7.3-fpm.service
- Weitere nützliche PHP Module
php-redis
,php-apcu
undphp-imagick
werden gebaut und installiert - Die Dienste
redis-server.service
undphp7.3-fpm.service
werden aktiviert und gestartet
Die Update Funktion im Script ist wie folgt unterteilt:
- Zuerst wird die installierte PHP-FPM Version geprüft
- Sollte auf php.net ein neuere Version existieren, wird eine Eingabe „y/n“ gefordert
- PHP-FPM 7.x wird in den Ordner
/opt/php-7.3
aktualisiert - Die PHP Module
php-redis
,php-apcu
undphp-imagick
werden ebenfalls aktualisiert - Der Dienst
php7.3-fpm.service
wird neu gestartet
Punkt 3: Installation
Wir führen das Script aus und installieren PHP-FPM, es wird immer die Current Stable von https://www.php.net/downloads.php installiert.
1 | bash autobuild_php.sh install |
Wir warten….
Es sollte am Ende die Versionsnummer sowie die Erweiterungen ausgegeben werden.
Punkt 4: Update
Es kann manuell geprüft werden ob eine neue Version verfügbar ist.
1 | autobuild_php.sh update |
Ergebnis stand 08.07.2019:
1 | No new PHP version available (7.3.7). |
Punkt 5: Update Überprüfung
Wer möchte kann täglich auf Updates überprüfen und per E-Mail informiert werden. Voraussetzung ist ein konfigurierter Mail-Dienst!
1 | autobuild_php.sh installcron deine@mailadresse.de |
Alternativ gibt es auch ein Nagios Plugin.
Punkt 6: Fertig
Nun sollte die neue Version laufen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | localhost:~# /opt/php-7.3/bin/php -v PHP 7.3.7 (cli) (built: Jul 4 2019 14:59:36) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.7, Copyright (c) 1999-2018, by Zend Technologies localhost:~# systemctl status php7.3-fpm.service ● php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager Loaded: loaded (/etc/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-07-04 15:00:44 CEST; 4 days ago Main PID: 21255 (php-fpm) Tasks: 3 (limit: 4915) CGroup: /system.slice/php7.3-fpm.service ├─21255 php-fpm: master process (/opt/php-7.3/etc/php-fpm.conf) ├─21257 php-fpm: pool www └─21258 php-fpm: pool www Jun 26 14:59:27 localhost systemd[1]: Started The PHP 7.3 FastCGI Process Manager. |
Das Betreiben der Dienste, Webseite und Server machen wir gerne, kostet aber leider auch Geld. Unterstütze unsere Arbeit mit einer Spende. |
Riesiger Aufwand den man mit den offiziellen Docker-PHP-Containern in 2-3 Zeilen abfackeln kann.
ja könnte man, wenn man es denn wolle. Es muss ja nicht nur den Docker-Weg geben. Der Aufwand wurde dem Endbenutzer durch die Scripte ja genommen.
Gerade unter Ubuntu/Debian stammen die „Fremdquellen“ ja von dem offiziellen Debian-Maintainer der PHP-Pakete (ondrej). Das Problem mit selbstgebauten Paketen ist ja, dass man da nicht vom Paketmanagement benachrichtigt wird, dass eine neue Version da ist (was bei PHP ja recht häufig ist). Da würde ich noch einen cronjob laufen lassen, der regelmässig nachguckt und einen benachrichtigt. Schöne Skripte auf jeden Fall, danke!
Gute Idee, habe ich mal für Nagios, Systemd Timer und Cronjob umgesetzt: https://github.com/adminforge/php-7.3-autobuild
Hi,
Danke dir für deine Mühe. Endlich hat es geklappt.
Für PHP 7.4 spuckt er Fehler aus
Compiling findet nicht statt.
Die Version 7.3 hat er problemlos installiert
Problem behoben, es fehlten 2 Devel Pakete. Bitte das Script neu laden und testen.
Danke, so viel ich weiss, bei meinem fix, waren es sqlite-dev und Mirko Paket.
Mormo paket.
Könntest du unten wo du die imagema… Gut Updates machst, noch brotli einfügen?
Redis ist ja bereits dabei.
bitte was möchtest du genau haben?