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

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

Cómo usar varias versiones de PHP (PHP-FPM y FastCGI) con 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.3 y PHP 5.4 como una versión PHP-FPM y FastCGI en un servidor Debian Wheezy. Estas versiones de PHP se pueden usar junto con el PHP predeterminado (instalado a través de apt) en ISPConfig.

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

1 nota preliminar

Instalaré PHP 5.3.22 y PHP 5.4.12, las últimas versiones de PHP 5.3 y 5.4 al momento de escribir este artículo. También mostraré cómo crear algunas extensiones de PHP adicionales, como APC, 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.3 y 5.4, 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.3.22 para PHP-FPM y /opt/phpfcgi-5.3.22 para FastCGI).

2 Construyendo PHP 5.3.22 (PHP-FPM)

Descarga y extrae PHP 5.3.22:

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

cd php-5.3.22/

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.3.22#

)

Configure y cree PHP 5.3.22 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.3.22 \
--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-kerber os \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-fpm

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.3.22/php.ini-production /opt/php-5.3.22/lib/php.ini
cp /opt/php-5.3.22/etc/php-fpm.conf.default /opt/php-5.3.22/etc/php-fpm.conf

Abra /opt/php-5.3.22/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 PHP-FPM predeterminado de Debian ya ), y debe agregar la línea include=/opt/php-5.3.22/etc/pool.d/*.conf al final:

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

Cree el directorio del grupo para PHP-FPM:

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

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

vi /etc/init.d/php-5.3.22-fpm
[...]
pid = run/php-fpm.pid
[...]
user = www-data
group = www-data
[...]
listen = 127.0.0.1:8999
[...]
include=/opt/php-5.3.22/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.3.22-fpm
insserv php-5.3.22-fpm

Finalmente inicie PHP-FPM:

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

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

[email protected]:/usr/local/src/php5-build/php-5.3.22# /etc/init.d/php-5.3.22-fpm start
Iniciando php-fpm [04-Mar -2013 14:58:41] ADVERTENCIA:Nada coincide con el patrón de inclusión '/opt/php-5.3.22/etc/pool.d/*.conf' de /opt/php-5.3.22/etc/php-fpm .conf en la línea 512.
hecho
[email protected]:/usr/local/src/php5-build/php-5.3.22#

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

Los módulos APC, 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.3.22/etc
pecl -C ./pear.conf update-channels

APC ahora se puede instalar de la siguiente manera:

pecl -C ./pear.conf install apc

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

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

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

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

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

pecl -C ./pear.conf install memcache   

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

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

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

[...]
extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.user_ttl=600
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.3.22/lib/php.ini...

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

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

[...]
extension=memcache.so

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.3.so /opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
vi /opt/php-5.3.22/ lib/php.ini

Agregue la línea zend_extension =/opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/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.3.22-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.3.22); 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 usar varias versiones de PHP (PHP-FPM y FastCGI) con ISPConfig 3 (Debian Wheezy) - Página 2

3 Construyendo PHP 5.3.22 (FastCGI)

Descarga y extrae PHP 5.3.22:

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

cd php-5.3.22/

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.3.22#

)

Configure y cree PHP 5.3.22 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.3.22 \
--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-ke rberos \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--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.3.22/php.ini-production /opt/phpfcgi-5.3.22/lib/php.ini

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

Los módulos APC, 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.3.22/etc
pecl -C ./pear.conf update-channels

APC ahora se puede instalar de la siguiente manera:

pecl -C ./pear.conf install apc

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

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

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

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

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

pecl -C ./pear.conf install memcache   

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

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

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

[...]
extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.user_ttl=600
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.3.22/lib/php.ini...

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

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

[...]
extension=memcache.so

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.3.so /opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
vi /opt/phpfcgi-5.3.22/ lib/php.ini

Agregue la línea zend_extension =/opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/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.3.22); 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:

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

4 Construyendo PHP 5.4.12 (PHP-FPM)

Descarga y extrae PHP 5.4.12:

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

cd php-5.4.12/

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.4.12#

)

Configure y cree PHP 5.4.12 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.4.12 \
--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-kerber os \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-fpm

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.4.12/php.ini-production /opt/php-5.4.12/lib/php.ini
cp /opt/php-5.4.12/etc/php-fpm.conf.default /opt/php-5.4.12/etc/php-fpm.conf

Abra /opt/php-5.4.12/etc/php-fpm.conf y ajuste la siguiente configuración:en 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 ya ), y debe agregar la línea include=/opt/php-5.4.12/etc/pool.d/*.conf al final:

vi /opt/php-5.4.12/etc/php-fpm.conf
zend_extension = /opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
[PHP]
[...]

Cree el directorio del grupo para PHP-FPM:

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

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

vi /etc/init.d/php-5.4.12-fpm
[...]
pid = run/php-fpm.pid
[...]
user = www-data
group = www-data
[...]
listen = 127.0.0.1:8998
[...]
include=/opt/php-5.4.12/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.4.12-fpm
insserv php-5.4.12-fpm

Finalmente inicie PHP-FPM:

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

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

[email protected]:/usr/local/src/php5-build/php-5.4.12# /etc/init.d/php-5.4.12-fpm start
Iniciando php-fpm [04-Mar -2013 16:03:35] ADVERTENCIA:Nada coincide con el patrón de inclusión '/opt/php-5.4.12/etc/pool.d/*.conf' de /opt/php-5.4.12/etc/php-fpm .conf en la línea 512.
hecho
[email protected]:/usr/local/src/php5-build/php-5.4.12#

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

Los módulos APC, 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.4.12/etc
pecl -C ./pear.conf update-channels

APC ahora se puede instalar de la siguiente manera:

pecl -C ./pear.conf install apc

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

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

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

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

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

pecl -C ./pear.conf install memcache   

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

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

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

[...]
extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.user_ttl=600
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.4.12/lib/php.ini...

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

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

[...]
extension=memcache.so

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.4.so /opt/php-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so
vi /opt/php-5.4.12/ lib/php.ini

Agregue la línea zend_extension =/opt/php-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/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.4.12-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.4.12); 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 usar varias versiones de PHP (PHP-FPM y FastCGI) con ISPConfig 3 (Debian Wheezy) - Página 4

5 Construyendo PHP 5.4.12 (FastCGI)

Descarga y extrae PHP 5.4.12:

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

cd php-5.4.12/

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.4.12#

)

Configure y cree PHP 5.4.12 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.4.12 \
--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-ke rberos \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-cgi

The last switch (--enable-cgi) makes sure this PHP version will work with FastCGI.

make
make install

Copy php.ini to the correct location:

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

That's it - if you like, you can now install some additional modules like APC, memcache, memcached, and ioncube.

The APC, memcache, and memcached modules can be installed through PEAR which we must install and initialize first:

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

APC can now be installed as follows:

pecl -C ./pear.conf install apc

Accept all default values. Afterwards, open /opt/phpfcgi-5.4.12/lib/php.ini...

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

... and add the line extension=apc.so at the end of the file (you can also configure some additional APC settings):

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

The memcache extension can be installed as follows:

pecl -C ./pear.conf install memcache 

Open /opt/phpfcgi-5.4.12/lib/php.ini...

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

... and add the line extension=memcache.so at the end of the file:

[...]
extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.user_ttl=600
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

The memcached extension can be installed as follows:

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

Open /opt/phpfcgi-5.4.12/lib/php.ini...

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

... and add the line extension=memcached.so at the end of the file:

[...]
extension=memcache.so

The ionCube Loader can be installed as follows:

cd /tmp

Next download and unpack the correct ionCube Loader package for your architecture (x86_64 or x86).

For 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

For x86:

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

Proceed as follows:

cp ioncube/ioncube_loader_lin_5.4.so /opt/phpfcgi-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so
vi /opt/phpfcgi-5.4.12/lib/php.ini

Add the line zend_extension =/opt/phpfcgi-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so right at the beginning of the file (before the [PHP] line):

[...]
extension=memcached.so

In ISPConfig 3.0.5, you can configure the new PHP version under System> Additional PHP Versions. On the Name tab, you just fill in a name for the PHP version (e.g. PHP 5.4.12) - this PHP version will be listed under this name in the website settings in ISPConfig:

Go to the FastCGI Settings tab (the PHP-FPM Settings tab can be left empty) and fill out the fields as follows:

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

About The Author

Falko Timme is the owner of Timme Hosting (ultra-fast nginx web hosting). He is the lead maintainer of HowtoForge (since 2005) and one of the core developers of ISPConfig (since 2000). He has also contributed to the O'Reilly book "Linux System Administration".


Panels
  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 7 (PHP-FPM y FastCGI) para ISPConfig 3 en Debian 8 (Jessie)

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

  4. Anuncios forzados en ISPConfig con Debian Etch

  5. ¿Cómo ejecutar varias versiones de PHP con Nginx en Ubuntu?

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 compilar PHP 5.5 (PHP-FPM y FastCGI) con ionCube Loader, Zend OPcache y APCu para ISPConfig 3 (Debian Wheezy)

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

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