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. |
Unterstütze unsere Arbeit mit einer Spende. |