PHP-FPM 7.3 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 getestet.

Ihr könnt mittels git das Repository klonen

git clone https://github.com/adminforge/autobuild_php.git

oder alternativ direkt herunterladen

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 auf 127.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 und php-imagick werden gebaut und installiert
  • Die Dienste redis-server.service und php7.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 und php-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.

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.

autobuild_php.sh update

Ergebnis stand 08.07.2019:

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!

autobuild_php.sh installcron deine@mailadresse.de

Alternativ gibt es auch ein Nagios Plugin.

Punkt 6: Fertig

Nun sollte die neue Version laufen.

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.

 

Dominion

Dominion

Linux Systemadministrator

Das könnte Dich auch interessieren …

4 Antworten

  1. Avatar Anonym sagt:

    Riesiger Aufwand den man mit den offiziellen Docker-PHP-Containern in 2-3 Zeilen abfackeln kann.

  2. Avatar Matthias sagt:

    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!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.