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
Pingback:PHP 7.4 – Profoxi