Menü Schließen

ISPConfig – Update PHP 7.1.x auf 7.1.12

PHP Logo

Nachfolgend beschreibe ich das Update von PHP in Version 7.1.2 unter dem Server Control Panel ISPConfig. Die PHP Installation erfolgt  als PHP-FPM und FastCGI Modul. Ich werde in der Anleitung PHP 7.1.12 in das Verzeichnis /opt/php/7.1.12 installieren. Hintergrund ist so die Möglichkeit weitere Updates ohne größere Ausfallzeiten für die Webseiten durchzuführen. Es muss lediglich ein Symlink gesetzt werden. (Achtung ist aktuell in der ISPConfig Version so nicht ganz möglich – Infos unten)

Seitens der PHP-Cache Möglichkeiten gibt es aktuell nur die Unterstützung durch Zend OPcache und Memcached, Memcache wird nicht mehr entwickelt und daher auch nicht für PHP 7 unterstützt. Selbes gilt wohl auch für XCache was ebenfalls nicht mehr für PHP7 entwickelt und unterstützt wird.

Installation PHP 7.1.12 unter ISPConfig 3

  1. PHP 7.1.2 Voraussetzungen sowie Midnight Commander / Nano zum editieren der Konfiguration installieren
    1. # aptitude install build-essential mc nano autoconf
  2. Verzeichnis erstellen
    1. # mkdir -p /opt/php/7.1.12
  3. PHP 7.1 installieren
    1. # mkdir -p /usr/local/src/php-7.1.12
    2. # cd /usr/local/src/php-7.1.12
    3. # wget http://de2.php.net/get/php-7.1.12.tar.bz2/from/this/mirror -O php-7.1.12.tar.bz2
    4. # tar jxfv php-7.1.12.tar.bz2
    5. # cd php-7.1.12/
  4. PHP 7.1 Module installieren
    1. # aptitude install libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev
    2. falls PHP mit –with-imap kompiliert wurde noch folgendes ausführen
      1. # ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
  5. PHP 7.1.12 mit PHP-FPM konfigurieren (Hilfe für Anpassungen mittels # ./configure –help)
    1. # ./configure --prefix=/opt/php/7.1.12 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-pdo-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm
    2. # make
    3. # make install
  6. PHP 7.1.12 php.ini kopieren
    1. # cp /usr/local/src/php7-build/php-7.1.12/php.ini-production /opt/php/7.1.12/lib/php.ini
  7. PHP 7.1.12  php-fpm.conf kopieren
    1. # cp /opt/php/7.1.12/etc/php-fpm.conf.default /opt/php/7.1.12/etc/php-fpm.conf
    2. # cp /opt/php/7.1.12/etc/php-fpm.d/www.conf.default /opt/php/7.1.12/etc/php-fpm.d/www.conf
  8. PHP 7.1.12 PID aktivieren
    1. # mcedit  /opt/php/7.1.12/etc/php-fpm.conf:
      1. pid = run/php-fpm.pid
      2. error_log=log/php-fpm.log
  9. PHP 7.1.12 freien Port (8998 oder 8999 oder 9000) einstellen
    1. benutzte(r) Port: # netstat -tulpn |grep php-fpm
      tcp 0 0 127.0.0.1:9002 0.0.0.0:* LISTEN 1867/php-fpm.conf)
      tcp 0 0 127.0.0.1:9003 0.0.0.0:* LISTEN 1869/php-fpm.conf)
    2. neuen Port setzen: # mcedit /opt/php/7.1.12/etc/php-fpm.d/www.conf
      1. listen = 127.0.0.1:9004
  10. PHP 7.1 Systemd Skripte erstellen
    1. # mcedit /lib/systemd/system/php7.1-fpm.service
      # cat /lib/systemd/system/php7.1-fpm.service
      [Unit]
      Description=The PHP 7.1 FastCGI Process Manager
      After=network.target
      [Service]
      Type=simple
      PIDFile=/opt/php/7.1/var/run/php-fpm.pid
      ExecStart=/opt/php/7.1/sbin/php-fpm –nodaemonize –fpm-config /opt/php/7.1/etc/php-fpm.conf
      ExecReload=/bin/kill -USR2 $MAINPID
      [Install]
      WantedBy=multi-user.target
    2. Service aktivieren und Systemd neustarten
      1. # systemctl enable php7.1-fpm.service
      2. # systemctl daemon-reload
    3. nun PHP-FPM starten
      1. # systemctl start php7.1-fpm.service
    4. Status des PHP 7.1 FPM Dienstes prüfen:
      1. # systemctl status -l php7.1-fpm.service
  11. Zend OPcache (7.1.12) aktivieren
    1. # mcedit /opt/php/7.1.12/lib/php.ini und am Ende folgendes hinzufügen: zend_extension=opcache.so
    2. PHP Version testen:
      1. # cd /opt/php/7.1.12/bin
      2. # ./php --version
        PHP 7.1.12 (cli) (built: Dec 26 2017 00:51:57) ( NTS )
        Copyright (c) 1997-2017 The PHP Group
        Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
        with Zend OPcache v7.1.12, Copyright (c) 1999-2017, by Zend Technologies
  12. Memcached (3.0.3) aktivieren (optional)
    1. beötigtes Paket installieren: # aptitude install libmemcached-dev
    2. PHP memcached Exension von Github installieren:
      1. # mkdir /usr/local/src/php-7.1.12/php-memcached
      2. # cd /usr/local/src/php-7.1.12/php-memcached
      3. # wget https://github.com/php-memcached-dev/php-memcached/archive/master.zip
      4. # unzip master.zip
      5. # cd php-memcached-master
    3. Sources vorbereiten
      1. ausführen von # /opt/php/7.1.12/bin/phpize
        Configuring for:
        PHP Api Version: 20160303
        Zend Module Api No: 20160303
        Zend Extension Api No: 320160303
      2. PHP Memcache Extension erstellen
        # ./configure --with-php-config=/opt/php/7.1.12/bin/php-config
        # make
        # make install
        Installing shared extensions: /opt/php/7.1.12/lib/php/extensions/no-debug-non-zts-20160303/
      3. Memcache Extension aktivieren und ans Ender der Datei hinzufügen
        # mcedit /opt/php/7.1.12/lib/php.ini
        extension=memcached.so
  13. aufräumen und Download löschen:
    1. # rm /usr/local/src/php7-build/php-7.1.12.tar.bz2
    2. # rm -R /usr/local/src/php7-build/php-7.1.12
  14. PHP 7.1.12 Symlink auf Hauptversion PHP 7.1 setzen:
    1. # ln -sfn /opt/php/7.1.12/* /opt/php/7.1/
  15. PHP 7.1.12 in ISPConfig akivieren
    1. unter Sysetm > Zusätzliche PHP Versionen (System > Additional PHP Versions)
      ISPConfig - weitere PHP Versionen
      ISPConfig – weitere PHP Versionen
      1. Neue PHP Version hinzufügen / Add new PHP Version
        ISPConfig - PHP Version hinzufügen
        ISPConfig – PHP Version hinzufügen
        1. PHP Name : PHP 7.1

          ISPConfig PHP Version Name
          ISPConfig PHP Version Name
        2. Reiter FastCGI Settings – Pfad zum PHP FastCGI Binary :  /opt/php/7.1.12/bin/php-cgi
        3. Reiter FastCGI Einstellungen – Pfad zum php.ini Verzeichnis : /opt/php/7.1.12/lib

          ISPConfig PHP FastCGI
          ISPConfig PHP FastCGI
        4. Reiter PHP-FPM Einstellungen – Pfad zum PHP-FPM Init Script : /lib/systemd/system/php7.1-fpm .service
        5. Reiter PHP-FPM Einstellungen – Pfad zum php.ini Verzeichnis : /opt/php/7.1.12/lib
        6. Reiter PHP-FPM Einstellungen – Pfad zum PHP-FPM Pool Verzeichnis : /opt/php/7.1.12/etc/php-fpm.d

          ISPConfig PHP FPM Settings
          ISPConfig PHP FPM Settings
  16. Webseite auf PHP 7.1.12 umstellen
    1. Im Menü Webseiten / Websites die Webseite auswählen
    2. Reiter Domain und dort ganz unten die PHP Version auf 7.1 umstellen

      ISPConfig Webseite PHP 7.1 einstellen
      ISPConfig Webseite PHP 7.1 einstellen

!Achtung in der ISPConfig Version bis aktuell 3.1.2 wird der gesetzte Symlink erkannt und aus Sicherheitsgründen geblockt. Somit wird die php.ini nicht geladen. Ein Bug (https://git.ispconfig.org/ispconfig/ispconfig3/issues/4408)  wurde bereits berichtet. Solange sollte der Pfad in ISPConfig auf die Version 7.1.2 verweisen. Ein Patch wird in eine der nächsten Versionen erwartet.

Schreibe einen Kommentar

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