Verschiedene PHP Versionen für ISPConfig installieren (PHP-FPM, FastCGI)

Inhalte

Will man mehrere PHP Instanzen auf einem Server betreiben, der kann mithilfe diesen Beitrag alle Einstellungen direkt vornehmen.

 Voraussetzungen

  • Debian Stretch
  • sudo oder Root Rechte

Betriebssystem updaten

apt-get update && apt-get upgrade -y

PHP Binary downloaden und deployen

Um PHP bauen zu können, sind folgende Libarys nötig. Diese werden per APT installiert:

apt-get install build-essential nano libfcgi-dev libfcgi0ldbl libjpeg62-turbo-dev libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev pkg-config libsqlite3-dev libonig-dev

Wir müssen um PHP Deployen zu können, folgende Links setzen bzw. Enfernen. Bei nichtbeachtung kann sonst das Deployen schief gehen:

ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
cd /usr/include
ln -s x86_64-linux-gnu/curl

 Nun erstellen wir unter dem OPT Verzeichnis ein PHP Verzeichnis und downloaden PHP von der offiziellen Webseite php.net runter.

mkdir -p /opt/php-7.4
mkdir /usr/local/src/php7.4-build
cd /usr/local/src/php7.4-build
wget https://www.php.net/distributions/php-7.4.1.tar.bz2
tar jxf php-7.4.1 .tar.bz2
cd php-7.4.1 /

Nun bereiten wir das Deployment vor, indem wir alle Konfigurationen erstellen. Dazu geben wir alle zukünftigen PHP Module gleich mit ein.

./configure --prefix=/opt/php-7.4 --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-intl --enable-fpm

 Nun deployen wir es mit make bzw. make install.

Achtung! Dieser Schritt kann je nach Auslastung des Servers bzw. CPU Anzahl etwas längern dauern.

make
make install

Nachdem wir erfolgreich deployt haben, kopieren wir die entsprechenden PHP.ini und Configs in das OPT Verzeichnis.

cp /usr/local/src/php7.4-build/php-7.4/php.ini-production /opt/php-7.4/lib/php.ini
cp /opt/php-7.4/etc/php-fpm.conf.default /opt/php-7.4/etc/php-fpm.conf
cp /opt/php-7.4/etc/php-fpm.d/www.conf.default /opt/php-7.4/etc/php-fpm.d/www.conf

Wir aktivieren den opcache in der php.ini. Die Codezeile fügen wir ganz am Ende der PHP.ini ein.

nano /opt/php-7.4/lib/php.ini
...
zend_extension=opcache.so

Wir bearbeiten nun unser FPM und wechseln den Port.

Wichtig! Jede installierte PHP Version bekommt hier einen eigenen Port.

nano /opt/php-7.4/etc/php-fpm.conf
...
pid = run/php-fpm.pid
...
nano /opt/php-7.4/etc/php-fpm.d/www.conf
...
listen = 127.0.0.1:8999
...

Nun erstellen wir ein eigenen Start Script und geben das dem System bekannt.

nano /lib/systemd/system/php-7.4-fpm.service
[Unit]
Description=The PHP 7.4 FastCGI Process Manager
After=network.target

[Service]
Type=simple
PIDFile=/opt/php-7.4/var/run/php-fpm.pid
ExecStart=/opt/php-7.4/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.4/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target
systemctl enable php-7.4-fpm.service
systemctl daemon-reload

 Wir starten nun das FPM

systemctl start php-7.4-fpm.service

Nun loggen wir uns in ISPConfig ein und geben dem System eine neue PHP Version bekannt. Dazu gehen wir zu den Systemeinstellungen und geben alle Einstellungen über den Button „Zusätzliche PHP Versionen“ ein. Siehe Bilder.

Dazu sind folgende Einstellungen wichtig:

Im Reiter FastCGI Einstellungen:

Pfad zum PHP FastCGI Binary: /opt/php-7.4/bin/php-cgi
Pfad zum php.ini Verzeichnis: /opt/php-7.4/lib

Im Reiter PHP-FPM Einstellungen:

Pfad zum PHP-FPM Init Script: php-7.4-fpm
Pfad zum php.ini Verzeichnis: /opt/php-7.4/lib
Pfad zum PHP-FPM Pool Verzeichnis: /opt/php-7.4/etc/php-fpm.d

Module nachträglich installieren/aktvieren

z.B. für Memcache

cd /opt/php-7.4/etc
../bin/pecl -C ./pear.conf update-channels
../bin/pecl -C ./pear.conf install memcached

Und dann das Module aktivieren

echo extension=memcached.so >> /opt/php-7.4/lib/php.ini

Service neustarten nicht vergessen!

systemctl restart php-7.4-fpm.service

Fertig. So kann man nun verschiedene PHP Versionen auf dem gleichen weg installieren.

Viel Erfolg

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 5 / 5. Anzahl Bewertungen: 1

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Ein Kommentar

  1. Pingback:PHP 7.4 – Profoxi

Schreibe einen Kommentar

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