GNU/Linux >> Linux Esercitazione >  >> Debian

Come installare PHP 7.1, 7.2 e 5.6 come PHP-FPM e FastCGI per ISPConfig 3 su Debian 9

Debian 9 viene fornito con PHP 7.0 come versione predefinita di PHP. Le versioni principali di PHP non sono compatibili al 100% tra loro, quindi un sito Web potrebbe richiedere una versione PHP più recente o precedente per funzionare. ISPConfig supporta l'utilizzo di più versioni PHP sullo stesso server, la versione PHP può essere selezionata per ciascun sito Web individualmente nelle impostazioni del sito Web. Questo tutorial mostra come installare PHP 7.1, 7.2 e 5.6 in modalità FPM e FCGI insieme a PHP 7.0 su un server Debian 9. Le versioni PHP aggiuntive vengono installate nella cartella /opt, quindi la loro installazione non influisce sulla versione PHP predefinita.

AGGIORNAMENTO:si consiglia di installare ora versioni PHP aggiuntive su Debian e Ubuntu dai pacchetti. Il tutorial può essere trovato qui:https://www.howtoforge.com/tutorial/how-to-install-php-7-for-ispconfig-3-from-debian-packages-on-debian-8-and-9 /

1 Nota preliminare

Installerò PHP 7.1, 7.2 e 5.6. Tieni presente che PHP-FPM può essere utilizzato su entrambi i server Apache e Nginx mentre FastCGI è disponibile solo per i server Apache.

2 Installa i prerequisiti

Installa i prerequisiti per la creazione di PHP e il nano editor che userò per modificare i file di configurazione:

apt-get install build-essential nano
apt-get install 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
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

(L'ultimo comando è necessario se crei PHP con --with-imap, perché altrimenti ./configure si fermerà con il seguente errore:

checking for crypt in -lcrypt... yes
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.
[email protected]:/usr/local/src/php5-build/php-7.1.14#

)

3 Compila PHP 7.1 come PHP-FPM e Fastcgi

Scarica ed estrai l'archivio PHP:

mkdir -p /opt/php-7.1
mkdir /usr/local/src/php7.1-build
cd /usr/local/src/php7.1-build
wget http://de2.php.net/get/php-7.1.14.tar.bz2/from/this/mirror -O php-7.1.14.tar.bz2
tar jxf php-7.1.14.tar.bz2
cd php-7.1.14/

Configura e compila PHP 7.1 come segue (puoi adattare il comando ./configure alle tue esigenze, dai un'occhiata a

./configure --help

per vedere tutte le opzioni disponibili; se utilizzi un comando ./configure diverso, è possibile che siano necessarie librerie aggiuntive o il processo di compilazione non riuscirà):

./configure --prefix=/opt/php-7.1 --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

L'ultima opzione (--enable-fpm) assicura che questa versione di PHP funzioni con PHP-FPM.

make
make install

Copia php.ini e php-fpm.conf nelle posizioni corrette:

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

Apri /opt/php-7.1/etc/php-fpm.conf e regola la seguente impostazione (rimuovi; davanti alla riga pid):

nano /opt/php-7.1/etc/php-fpm.conf
[...]
pid = run/php-fpm.pid
[...]

Quindi apri /opt/php-7.1/etc/php-fpm.d/www.conf e regola la linea di ascolto, devi utilizzare una porta non utilizzata (ad es. 8999; la porta 9000 potrebbe essere già utilizzata dal PHP-FPM predefinito di Debian) :

nano /opt/php-7.1/etc/php-fpm.d/www.conf
[...]
listen = 127.0.0.1:8999
[...]

3.1 Creare il file dell'unità systemd

Successivamente, creeremo il file dell'unità di sistema che viene utilizzato per avviare e arrestare il demone PHP-FPM.

nano /lib/systemd/system/php-7.1-fpm.service

con il seguente contenuto:

[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

Abilita il servizio e ricarica systemd:

systemctl enable php-7.1-fpm.service
systemctl daemon-reload

Infine, avvia PHP-FPM.

systemctl start php-7.1-fpm.service

Per abilitare Zend OPcache, apri /opt/php-7.1/lib/php.ini...

nano /opt/php-7.1/lib/php.ini

... e aggiungi la seguente riga alla fine:

[...]
zend_extension=opcache.so

3.2 Abilita Memcache (opzionale)

In questo capitolo compilerò e abiliterò l'estensione PHP Memcached.

Il primo passo è installare il pacchetto libmemcached-dev da Debian.

apt-get install libmemcached-dev

Quindi crea una directory, scarica l'estensione memcache PHP da Github, decomprimi l'archivio e inserisci la directory che contiene i file decompressi.

mkdir /usr/local/src/php7.1-build/php-memcache
cd /usr/local/src/php7.1-build/php-memcache
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip
unzip php7.zip
cd php-memcached-php7

Prepara i sorgenti eseguendo il comando phpize da PHP 7.1.

/opt/php-7.1/bin/phpize

Configura e crea l'estensione memcache PHP.

./configure --with-php-config=/opt/php-7.1/bin/php-config
make
make install

Per abilitare l'estensione Memcache, apri /opt/php-7.1/lib/php.ini...

nano /opt/php-7.1/lib/php.ini

... e aggiungi la seguente riga alla fine:

[...]
extension=memcached.so

3.3 Installare l'estensione xDebug (opzionale)

Il modulo xDebug è un'estensione di debug per PHP. L'installazione è facoltativa.

Installa xDebug con questi comandi.

cd /opt/php-7.1/etc
../bin/pecl -C ./pear.conf update-channels
../bin/pecl -C ./pear.conf install xdebug

Quindi modifica il file php.ini con un editor:

nano /opt/php-7.1/lib/php.ini

e aggiungi la seguente riga alla fine del file:

zend_extension=/opt/php-7.1/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so

Infine riavvia il demone php-fpm:

systemctl start php-7.1-fpm.service

Testare la versione PHP:

cd /opt/php-7.1/bin
./php --version

L'output dovrebbe essere simile a questo screenshot.

Nota: Lo screenshot è di PHP 7.1.14, il tutorial viene aggiornato continuamente per le nuove versioni di PHP, ma non acquisiamo nuovi screenshot ogni volta, quindi la versione di PHP che vedrai sul tuo server potrebbe essere più recente. La versione corrente di questo tutorial è per php-7.1.14.

3.4 Abilita PHP 7.1 in ISPConfig

In ISPConfig 3.1, puoi configurare la nuova versione PHP in Sistema> Versioni PHP aggiuntive. Nella scheda Nome, inserisci semplicemente un nome per la versione PHP (ad es. PHP 7.1):questa versione PHP sarà elencata con questo nome nelle impostazioni del sito Web in ISPConfig:

Vai alla scheda Impostazioni FastCGI e compila i campi come segue:

Path to the PHP FastCGI binary: /opt/php-7.1/bin/php-cgi
Path to the php.ini directory: /opt/php-7.1/lib

Quindi vai alla scheda Impostazioni PHP-FPM e compila i campi come segue:

Path to the PHP-FPM init script: php-7.1-fpm
Path to the php.ini directory: /opt/php-7.1/lib
Path to the PHP-FPM pool directory: /opt/php-7.1/etc/php-fpm.d

4 Compila PHP 7.2 come PHP-FPM e Fastcgi

Scarica ed estrai PHP da php.net e decomprimi il file tar.bz2:

mkdir -p /opt/php-7.2
mkdir /usr/local/src/php7.2-build
cd /usr/local/src/php7.2-build
wget http://de2.php.net/get/php-7.2.2.tar.bz2/from/this/mirror -O php-7.2.2.tar.bz2
tar jxf php-7.2.2.tar.bz2
cd php-7.2.2/

Configura e compila PHP 7.2 come segue (puoi adattare il comando ./configure alle tue esigenze, dai un'occhiata a

./configure --help

per vedere tutte le opzioni disponibili; se utilizzi un comando ./configure diverso, è possibile che siano necessarie librerie aggiuntive o il processo di compilazione non riuscirà):

./configure --prefix=/opt/php-7.2 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --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 --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

L'ultima opzione (--enable-fpm) assicura che questa versione di PHP funzioni con PHP-FPM.

make
make install

Copia php.ini e php-fpm.conf nelle posizioni corrette:

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

Apri /opt/php-7.2/etc/php-fpm.conf e regola la seguente impostazione (rimuovi; davanti alla riga pid):

nano /opt/php-7.2/etc/php-fpm.conf
[...]
pid = run/php-fpm.pid
[...]

Quindi apri /opt/php-7.2/etc/php-fpm.d/www.conf e regola la linea di ascolto, devi utilizzare una porta non utilizzata (ad es. 8998; la porta 9000 potrebbe essere già utilizzata dal PHP-FPM predefinito di Debian) :

nano /opt/php-7.2/etc/php-fpm.d/www.conf
[...]
listen = 127.0.0.1:8998
[...]

4.1 Creare il file dell'unità systemd

Successivamente, creeremo il file dell'unità di sistema che viene utilizzato per avviare e arrestare il demone PHP-FPM.

nano /lib/systemd/system/php-7.2-fpm.service

con il seguente contenuto:

[Unit]
Description=The PHP 7.2 FastCGI Process Manager
After=network.target

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

[Install]
WantedBy=multi-user.target

Abilita il servizio e ricarica systemd:

systemctl enable php-7.2-fpm.service
systemctl daemon-reload

Infine, avvia PHP-FPM.

systemctl start php-7.2-fpm.service

Per abilitare Zend OPcache, apri /opt/php-7.2/lib/php.ini...

nano /opt/php-7.2/lib/php.ini

... e aggiungi la seguente riga alla fine:

[...]
zend_extension=opcache.so

4.2 Abilita Memcache (opzionale)

In questo capitolo compilerò e abiliterò l'estensione PHP Memcached.

Il primo passo è installare il pacchetto libmemcached-dev da Debian.

apt-get install libmemcached-dev

Quindi crea una directory, scarica l'estensione memcache PHP da Github, decomprimi l'archivio e inserisci la directory che contiene i file decompressi.

mkdir /usr/local/src/php7.2-build/php-memcache
cd /usr/local/src/php7.2-build/php-memcache
wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip
unzip php7.zip
cd php-memcached-php7

Prepara i sorgenti eseguendo il comando phpize da PHP 7.2.

/opt/php-7.2/bin/phpize

Configura e crea l'estensione memcache PHP.

./configure --with-php-config=/opt/php-7.2/bin/php-config
make
make install

Per abilitare l'estensione Memcache, apri /opt/php-7.2/lib/php.ini...

nano /opt/php-7.2/lib/php.ini

... e aggiungi la seguente riga alla fine:

[...]
extension=memcached.so

4.3 Installa l'estensione xDebug (opzionale)

Il modulo xDebug è un'estensione di debug per PHP. L'installazione è facoltativa.

Installa xDebug con questi comandi.

cd /opt/php-7.2/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install xdebug

Quindi modifica il file php.ini con un editor:

nano /opt/php-7.2/lib/php.ini

e aggiungi la seguente riga alla fine del file:

zend_extension=/opt/php-7.2/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so

Infine riavvia il demone php-fpm:

systemctl start php-7.2-fpm.service

Testare la versione PHP:

cd /opt/php-7.2/bin
./php --version

L'output dovrebbe essere simile a questo screenshot.

Nota: Lo screenshot è di PHP 7.2.2, il tutorial viene aggiornato continuamente per le nuove versioni di PHP, ma non acquisiamo nuovi screenshot ogni volta, quindi la versione di PHP che vedrai sul tuo server potrebbe essere più recente. La versione corrente di questo tutorial è per php-7.2.2.

4.4 Abilita PHP 7.2 in ISPConfig

In ISPConfig 3.1, puoi configurare la nuova versione PHP in Sistema> Versioni PHP aggiuntive. Nella scheda Nome, inserisci semplicemente un nome per la versione PHP (ad es. PHP 7.2):questa versione PHP sarà elencata con questo nome nelle impostazioni del sito Web in ISPConfig:

Vai alla scheda Impostazioni FastCGI e compila i campi come segue:

Path to the PHP FastCGI binary: /opt/php-7.2/bin/php-cgi
Path to the php.ini directory: /opt/php-7.2/lib

Quindi vai alla scheda Impostazioni PHP-FPM e compila i campi come segue:

Path to the PHP-FPM init script: php-7.2-fpm
Path to the php.ini directory: /opt/php-7.2/lib
Path to the PHP-FPM pool directory: /opt/php-7.2/etc/php-fpm.d

5 Compila PHP 5.6 come PHP-FPM e Fastcgi

Scarica PHP e decomprimi l'archivio tar.bz2:

mkdir -p /opt/php-5.6
mkdir /usr/local/src/php5.6-build
cd /usr/local/src/php5.6-build
wget http://de2.php.net/get/php-5.6.33.tar.bz2/from/this/mirror -O php-5.6.33.tar.bz2
tar jxf php-5.6.33.tar.bz2

La versione OpenSSL in Debian 9 è troppo nuova per PHP 5.6, quindi dovremo compilare una versione precedente in /opt/openssl per usarla con PHP 5.6.

cd /tmp
wget "https://www.openssl.org/source/old/1.0.1/openssl-1.0.1t.tar.gz"
tar xzf openssl-1.0.1t.tar.gz
cd openssl-1.0.1t
./config shared --prefix=/opt/openssl
make -j $(nproc) && make install
ln -s /opt/openssl/lib /opt/openssl/lib/x86_64-linux-gnu
wget -O /opt/openssl/ssl/cert.pem "http://curl.haxx.se/ca/cacert.pem"

Crea un collegamento simbolico in modo che PHP trovi le librerie freetype, libcrypto e libssl.

mkdir /usr/include/freetype2/freetype
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h
ln -s /opt/openssl/lib/libcrypto.so.1.0.0 /usr/lib/x86_64-linux-gnu/
ln -s /opt/openssl/lib/libssl.so.1.0.0 /usr/lib/x86_64-linux-gnu/
ln -fs /opt/openssl /usr/local/ssl

Immettere la cartella che contiene i file di origine PHP decompressi.

cd /usr/local/src/php5.6-build/php-5.6.33/

Configura e compila PHP 5.6 come segue (puoi adattare il comando ./configure alle tue esigenze, dai un'occhiata a

./configure --help

per vedere tutte le opzioni disponibili; se utilizzi un comando ./configure diverso, è possibile che siano necessarie librerie aggiuntive o il processo di compilazione non riuscirà):

./configure --prefix=/opt/php-5.6 --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-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=/opt/openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm

L'ultima opzione (--enable-fpm) assicura che questa versione di PHP funzioni con PHP-FPM.

make
make install

Copia php.ini e php-fpm.conf nelle posizioni corrette:

cp /usr/local/src/php5.6-build/php-5.6.33/php.ini-production /opt/php-5.6/lib/php.ini
cp /opt/php-5.6/etc/php-fpm.conf.default /opt/php-5.6/etc/php-fpm.conf
mkdir -p /opt/php-5.6/etc/php-fpm.d

Apri /opt/php-5.6/etc/php-fpm.conf e regola la seguente impostazione:

nano /opt/php-5.6/etc/php-fpm.conf
[...]
pid = run/php-fpm.pid
[...]
user = www-data
group = www-data
[...]
listen = 127.0.0.1:8997
[...]
include=/opt/php-5.6/etc/php-fpm.d/*.conf

5.1 Creare il file dell'unità systemd

Successivamente, creeremo il file dell'unità di sistema che viene utilizzato per avviare e arrestare il demone PHP-FPM.

nano /lib/systemd/system/php-5.6-fpm.service

con il seguente contenuto:

[Unit]
Description=The PHP 5.6 FastCGI Process Manager
After=network.target

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

[Install]
WantedBy=multi-user.target

Abilita il servizio e ricarica systemd:

systemctl enable php-5.6-fpm.service
systemctl daemon-reload

Infine, avvia PHP-FPM.

systemctl start php-5.6-fpm.service

Per abilitare Zend OPcache, apri /opt/php-5.6/lib/php.ini...

nano /opt/php-5.6/lib/php.ini

... e aggiungi la seguente riga alla fine:

[...]
zend_extension=opcache.so

5.2 Abilita Memcache (opzionale)

In questo capitolo compilerò e abiliterò l'estensione PHP Memcached.

Il primo passo è installare il pacchetto libmemcached-dev da Debian.

apt-get install libmemcached-dev

Quindi esegui questi comandi per creare l'estensione memcache

cd /opt/php-5.6/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install memcache

Per abilitare l'estensione Memcache, apri /opt/php-5.6/lib/php.ini...

nano /opt/php-5.6/lib/php.ini

... e aggiungi la seguente riga alla fine:

[...]
extension=memcache.so

Infine riavvia il demone php-fpm:

systemctl start php-5.6-fpm.service

Testare la versione PHP:

cd /opt/php-5.6/bin
./php --version

L'output dovrebbe essere simile a questo screenshot.

Nota: Lo screenshot è di PHP 5.6.33, il tutorial viene aggiornato continuamente per le nuove versioni di PHP ma non acquisiamo nuovi screenshot ogni volta, quindi la versione di PHP che vedrai sul tuo server potrebbe essere più recente. La versione corrente di questo tutorial è per php-5.6.33.

5.4 Abilita PHP 5.6 in ISPConfig

In ISPConfig 3.1, puoi configurare la nuova versione PHP in Sistema> Versioni PHP aggiuntive. Nella scheda Nome, inserisci semplicemente un nome per la versione PHP (ad es. PHP 5.6) - questa versione PHP sarà elencata con questo nome nelle impostazioni del sito Web in ISPConfig:

Vai alla scheda Impostazioni FastCGI e compila i campi come segue:

Path to the PHP FastCGI binary: /opt/php-5.6/bin/php-cgi
Path to the php.ini directory: /opt/php-5.6/lib

Quindi vai alla scheda Impostazioni PHP-FPM e compila i campi come segue:

Path to the PHP-FPM init script: php-5.6-fpm
Path to the php.ini directory: /opt/php-5.6/lib
Path to the PHP-FPM pool directory: /opt/php-5.6/etc/php-fpm.d

  • PHP:http://www.php.net/
  • Configurazione ISP:http://www.ispconfig.org/
  • Debian:http://www.debian.org/

Debian
  1. Come costruire PHP 5.6 (PHP-FPM e FastCGI) con Zend OPcache e APCu per ISPConfig 3 su Debian 7 (Wheezy)

  2. Come installare PHP 8.0 su Debian 11

  3. Come installare PHP 8.0 su Debian 10 / Debian 9

  4. Come installare PHP 7.4 su Debian 10

  5. Come installare PHP 8 su Debian 10

Come compilare e installare PHP 7.4 come PHP-FPM e FastCGI per ISPConfig 3 su Ubuntu 18.04 LTS

Come installare PHP 5.6 e 7.0 - 8.1 come PHP-FPM e FastCGI per ISPConfig 3 con apt su Debian da 8 a 11

Come installare e utilizzare PHP Composer su Debian 11

Come installare Apache con PHP-FPM su Debian 10

Come installare ISPConfig su Debian 11

Come installare Nginx e PHP su Debian 10