Google PageSpeed Insights PHP7

wall < "Umstellung auf PHP7"

Broadcast message from spillerm@unixe.de (pts/1) (Di Mrz 29 13:30:11 2016):
4
Diesen Beitrag schrieb ich vor 3 Jahren. Behalte das beim Lesen bitte im Hinterkopf.

Mein VPS läuft unter Ubuntu-14.04 LTS; das in den Paketquellen enthaltene PHP ist Version 5.5.9. Der aktive Support for PHP5.5 endete bereits vor acht Monaten, und Security-Updates gibt es noch bis zum 10. Juli 2016 — also drei Monate. Und der aktive Support für PHP5.6 endet am 31. Dezember diesen Jahres — auch keine Ewigkeit mehr. Zeit also für PHP7…

PHP7 Supported VersionsDa ich nur bedingt Freund von externen PPA-Quellen bin, habe ich selbst den Compiler angeworfen; kein Hexenwerk. In Abhängigkeit dessen, was du einkompilieren möchtest musst du lediglich dafür sorgen, dass alle Abhängigkeiten installiert sind — insbesondere die dev-Pakete. Auf der Download-Seite suchst du dir den passenden Mirror aus und lädst dir die aktuelle Stable — das ist die 7.0.4 — herunter und entpackst sie in /usr/src:

$ cd /usr/src
$ tar xvfj php-7.0.4.tar.bz2
$ cd php-7.0.4

Nun kann PHP7 konfiguriert und anschließend kompiliert werden; gegebenenfalls musst du die Optionen an deine Belange anpassen, in zeige hier lediglich, was für mich ganz gut funktioniert ;-) Selbst gebaute Software landet bei mir in /opt/local (weshalb der Inhalt meiner /etc/environment PATH="/opt/local/bin:/opt/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" lautet). Das PHP5 aus den Ubuntu-Paketquellen lasse ich parallel vorerst im System — für den Fall, dass ich wieder umswitchen muss; damit rechne ich aber nicht wirklich, denn jegliche Software, die unter PHP5.5 läuft, sollte auch unter PHP7 problemlos funktionieren. Mal sehen…

$ ./configure \
--prefix=/opt/local/ \
--with-libdir=lib/x86_64-linux-gnu/ \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-libxml \
--enable-session \
--with-pcre-regex=/usr \
--enable-xml \
--enable-simplexml \
--enable-filter \
--disable-debug \
--enable-inline-optimization \
--disable-rpath \
--disable-static \
--enable-shared \
--with-pic \
--with-gnu-ld \
--with-mysql-sock \
--with-gettext \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-xpm-dir \
--enable-exif \
--with-zlib \
--with-bz2 \
--with-curl \
--with-ldap \
--with-mysqli \
--with-freetype-dir \
--enable-soap \
--enable-sockets \
--enable-calendar \
--enable-ftp \
--enable-mbstring \
--enable-gd-native-ttf \
--enable-bcmath \
--enable-zip \
--with-pear \
--with-readline \
--with-openssl \
--with-imap \
--with-imap-ssl \
--with-kerberos \
--enable-phar \
--enable-pdo \
--with-pdo-mysql \
--with-mysqli

Der Vorgang nimmt eine Weile in Anspruch; anschließend kann PHP7 gebaut, getestet und final installiert werden:

$ make
$ make test
$ make install

Konfiguriere nun deinen Webserver so, dass er PHP7 lädt; ich nutze nginx und php-fpm, du musst gegebenenfalls an ganz anderen Stellschrauben drehen.

Fazit

Wäre es technisch möglich, könnte ich meinem VPS ein Downgrade verpassen — PHP7 benötigt deutlich weniger Ressourcen als der kleine Bruder (hätte ich mich da mal vor dem Upgrade des VPS drum gekümmert!). Und das bei gesteigerter Performance — wie Google’s PageSpeed Insights eindrucksvoll beweist. WordPress, OwnCloud, der ganze Krams, den ich so auf dem Server rumsausen lasse — alles funktioniert prima. Ein altes WordPress-Plugin musste ich abschalten — das lief schon unter PHP5.5 nur mit sehr viel Liebe und unterdrückten Warnungen, nach der Umstellung war dann halt ganz Schluß.

UnterschriftIst grundsätzlich aber auch sehr sinnvoll, regelmäßig Inventur zu machen, sich von Ballast zu befreien und alte Zöpfe abzuschneiden — in jeder Hinsicht :-)

4
  1. Wo wir gerade bei fpm sind (Achtung, miese Überleitung), schon mal an die Paketgenerierung mit fpm gedacht? -> https://github.com/jordansissel/fpm/wiki

  2. Toller Artikel!!!
    Kannst du auch noch beschreiben welche Stellschrauben du drehen musstest? Ich habe auch Nginx mit php-fpm.

  3. Nach fest kommt ab

    Das find ich sehr cool 😇

  4. Das nervige an solchen Artikeln, ich muss es dann auch ausprobieren. ;) Vielen Dank!

Keine weitere Reaktionen mehr möglich.