GNU/Linux >> Tutoriales Linux >  >> Panels >> Panels

Cómo compilar PHP 5.5 (PHP-FPM y FastCGI) con ionCube Loader, Zend OPcache y APCu para ISPConfig 3 (Debian Wheezy)

Cómo compilar PHP 5.5 (PHP -FPM y FastCGI) con ionCube Loader, Zend OPcache y APCu para ISPConfig 3 (Debian Wheezy)

Desde ISPConfig 3.0.5, es posible utilizar varias versiones de PHP en un servidor y seleccionar la versión de PHP óptima para un sitio web. Esta función funciona con PHP-FPM (a partir de PHP 5.3) y FastCGI (todas las versiones de PHP 5.x). Este tutorial muestra cómo compilar PHP 5.5 como una versión PHP-FPM y FastCGI en un servidor Debian Wheezy. Estas versiones de PHP 5.5 incluyen ionCube Loader, Zend OPcache y APCu.

¡No emito ninguna garantía de que esto funcione para usted!

1 nota preliminar

Instalaré PHP 5.5.7, la última versión de PHP 5.5 en el momento de escribir este artículo. También mostraré cómo crear algunas extensiones de PHP adicionales como APCu, memcache, memcached e ioncube.

Tenga en cuenta que PHP-FPM se puede usar en servidores Apache y nginx, mientras que FastCGI solo está disponible para servidores Apache.

PHP-FPM y FastCGI son mutuamente excluyentes en PHP 5.5, es por eso que muestro dos formas de compilar PHP, una para PHP-FPM, otra para FastCGI, sin embargo, puede compilar PHP dos veces para obtener ambos, una vez con --enable-fpm y una vez con --enable-cgi (asegúrese de usar diferentes directorios base, como /opt/php-5.5.7 para PHP-FPM y /opt/phpfcgi-5.5.7 para FastCGI).

2 Construyendo PHP 5.5.7 (PHP-FPM)

Descarga y extrae PHP 5.5.7:

mkdir /opt/php-5.5.7
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de. php.net/get/php-5.5.7.tar.bz2/from/this/mirror -O php-5.5.7.tar.bz2
tar jxf php-5.5.7.tar.bz2

cd php-5.5.7/

Instale los requisitos previos para compilar PHP5:

apt-get install build-essential 
apt-get build-dep php5
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

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

comprobando crypt en -lcrypt... sí
configure:error:No se puede encontrar la biblioteca imap (libc-client.a). Verifique la instalación de su cliente c.
[email protected]:/usr/local/src/php5-build/php-5.5.7#

)

Configure y cree PHP 5.5.7 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.5.7 \
--with-pdo-pgsql \
--with-zlib-dir \
- -with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable- calendario \
--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 \
-- habilitar-exif \
--habilitar-bcmath \
--con-mhash \
--habilitar-zip \
--con-pcre-regex \
--with-mysql \
--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-kerbero s \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-opcache \
--enable- pies por minuto

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

hacer
hacer instalar

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

cp /usr/local/src/php5-build/php-5.5.7/php.ini-production /opt/php-5.5.7/lib/php.ini
cp /opt/php-5.5.7/etc/php-fpm.conf.default /opt/php-5.5.7/etc/php-fpm.conf

Abra /opt/php-5.5.7/etc/php-fpm.conf y ajuste la siguiente configuración:en la línea de escucha, debe usar un puerto no utilizado (por ejemplo, 8999; el puerto 9000 podría estar en uso por el PHP-FPM predeterminado de Debian ya ), y debe agregar la línea include=/opt/php-5.5.7/etc/pool.d/*.conf al final:

vi /opt/php-5.5.7/etc/php-fpm.conf

Cree el directorio del grupo para PHP-FPM:

mkdir /opt/php-5.5.7/etc/pool.d

A continuación, cree un script de inicio para PHP-FPM:

vi /etc/init.d/php-5.5.7-fpm
[...]
pid = run/php-fpm.pid
[...]
user = www-data
group = www-data
[...]
listen = 127.0.0.1:8999
[...]
include=/opt/php-5.5.7/etc/pool.d/*.conf

Haga que el script de inicio sea ejecutable y cree los enlaces de inicio del sistema:

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

Finalmente inicie PHP-FPM:

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

Siempre que no haya grupos en /opt/php-5.5.7/etc/pool.d, recibirá esta advertencia que puede ignorar:

[email protected]:/usr/local/src/php5-build/php-5.5.7# /etc/init.d/php-5.5.7-fpm start
Iniciando php-fpm [07-Jan -2014 18:04:16] ADVERTENCIA:Nada coincide con el patrón de inclusión '/opt/php-5.5.7/etc/pool.d/*.conf' de /opt/php-5.5.7/etc/php-fpm .conf en la línea 520.
hecho
[email protected]:/usr/local/src/php5-build/php-5.5.7#

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

vi /opt/php-5.5.7/lib/php.ini

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

#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-5.5.7-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-5.5.7-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-5.5.7/sbin/php-fpm
php_fpm_CONF=/opt/php-5.5.7/etc/php-fpm.conf
php_fpm_PID=/opt/php-5.5.7/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

Eso es todo:si lo desea, ahora puede instalar algunos módulos adicionales como APCu, Memcache, Memcached e ioncube.

Los módulos APCu, memcache y memcached se pueden instalar a través de PEAR, que primero debemos instalar e inicializar:

apt-get -y install php-pear
cd /opt/php-5.5.7/etc
pecl -C ./pear.conf update-channels

APCu ahora se puede instalar de la siguiente manera:

pecl -C ./pear.conf install channel://pecl.php.net/apcu-4.0.2

Acepte todos los valores predeterminados. Luego, abra /opt/php-5.5.7/lib/php.ini...

vi /opt/php-5.5.7/lib/php.ini

... y agregue la línea extension=apcu.so al final del archivo (también puede configurar algunos ajustes de APCu adicionales):

[...]
zend_extension=opcache.so

La extensión Memcache se puede instalar de la siguiente manera:

pecl -C ./pear.conf install memcache

Abra /opt/php-5.5.7/lib/php.ini...

vi /opt/php-5.5.7/lib/php.ini

... y agregue la línea extension=memcache.so al final del archivo:

[...]
extension=apcu.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.gc_ttl=600
apc.enable_cli=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
;apc.mmap_file_mask=/dev/zero
;apc.shm_segments = 5

La extensión de Memcached se puede instalar de la siguiente manera:

apt-get install libmemcached-dev
pecl -C ./pear.conf install memcached

Abra /opt/php-5.5.7/lib/php.ini...

vi /opt/php-5.5.7/lib/php.ini

... y agregue la línea extension=memcached.so al final del archivo:

[...]
extension=memcache.so

Desde el 3 de enero, el cargador ionCube está disponible para PHP 5.5. El cargador ionCube se puede instalar de la siguiente manera:

cd /tmp

A continuación, descargue y descomprima el paquete ionCube Loader correcto para su arquitectura (x86_64 o x86).

Para x86_64:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfvz ioncube_loaders_lin_x86-64.tar.gz

Para x86:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz

Proceda de la siguiente manera:

cp ioncube/ioncube_loader_lin_5.5.so /opt/php-5.5.7/lib/php/extensions/no-debug-non-zts-20121212/ioncube.so
vi /opt/php-5.5.7/ lib/php.ini

Agregue la línea zend_extension =/opt/php-5.5.7/lib/php/extensions/no-debug-non-zts-20121212/ioncube.so justo al principio del archivo (antes de la línea [PHP]):

[...]
extension=memcached.so

Vuelva a cargar PHP-FPM después:

/etc/init.d/php-5.5.7-fpm reload

En ISPConfig 3.0.5, 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.5.7); 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 PHP-FPM (la pestaña Configuración de FastCGI se puede dejar vacía) y complete los campos de la siguiente manera:

Cómo compilar PHP 5.5 (PHP-FPM y FastCGI) con ionCube Loader, Zend OPcache y APCu para ISPConfig 3 (Debian Wheezy) - Página 2

3 Construyendo PHP 5.5.7 (FastCGI)

Descarga y extrae PHP 5.5.7:

mkdir /opt/phpfcgi-5.5.7
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de. php.net/get/php-5.5.7.tar.bz2/from/this/mirror -O php-5.5.7.tar.bz2
tar jxf php-5.5.7.tar.bz2

cd php-5.5.7/

Instale los requisitos previos para compilar PHP5:

apt-get install build-essential 
apt-get build-dep php5
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

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

comprobando crypt en -lcrypt... sí
configure:error:No se puede encontrar la biblioteca imap (libc-client.a). Verifique la instalación de su cliente c.
[email protected]:/usr/local/src/php5-build/php-5.5.7#

)

Configure y cree PHP 5.5.7 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/phpfcgi-5.5.7 \
--with-pdo-pgsql \
--with-zlib-dir \
- -with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable- calendario \
--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 \
-- habilitar-exif \
--habilitar-bcmath \
--con-mhash \
--habilitar-zip \
--con-pcre-regex \
--with-mysql \
--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-ker beros \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-opcache \
--enable- cgi

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

hacer
hacer instalar

Copie php.ini en la ubicación correcta:

cp /usr/local/src/php5-build/php-5.5.7/php.ini-production /opt/phpfcgi-5.5.7/lib/php.ini

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

vi /opt/phpfcgi-5.5.7/lib/php.ini

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

zend_extension = /opt/php-5.5.7/lib/php/extensions/no-debug-non-zts-20121212/ioncube.so
[PHP]
[...]

Eso es todo:si lo desea, ahora puede instalar algunos módulos adicionales como APCu, Memcache, Memcached e ioncube.

Los módulos APCu, memcache y memcached se pueden instalar a través de PEAR, que primero debemos instalar e inicializar:

apt-get -y install php-pear
cd /opt/phpfcgi-5.5.7/etc
pecl -C ./pear.conf update-channels

APCu ahora se puede instalar de la siguiente manera:

pecl -C ./pear.conf install channel://pecl.php.net/apcu-4.0.2

Acepte todos los valores predeterminados. Luego, abra /opt/phpfcgi-5.5.7/lib/php.ini...

vi /opt/phpfcgi-5.5.7/lib/php.ini

... y agregue la línea extension=apcu.so al final del archivo (también puede configurar algunos ajustes de APCu adicionales):

[...]
zend_extension=opcache.so

La extensión Memcache se puede instalar de la siguiente manera:

pecl -C ./pear.conf install memcache 

Abra /opt/phpfcgi-5.5.7/lib/php.ini...

vi /opt/phpfcgi-5.5.7/lib/php.ini

... y agregue la línea extension=memcache.so al final del archivo:

[...]
extension=apcu.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.gc_ttl=600
apc.enable_cli=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
;apc.mmap_file_mask=/dev/zero
;apc.shm_segments = 5

La extensión de Memcached se puede instalar de la siguiente manera:

apt-get install libmemcached-dev
pecl -C ./pear.conf install memcached

Abra /opt/phpfcgi-5.5.7/lib/php.ini...

vi /opt/phpfcgi-5.5.7/lib/php.ini

... y agregue la línea extension=memcached.so al final del archivo:

[...]
extension=memcache.so

Desde el 3 de enero, el cargador ionCube está disponible para PHP 5.5. El cargador ionCube se puede instalar de la siguiente manera:

cd /tmp

A continuación, descargue y descomprima el paquete ionCube Loader correcto para su arquitectura (x86_64 o x86).

Para x86_64:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfvz ioncube_loaders_lin_x86-64.tar.gz

Para x86:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz

Proceda de la siguiente manera:

cp ioncube/ioncube_loader_lin_5.5.so /opt/phpfcgi-5.5.7/lib/php/extensions/no-debug-non-zts-20121212/ioncube.so
vi /opt/phpfcgi-5.5.7/ lib/php.ini

Agregue la línea zend_extension =/opt/phpfcgi-5.5.7/lib/php/extensions/no-debug-non-zts-20121212/ioncube.so justo al principio del archivo (antes de la línea [PHP]):

[...]
extension=memcached.so

En ISPConfig 3.0.5, 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.5.7); 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 (la pestaña Configuración de PHP-FPM se puede dejar vacía) y complete los campos de la siguiente manera:

4 Enlaces

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

Sobre el autor

Falko Timme es el propietario de Timme Hosting (alojamiento web nginx ultrarrápido). Es el mantenedor principal de HowtoForge (desde 2005) y uno de los principales desarrolladores de ISPConfig (desde 2000). También ha contribuido al libro de O'Reilly "Administración del sistema Linux".


Panels
  1. Cómo instalar el cargador Ioncube en CentOS, Debian y Ubuntu

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

  3. Cómo instalar PHP 7 (PHP-FPM y FastCGI) para ISPConfig 3 en Debian 8 (Jessie)

  4. Cómo instalar ionCube Loader en Debian 9

  5. Cómo instalar ionCube Loader en Debian

Cómo usar varias versiones de PHP (PHP-FPM y FastCGI) con ISPConfig 3 (Ubuntu 13.04)

Cómo usar varias versiones de PHP (PHP-FPM y FastCGI) con ISPConfig 3 (Ubuntu 12.10)

Cómo usar varias versiones de PHP (PHP-FPM y FastCGI) con ISPConfig 3 (CentOS 6.3)

Cómo usar varias versiones de PHP (PHP-FPM y FastCGI) con ISPConfig 3 (Ubuntu 12.04 LTS)

Cómo usar varias versiones de PHP (PHP-FPM y FastCGI) con ISPConfig 3 (Debian Wheezy)

Cómo usar PHP 4.4.9 (FastCGI) con Apache e ISPConfig 3 (Debian Wheezy)

    zend_extension = /opt/phpfcgi-5.5.7/lib/php/extensions/no-debug-non-zts-20121212/ioncube.so
    [PHP]
    [...]