Búsqueda de sitios web

Cómo instalar PHP 7 con Apache y MariaDB en CentOS 7/Debian 8


La semana pasada (más precisamente el 21 de agosto de 2015), el equipo de desarrollo de PHP anunció la disponibilidad de la última versión de PHP 7 y alentó a los usuarios y desarrolladores de todo el mundo a probar él.

Sin embargo, debemos tener en cuenta que, dado que se trata de una versión RC (Release Candidate), se espera que pueda tener errores o incompatibilidades con configuraciones existentes, por lo que se solicita a los usuarios que reportarlos usando el sistema de seguimiento de errores y no usar PHP 7 en producción mientras permanezca en esa fase.

El lado positivo es que esta versión incluye varias correcciones (es posible que desee consultar esta página en el repositorio GitHub del proyecto para obtener una lista detallada de las nuevas características y mejoras), siendo la característica más distintiva una Aumento notable del rendimiento en comparación con versiones anteriores.

Este artículo lo guiará a través del proceso de instalación y compilación de PHP 7 RC1 desde el tarball fuente junto con Apache y MariaDB en CentOS 7. y Debian 8 Jessie. Las mismas instrucciones también funcionan en distribuciones basadas en CentOS como RHEL, Fedora, Scientific Linux y Debian< Basado en como Ubuntu/Mint.

Instalando PHP 7 en CentOS 7 y Debian 8

Como se indicó en la introducción, dado que esta versión es un RC en lugar de una versión estable, no podemos esperar encontrarla en los repositorios. Por ese motivo, tendremos que descargar el código fuente y compilar el programa desde cero.

Sin embargo, antes de hacer eso, debemos recordar que para aprovechar mejor PHP 7 y quizás la mejor manera de probarlo es instalarlo junto con Apache. y MariaDB – que PODEMOS encontrar en los repositorios:

En CentOS 7


yum update && yum install httpd mariadb mariadb-server

En Debian 8


aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

En cualquier caso, el tarball con el código fuente de PHP se puede descargar y extraer de la siguiente manera:


wget https://downloads.php.net/~ab/php-7.0.0RC1.tar.gz
tar xzf php-7.0.0RC1.tar.gz -C /opt

Una vez hecho esto, vayamos a /opt/php-7.0.0RC1 y ejecutemos el script buildconf con el interruptor –force para forzar la compilación de una versión RC:


ls


cd /opt/php-7.0.0RC1.tar.gz
./buildconf --force

Ahora es el momento de ejecutar nuestro conocido comando configure. Si bien las siguientes opciones garantizarán una instalación estándar de PHP 7, puede consultar la lista completa de opciones en el manual de PHP para personalizar mejor la instalación según sus necesidades:


./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config \
--with-apxs2

Si se encuentra con el siguiente error:


configure: error: no acceptable C compiler found in $PATH
see 'config.log' for more details

Simplemente instale gcc y las dependencias con el siguiente comando y ejecute el comando configure anterior nuevamente.


yum install gcc       [On CentOS 7 box]
aptitude install gcc  [On Debian 8 box]

Estarás en camino a compilar PHP 7, lo que puede llevar un tiempo. Si faltan otras bibliotecas o recursos, este proceso fallará, pero siempre puede instalarlos y ejecutar la configuración nuevamente.

Por ejemplo, tuve que instalar libxml2-devel después de recibir el siguiente mensaje de error:


configure: error: xml2-config not found. Please check your libxml2 installation.

Desafortunadamente, no podemos cubrir todos los escenarios, ya que el software instalado puede variar de un sistema a otro. Durante la instalación, es posible que desee consultar esta página que describe varios errores que puede encontrar al instalar PHP desde el código fuente, junto con sus respectivas soluciones.

En CentOS 7

Aquí hay una lista completa de los paquetes que tuve que instalar en mi caja CentOS 7 antes de poder completar el proceso de configuración:


gcc
libxml2-devel
pkgconfig
openssl-devel
bzip2-devel
curl-devel
libpng-devel
libpng-devel
libjpeg-devel
libXpm-devel
freetype-devel
gmp-devel
libmcrypt-devel
mariadb-devel
aspell-devel
recode-devel
httpd-devel

Puede instalar todos los paquetes requeridos anteriormente con un solo comando yum como se muestra.


yum install gcc libxml2-devel pkgconfig openssl-devel bzip2-devel libpng-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel httpd-devel

El siguiente mensaje indica que la configuración finalizó exitosamente:

Entonces corre,


make
make install

Cuando se complete la instalación, puede verificar la versión usando la línea de comando:

En Debian 8

En Debian, tuve que instalar los siguientes paquetes para que el proceso de configuración se completara exitosamente:


make
libxml2-dev
libcurl4-openssl-dev
libjpeg-dev
libpng-dev
libxpm-dev
libmysqlclient-dev
libicu-dev
libfreetype6-dev
libxslt-dev
libssl-dev
libbz2-dev
libgmp-dev
libmcrypt-dev
libpspell-dev 
librecode-dev
apache2-dev

Puede instalar todos los paquetes requeridos anteriormente con el comando apt-get en Debian 8.


apt-get install make libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libicu-dev libfreetype6-dev libxslt-dev libssl-dev libbz2-dev libgmp-dev libmcrypt-dev libpspell-dev librecode-dev apache2-dev

Luego agregue –with-libdir=/lib/x86_64-linux-gnu a las opciones de configuración y cree el siguiente enlace simbólico al archivo de encabezado gmp.h:


ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

Luego ejecutó make y make install como en el caso anterior. En 10-15 minutos la compilación debería haberse completado y podemos verificar la versión de PHP instalada como antes:


make
make install

Configurando php.ini y probando la instalación de PHP 7

Cuando instala PHP desde el código fuente, se proporcionan dos ejemplos de php.ini. En este caso, se encuentran dentro de /opt/php-7.0.0RC1:


ls -l /opt/php-7.0.0RC1 | grep php.ini

Ahora necesita copiar uno de ellos a /usr/local/lib, que está designado como la ubicación predeterminada para dicho archivo según las notas de instalación:


cp /opt/php-7.0.0RC1/php.ini-development /usr/local/lib

Y no olvide agregar esta directiva de configuración a los archivos de configuración principales de Apache.


/etc/httpd/conf/httpd.conf    [On CentOS 7 box]
/etc/apache2/apache2.conf in  [On Debian 8 box] 

LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

En Debian 8 puede omitir la línea LoadModule y también necesita eliminar y crear los siguientes enlaces simbólicos a los módulos de Apache indicados:


cd /etc/apache2
rm mods-enabled/mpm_event.conf
rm mods-enabled/mpm_event.load
ln -s mods-available/mpm_prefork.conf mpm_prefork.conf
ln -s mods-available/mpm_prefork.load mpm_prefork.load

Luego, reinicie el servidor web:


systemctl restart httpd     [On CentOS 7 box]
systemctl restart apache2   [On Debian 8 box]

Si al iniciar Apache en CentOS 7 aparece un mensaje de error que dice que no puede encontrar el módulo libphp7.so, simplemente cópielo a la ruta indicada. de /opt/php-7.0.0RC1/.libs/libphp7.so.

La forma clásica de probar una instalación PHP/Apache es utilizando un archivo phpinfo(). Cree un archivo llamado test.php con el siguiente contenido en la raíz de documentos del servidor web (/var/www/html en ambas distribuciones):


<?php
phpinfo();
?>

E inicie un navegador en un cliente dentro de su red para probar:


http://localhost/test.php
OR
http://IP-address/test.php

Resumen

En este artículo hemos explicado cómo instalar PHP 7 desde el código fuente, el RC más nuevo de este popular lenguaje de programación del lado del servidor que tiene como objetivo mejorar el rendimiento a valores sin precedentes. Hasta que llegue al establo en noviembre de este año 2015, se le recomienda ENCARECIDAMENTE que NO utilice esta versión en un entorno de producción.

Si tiene alguna pregunta/comentario/sugerencia sobre este artículo, no dude en hacérnoslo saber mediante el siguiente formulario.