Este tutorial muestra cómo compilar PHP 5.6 como una versión PHP-FPM y FastCGI en Ubuntu 16.04 (Xenial Xerus). Ubuntu 16.04 viene con PHP 7 de forma predeterminada, pero todavía hay muchos sitios web que no son compatibles con PHP 7. Este tutorial le mostrará cómo instalar PHP 5.6 como una versión adicional de PHP en Ubuntu 16.04 para que pueda cambiar entre ambas versiones para cada sitio web individualmente en ISPConfig.
1 nota preliminar
Instalaré PHP 5.6 en /opt para que el PHP 7 principal de Ubuntu no se vea afectado y PHP 7 seguirá siendo el PHP predeterminado de nuestro servidor, mientras que PHP 5.6 está disponible como opción en ISPConfig (configuración del sitio web). Tenga en cuenta que PHP-FPM se puede usar en servidores Apache y Nginx mientras que FastCGI solo está disponible para servidores Apache en ISPConfig.
Con las versiones anteriores de PHP, PHP-FPM y FastCGI se excluyeron mutuamente, por lo que se tuvo que construir un binario FPM y FastCGI por separado. Con PHP 5.6, se puede compilar un único binario compatible con los modos FPM y FCGI.
2 Compile PHP 5.6 con PHP-FPM y Fastcgi
Instale los requisitos previos para compilar PHP 5.6, wget y el editor nano que usaré para editar los archivos de configuración:
apt-get install build-essential wget nano
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-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
(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-5.6.30#
)
Descargue y extraiga PHP 5.6 de php.net:
mkdir /opt/php-5.6.30
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de.php.net/get/php-5.6.30.tar.bz2/from/this/mirror -O php-5.6.30.tar.bz2
tar jxf php-5.6.30.tar.bz2
cd php-5.6.30/
Configure y cree PHP 5.6.30 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.30 --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-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-gettext --with-xmlrpc --with-xsl --with-kerberos --enable-fpm
La cadena anterior es solo un comando largo, no agregue ningún salto de línea. 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-build/php-5.6.30/php.ini-production /opt/php-5.6.30/lib/php.ini
cp /opt/php-5.6.30/etc/php-fpm.conf.default /opt/php-5.6.30/etc/php-fpm.conf
Cree el directorio de archivos del grupo php-fpm.d.
mkdir /opt/php-5.6.30/etc/php-fpm.d
Abra /opt/php-5.6.30/etc/php-fpm.conf y ajuste la siguiente configuración (elimine el; delante de la línea pid):
nano /opt/php-5.6.30/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.6.30/etc/php-fpm.d/*.conf
2.1 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-5.6.30/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-5.6.30/lib/php.ini
y agregue la siguiente línea al final del archivo:
zend_extension=/opt/php-5.6.30/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
3 Crea el archivo de unidad systemd
Ubuntu 16.04 usa systemd como sistema de inicio. Crearé un archivo de unidad systemd para poder iniciar/detener y reiniciar el servicio PHP-FPM.
nano /lib/systemd/system/php-5.6.30-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.30/var/run/php-fpm.pid
ExecStart=/opt/php-5.6.30/sbin/php-fpm --nodaemonize --fpm-config /opt/php-5.6.30/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.30-fpm.service
systemctl daemon-reload
Finalmente inicie PHP-FPM.
systemctl start php-5.6.30-fpm.service
Para habilitar Zend OPcache, abra /opt/php-5.6.30/lib/php.ini...
nano /opt/php-5.6.30/lib/php.ini
... y agregue la siguiente línea al final:
[...] zend_extension=opcache.so
Pruebe la versión de PHP:
cd /opt/php-5.6.30/bin
./php --version
El resultado debería ser similar a esta captura de pantalla.
4 Habilite 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.30); 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.30/bin/php-cgi
Path to the php.ini directory: /opt/php-5.6.30/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.30-fpm
Path to the php.ini directory: /opt/php-5.6.30/lib
Path to the PHP-FPM pool directory: /opt/php-5.6.30/etc/php-fpm.d
5 Enlaces
- PHP:http://www.php.net/
- ISPConfig:http://www.ispconfig.org/
- Ubuntu:http://www.ubuntu.com/