GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar PHP 7.1, 7.2 y 5.6 como PHP-FPM y FastCGI para ISPConfig 3 en Debian 9

Debian 9 viene con PHP 7.0 como versión predeterminada de PHP. Las principales versiones de PHP no son 100% compatibles entre sí, por lo que un sitio web puede requerir una versión de PHP más nueva o más antigua para funcionar. ISPConfig lo admite para usar múltiples versiones de PHP en el mismo servidor, la versión de PHP se puede seleccionar para cada sitio web individualmente en la configuración del sitio web. Este tutorial muestra cómo instalar PHP 7.1, 7.2 y 5.6 como modo FPM y FCGI junto con PHP 7.0 en un servidor Debian 9. Las versiones de PHP adicionales se instalan en la carpeta /opt, por lo que su instalación no afecta la versión de PHP predeterminada.

ACTUALIZACIÓN:Se recomienda instalar ahora versiones adicionales de PHP en Debian y Ubuntu desde paquetes. El tutorial se puede encontrar aquí:https://www.howtoforge.com/tutorial/how-to-install-php-7-for-ispconfig-3-from-debian-packages-on-debian-8-and-9 //P>

1 nota preliminar

Instalaré PHP 7.1, 7.2 y 5.6. Tenga en cuenta que PHP-FPM se puede usar en servidores Apache y Nginx mientras que FastCGI solo está disponible para servidores Apache.

2 Instalar los requisitos previos

Instale los requisitos previos para compilar PHP y el editor nano que usaré para editar los archivos de configuración:

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

(El último comando es necesario si compila PHP con --with-imap, porque de lo contrario, ./configure se detendrá con el siguiente error:

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 como PHP-FPM y Fastcgi

Descargue y extraiga el archivo 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/

Configure y cree PHP 7.1 de la siguiente manera (puede ajustar el comando ./configure según sus necesidades, eche un vistazo a

./configure --help

para ver todas las opciones disponibles; si usa un comando ./configure diferente, es posible que se requieran bibliotecas adicionales o que el proceso de compilación falle):

./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

El último cambio (--enable-fpm) asegura que esta versión de PHP funcionará con PHP-FPM.

make
make install

Copie php.ini y php-fpm.conf en las ubicaciones correctas:

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

Abra /opt/php-7.1/etc/php-fpm.conf y ajuste la siguiente configuración (elimine el; delante de la línea pid):

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

Luego abra /opt/php-7.1/etc/php-fpm.d/www.conf y ajuste la línea de escucha, debe usar un puerto no utilizado (por ejemplo, 8999; el puerto 9000 podría estar en uso por PHP-FPM predeterminado de Debian) :

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

3.1 Crear el archivo de unidad systemd

A continuación, crearemos el archivo de la unidad del sistema que se utiliza para iniciar y detener el demonio PHP-FPM.

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

con el siguiente contenido:

[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

Habilite el servicio y vuelva a cargar systemd:

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

Finalmente, inicie PHP-FPM.

systemctl start php-7.1-fpm.service

Para habilitar Zend OPcache, abra /opt/php-7.1/lib/php.ini...

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

... y agregue la siguiente línea al final:

[...]
zend_extension=opcache.so

3.2 Habilitar Memcache (opcional)

En este capítulo, compilaré y habilitaré la extensión PHP Memcached.

El primer paso es instalar el paquete libmemcached-dev desde Debian.

apt-get install libmemcached-dev

Luego cree un directorio, descargue la extensión PHP Memcache de Github, descomprima el archivo e ingrese al directorio que contiene los archivos desempaquetados.

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

Prepare las fuentes ejecutando el comando phpize desde PHP 7.1.

/opt/php-7.1/bin/phpize

Configura y crea la extensión Memcache de PHP.

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

Para habilitar la extensión Memcache, abra /opt/php-7.1/lib/php.ini...

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

... y agregue la siguiente línea al final:

[...]
extension=memcached.so

3.3 Instalar la extensión xDebug (opcional)

El módulo xDebug es una extensión de depuración para PHP. La instalación es opcional.

Instale xDebug con estos comandos.

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

Luego edite el archivo php.ini con un editor:

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

y agregue la siguiente línea al final del archivo:

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

Finalmente reinicie el demonio php-fpm:

systemctl start php-7.1-fpm.service

Pruebe la versión de PHP:

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

El resultado debería ser similar a esta captura de pantalla.

Tenga en cuenta: La captura de pantalla es de PHP 7.1.14, el tutorial se actualiza continuamente para las nuevas versiones de PHP, pero no tomamos nuevas capturas de pantalla cada vez, por lo que la versión de PHP que verá en su servidor podría ser más nueva. La versión actual de este tutorial es para php-7.1.14.

3.4 Habilitar PHP 7.1 en ISPConfig

En ISPConfig 3.1, puede configurar la nueva versión de PHP en Sistema> Versiones adicionales de PHP. En la pestaña Nombre, simplemente ingrese un nombre para la versión de PHP (por ejemplo, PHP 7.1); esta versión de PHP aparecerá con este nombre en la configuración del sitio web en ISPConfig:

Vaya a la pestaña Configuración de FastCGI y complete los campos de la siguiente manera:

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

Luego vaya a la pestaña Configuración de PHP-FPM y complete los campos de la siguiente manera:

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 como PHP-FPM y Fastcgi

Descargue y extraiga PHP de php.net y descomprima el archivo 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/

Configure y cree PHP 7.2 de la siguiente manera (puede ajustar el comando ./configure según sus necesidades, eche un vistazo a

./configure --help

para ver todas las opciones disponibles; si usa un comando ./configure diferente, es posible que se requieran bibliotecas adicionales o que el proceso de compilación falle):

./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

El último cambio (--enable-fpm) asegura que esta versión de PHP funcionará con PHP-FPM.

make
make install

Copie php.ini y php-fpm.conf en las ubicaciones correctas:

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

Abra /opt/php-7.2/etc/php-fpm.conf y ajuste la siguiente configuración (elimine el; delante de la línea pid):

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

Luego abra /opt/php-7.2/etc/php-fpm.d/www.conf y ajuste la línea de escucha, debe usar un puerto no utilizado (por ejemplo, 8998; el puerto 9000 podría estar en uso por PHP-FPM predeterminado de Debian) :

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

4.1 Crear el archivo de unidad systemd

A continuación, crearemos el archivo de la unidad del sistema que se utiliza para iniciar y detener el demonio PHP-FPM.

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

con el siguiente contenido:

[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

Habilite el servicio y vuelva a cargar systemd:

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

Finalmente, inicie PHP-FPM.

systemctl start php-7.2-fpm.service

Para habilitar Zend OPcache, abra /opt/php-7.2/lib/php.ini...

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

... y agregue la siguiente línea al final:

[...]
zend_extension=opcache.so

4.2 Habilitar Memcache (opcional)

En este capítulo, compilaré y habilitaré la extensión PHP Memcached.

El primer paso es instalar el paquete libmemcached-dev desde Debian.

apt-get install libmemcached-dev

Luego cree un directorio, descargue la extensión PHP Memcache de Github, descomprima el archivo e ingrese al directorio que contiene los archivos desempaquetados.

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

Prepare las fuentes ejecutando el comando phpize desde PHP 7.2.

/opt/php-7.2/bin/phpize

Configura y crea la extensión Memcache de PHP.

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

Para habilitar la extensión Memcache, abra /opt/php-7.2/lib/php.ini...

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

... y agregue la siguiente línea al final:

[...]
extension=memcached.so

4.3 Instalar la extensión xDebug (opcional)

El módulo xDebug es una extensión de depuración para PHP. La instalación es opcional.

Instale xDebug con estos comandos.

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

Luego edite el archivo php.ini con un editor:

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

y agregue la siguiente línea al final del archivo:

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

Finalmente reinicie el demonio php-fpm:

systemctl start php-7.2-fpm.service

Pruebe la versión de PHP:

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

El resultado debería ser similar a esta captura de pantalla.

Tenga en cuenta: La captura de pantalla es de PHP 7.2.2, el tutorial se actualiza continuamente para las nuevas versiones de PHP, pero no tomamos capturas de pantalla nuevas cada vez, por lo que la versión de PHP que verá en su servidor podría ser más nueva. La versión actual de este tutorial es para php-7.2.2.

4.4 Habilitar PHP 7.2 en ISPConfig

En ISPConfig 3.1, puede configurar la nueva versión de PHP en Sistema> Versiones adicionales de PHP. En la pestaña Nombre, simplemente ingrese un nombre para la versión de PHP (por ejemplo, PHP 7.2); esta versión de PHP aparecerá con este nombre en la configuración del sitio web en ISPConfig:

Vaya a la pestaña Configuración de FastCGI y complete los campos de la siguiente manera:

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

Luego vaya a la pestaña Configuración de PHP-FPM y complete los campos de la siguiente manera:

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 como PHP-FPM y Fastcgi

Descargue PHP y descomprima el archivo 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 versión de OpenSSL en Debian 9 es demasiado nueva para PHP 5.6, por lo que tendremos que compilar una versión anterior en /opt/openssl para 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"

Cree un enlace simbólico para que PHP encuentre las bibliotecas freetype, libcrypto y 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

Introduzca la carpeta que contiene los archivos fuente de PHP descomprimidos.

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

Configure y cree PHP 5.6 de la siguiente manera (puede ajustar el comando ./configure según sus necesidades, eche un vistazo a

./configure --help

para ver todas las opciones disponibles; si usa un comando ./configure diferente, es posible que se requieran bibliotecas adicionales o que el proceso de compilación falle):

./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

El último cambio (--enable-fpm) asegura que esta versión de PHP funcionará con PHP-FPM.

make
make install

Copie php.ini y php-fpm.conf en las ubicaciones correctas:

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

Abra /opt/php-5.6/etc/php-fpm.conf y ajuste la siguiente configuración:

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 Crea el archivo de unidad systemd

A continuación, crearemos el archivo de la unidad del sistema que se utiliza para iniciar y detener el demonio PHP-FPM.

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

con el siguiente contenido:

[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

Habilite el servicio y vuelva a cargar systemd:

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

Finalmente, inicie PHP-FPM.

systemctl start php-5.6-fpm.service

Para habilitar Zend OPcache, abra /opt/php-5.6/lib/php.ini...

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

... y agregue la siguiente línea al final:

[...]
zend_extension=opcache.so

5.2 Habilitar Memcache (opcional)

En este capítulo, compilaré y habilitaré la extensión PHP Memcached.

El primer paso es instalar el paquete libmemcached-dev desde Debian.

apt-get install libmemcached-dev

Luego ejecuta estos comandos para compilar la extensión Memcache

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

Para habilitar la extensión Memcache, abra /opt/php-5.6/lib/php.ini...

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

... y agregue la siguiente línea al final:

[...]
extension=memcache.so

Finalmente reinicie el demonio php-fpm:

systemctl start php-5.6-fpm.service

Pruebe la versión de PHP:

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

El resultado debería ser similar a esta captura de pantalla.

Tenga en cuenta: La captura de pantalla es de PHP 5.6.33, el tutorial se actualiza continuamente para las nuevas versiones de PHP, pero no tomamos nuevas capturas de pantalla cada vez, por lo que la versión de PHP que verá en su servidor podría ser más nueva. La versión actual de este tutorial es para php-5.6.33.

5.4 Habilitar PHP 5.6 en ISPConfig

En ISPConfig 3.1, puede configurar la nueva versión de PHP en Sistema> Versiones adicionales de PHP. En la pestaña Nombre, simplemente ingrese un nombre para la versión de PHP (por ejemplo, PHP 5.6); esta versión de PHP aparecerá con este nombre en la configuración del sitio web en ISPConfig:

Vaya a la pestaña Configuración de FastCGI y complete los campos de la siguiente manera:

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

Luego vaya a la pestaña Configuración de PHP-FPM y complete los campos de la siguiente manera:

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

6 Enlaces

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

Debian
  1. Cómo compilar PHP 5.6 (PHP-FPM y FastCGI) con Zend OPcache y APCu para ISPConfig 3 en Debian 7 (Wheezy)

  2. Cómo instalar PHP 8.0 en Debian 11

  3. Cómo instalar PHP 8.0 en Debian 10 / Debian 9

  4. Cómo instalar PHP 7.4 en Debian 10

  5. Cómo instalar PHP en Debian 11

Cómo compilar e instalar PHP 7.4 como PHP-FPM y FastCGI para ISPConfig 3 en Ubuntu 18.04 LTS

Cómo instalar PHP 5.6 y 7.0 - 8.1 como PHP-FPM y FastCGI para ISPConfig 3 con apt en Debian 8 a 11

Cómo instalar y usar PHP Composer en Debian 11

Cómo instalar Apache con PHP-FPM en Debian 10

Cómo instalar ISPConfig en Debian 11

Cómo instalar Nginx y PHP en Debian 10