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
[...]
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 |
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
#! /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 |
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):
[...]
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 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=memcache.so |
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=memcached.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]):
zend_extension = /opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
[PHP]
[...] |
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):
[...]
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 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=memcache.so |
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=memcached.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]):
zend_extension = /opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
[PHP]
[...] |
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
[...]
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 |
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
#! /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 |
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):
[...]
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 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=memcache.so |
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=memcached.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]):
zend_extension = /opt/php-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so
[PHP]
[...] |
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):
[...]
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 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=memcache.so |
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=memcached.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):
zend_extension = /opt/phpfcgi-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so
[PHP]
[...] |
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:
6 Links
- 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".