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
[...] 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 |
#! /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 |
[...] zend_extension=opcache.so |
[...] 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 |
[...] extension=memcache.so |
[...] extension=memcached.so |
zend_extension = /opt/php-5.5.7/lib/php/extensions/no-debug-non-zts-20121212/ioncube.so [PHP] [...] |
[...] zend_extension=opcache.so |
[...] 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 |
[...] extension=memcache.so |
[...] extension=memcached.so |
zend_extension = /opt/phpfcgi-5.5.7/lib/php/extensions/no-debug-non-zts-20121212/ioncube.so [PHP] [...] |




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