GNU/Linux >> Linux Esercitazione >  >> Debian

Come installare PHP 7 (PHP-FPM e FastCGI) per ISPConfig 3 su Debian 8 (Jessie)

La prima versione beta di PHP 7 è ora disponibile per il download, PHP 7 è fino a 2 volte più veloce di php 5.6 e 14 volte più veloce di php 5.0 secondo le note di rilascio. La nuova versione di PHP non è compatibile al 100% con PHP 5.x poiché alcune API deprecate sono state rimosse, quindi è una buona idea iniziare a testare la compatibilità dei tuoi siti Web con questa nuova versione. Questa operazione può essere eseguita facilmente e senza influire su tutti i siti sul server utilizzando la funzione versione multi PHP in ISPConfig 3. La versione PHP può essere selezionata nelle impostazioni del sito Web ISPConfig 3 per ciascun sito individualmente. Questa funzione funziona con PHP-FPM e FastCGI. Questo tutorial mostra come creare il nuovo PHP 7 (Beta) come PHP-FPM e una versione FastCGI su un server Debian Jessie. Queste build PHP 7 includono Zend OPcache.

Nota preliminare

Installerò PHP 7 che è attualmente in versione beta al momento della stesura di questo articolo. Tieni presente che PHP-FPM può essere utilizzato sia su server Apache che nginx, mentre FastCGI è disponibile solo per server Apache.

Con le versioni precedenti di PHP, PHP-FPM e FastCGI si escludevano a vicenda, quindi un binario FPM e FastCGI erano stati compilati separatamente. Con PHP 7, entrambi i binari possono essere compilati insieme, quindi dovremo fare solo una build PHP ora.

Compila PHP 7 con PHP-FPM e Fastcgi

Scarica ed estrai PHP 7:

mkdir -p /opt/php-7.0.0
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget https://downloads.php.net/~ab/php-7.0.0beta1.tar.bz2 -O php-7.0.0.tar.bz2
tar jxf php-7.0.0.tar.bz2
cd php-7.0.0beta1/

Installa i prerequisiti per la creazione di PHP 7 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-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
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

(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.0.0#

)

Configura e compila PHP 7.0.0 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.0.0 --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-mysqli --with-pdo-mysql --with-mysqli --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/php5-build/php-7.0.0beta1/php.ini-production /opt/php-7.0.0/lib/php.ini
cp /opt/php-7.0.0/etc/php-fpm.conf.default /opt/php-7.0.0/etc/php-fpm.conf
cp /opt/php-7.0.0/etc/php-fpm.d/www.conf.default /opt/php-7.0.0/etc/php-fpm.d/www.conf

Apri /opt/php-7.0.0/etc/php-fpm.conf e regola la seguente impostazione (rimuovi il # davanti alla linea pid):

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

Quindi apri /opt/php-7.0.0/etc/php-fpm.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.0.0/etc/php-fpm.d/www.conf
[...]
listen = 127.0.0.1:8999
[...]

Debian supporta Systemd così come i tradizionali script di inizializzazione. Per prima cosa creerò uno script init per il servizio php-fpm e poi creerò un'unità systemd.

Per prima cosa crea uno script di inizializzazione per PHP-FPM:

nano /etc/init.d/php-7.0.0-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-7.0.0-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-7.0.0-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-7.0.0/sbin/php-fpm
php_fpm_CONF=/opt/php-7.0.0/etc/php-fpm.conf
php_fpm_PID=/opt/php-7.0.0/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
        try=0
        while test $try -lt 35 ; do
                case "$1" in
                        'created')
                        if [ -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                        'removed')
                        if [ ! -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
        done
}
case "$1" in
        start)
                echo -n "Starting php-fpm "
                $php_fpm_BIN $php_opts
                if [ "$?" != 0 ] ; then
                        echo " failed"
                        exit 1
                fi
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                       echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        reload)
                echo -n "Reload service php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload}"
                exit 1
        ;;
esac

Rendi eseguibile lo script init e crea i collegamenti di avvio del sistema:

chmod 755 /etc/init.d/php-7.0.0-fpm
insserv php-7.0.0-fpm

E ora crea il file dell'unità systemd

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

con il seguente contenuto:

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

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

[Install]
WantedBy=multi-user.target

E ricarica systemd:

systemctl daemon-reload

Finalmente avvia PHP-FPM.

Per i sistemi con sistema init tradizionale, eseguire:

/etc/init.d/php-7.0.0-fpm start

Il risultato dovrebbe essere:

/etc/init.d/php-7.0.0-fpm start
Starting php-fpm done

Sui server che utilizzano systemd, utilizza invece questo comando:

systemctl start php-7.0.0-fpm.service

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

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

... e aggiungi la seguente riga alla fine:

[...]
zend_extension=opcache.so

L'estensione memcache e APCu non può ancora essere installata su PHP 7, quindi salterò la loro installazione per ora. Aggiornerò il tutorial più tardi quando le estensioni pecl saranno compatibili con PHP 7.

Abilita PHP 7 in ISPConfig

In ISPConfig 3, 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.0.0) - 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.0.0/bin/php-cgi
Path to the php.ini directory: /opt/php-7.0.0/lib

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

Path to the PHP-FPM init script: /etc/init.d/php-7.0.0-fpm
Path to the php.ini directory: /opt/php-7.0.0/lib
Path to the PHP-FPM pool directory: /opt/php-7.0.0/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.2 su Debian 9

  5. Come installare PHP 7.3 su Debian 10

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

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 LAMP (Apache, MySQL, PHP) su Debian 8 Jessie

Come installare Apache con PHP-FPM su Debian 10

Come installare Nginx con PHP-FPM su Debian 10

Come installare ISPConfig su Debian 11