Introducción
Es posible que el repositorio de paquetes estable actual de Debian no siempre contenga un software actualizado para estar en línea con
nuestras expectativas. Hay una muy buena razón para esto, como un sistema estable como compensación por ejecutar un software de última generación.
¡El lenguaje de secuencias de comandos del lado del servidor PHP no es una excepción! En
al momento de escribir esto, la versión actual de PHP de Debian es 5.6.29
mientras que la última versión del código fuente de PHP es 7.1.0
(dado que no hay PHP 6 en absoluto).
Las afirmaciones del desarrollador de PHP actual colocan a PHP 7 por delante de PHP 5.6 en términos de velocidad, donde se supone que PHP 7 es el doble de rápido que su predecesor:
Gracias al nuevo Zend Engine 3.0, sus aplicaciones tienen un rendimiento hasta 2 veces más rápido y un 50 % más de consumo de memoria que PHP 5.6, lo que le permite servir a más usuarios simultáneos sin agregar ningún
hardware. Diseñado y refactorizado para las cargas de trabajo actuales, PHP 7 es la mejor opción para los desarrolladores web de hoy.
Referencia:zend.com/en/resources/php-7
Objetivo
Comparar una velocidad entre PHP 5.6 y el último PHP 7.1.0 no es un objetivo de este artículo. Sin embargo, el objetivo es obtener la última versión de PHP 7 instalada en el sistema Debian 8. Además
instalaremos PHP-FPM (FastCGI Process Manager). Esta guía ofrecerá dos posibles instalaciones.
Primero, la guía usará compile-php-debian
script disponible en github.com/linuxconfig/compile-php-debian
para automatizar la instalación de PHP 7 y luego mostrará cómo instalar PHP 7 manualmente.
Requisitos
- Acceso privilegiado a su sistema Debian Linux como root o a través de
sudo
se requiere comando
Dificultad
MEDIO
Convenios
- # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de
sudo
comando - $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios
Instrucciones
Eliminar paquetes de PHP5
Si ya tiene PHP5 instalado en su sistema, debe eliminarlos antes de instalar el nuevo PHP 7. Para hacerlo para enumerar todos los php
paquete relacionado en su sistema:
# dpkg -l | grep -E "^ii.*php" | cut -d " " -f3 libapache2-mod-php5 php5 php5-cli php5-common php5-json php5-readline
El siguiente comando de Linux eliminará todos los paquetes enumerados por el resultado del comando anterior:
# REMOVE=$(dpkg -l | grep -E "^ii.*php" | cut -d " " -f3) # dpkg -P $REMOVE
Instalación automática con script
La siguiente instalación automática con script realiza todos los pasos necesarios para compilar e instalar la versión de PHP 7 seleccionada por el usuario y también instalará el demonio PHP-FPM. Comience clonando compile-php-debian
guión:
$ git clone https://github.com/linuxconfig/compile-php-debian.git
A continuación, vaya a compile-php-debian
directorio:
$ cd compile-php-debian
Ahora simplemente decida qué versión de PHP 7 desea instalar e ingrese el número de versión seleccionado como argumento para install_php.sh
texto. Por ejemplo, para instalar PHP versión 7.0.8 ingrese:
# ./install_php.sh 7.0.8 FOR PHP VERSION 7.1.0 RUN # ./install_php.sh 7.1.0
La instalación puede tardar algún tiempo. Una vez que haya terminado, inicie PHP-FPM Daemon ejecutando service
comando:
# service php7-fpm start # service php7-fpm status [ ok ] php-7.1.0-fpm is running.
El demonio PHP-FPM ahora está escuchando en un localhost
número de puerto 9000
. También puede intentar conectarse al demonio PHP-FPM directamente usando cgi-fcgi
comando encontrado dentro de libfcgi0ldbl
paquete:
# cgi-fcgi -bind -connect 127.0.0.1:9000 X-Powered-By: PHP/7.1.0 Content-type: text/html; charset=UTF-8
Esto completa su instalación de PHP 7 en su sistema Debain 8 Linux.
Instalación manual
Instalación de requisitos previos
Comencemos por la instalación de todos los requisitos previos para adaptarse a las opciones de compilación de PHP más comunes:
# apt-get install autoconf bison build-essential git-core libbz2-dev libcurl4-openssl-dev libfreetype6-dev libicu-dev libjpeg-dev libmcrypt-dev libpng-dev libpspell-dev libreadline-dev libssl-dev libxml2-dev pkg-config
Descarga del código fuente PHP
Probablemente la forma más fácil de obtener el código fuente de PHP para clonar el repositorio de PHP en GitHub. Ejecute el siguiente comando de Linux para clonar el directorio fuente de PHP:
$ git clone https://github.com/php/php-src.git
Una vez que el git clone
la operación ha terminado, quedará con un nuevo nombre de directorio php-src
.
Otra alternativa es obtener un tarball de una versión específica de PHP que
deseas instalar descargándolo directamente desde http://php.net/downloads.php
. La ventaja en este caso es un requisito mínimo de tamaño de descarga. Sin embargo, no podrá elegir
versiones diferentes selectivamente para múltiples implementaciones.
Compilación de código fuente PHP
En esta etapa estamos listos para realizar una compilación del código fuente de PHP. Navegue a un php-src
previamente descargado directorio:
$ cd php-src
A continuación, decida qué versión de PHP desea compilar e instalar. Ejecute el siguiente git
Comando para enumerar todas las versiones de PHP 7 disponibles:
$ git branch -a | grep PHP-7 remotes/origin/PHP-7.0 remotes/origin/PHP-7.0.0 remotes/origin/PHP-7.0.1 remotes/origin/PHP-7.0.10 remotes/origin/PHP-7.0.11 remotes/origin/PHP-7.0.12 remotes/origin/PHP-7.0.13 remotes/origin/PHP-7.0.14 remotes/origin/PHP-7.0.2 remotes/origin/PHP-7.0.3 remotes/origin/PHP-7.0.4 remotes/origin/PHP-7.0.5 remotes/origin/PHP-7.0.6 remotes/origin/PHP-7.0.7 remotes/origin/PHP-7.0.8 remotes/origin/PHP-7.0.9 remotes/origin/PHP-7.1 remotes/origin/PHP-7.1.0 remotes/origin/PHP-7.1.0RC1 remotes/origin/PHP-7.1.0RC2 remotes/origin/PHP-7.1.0RC3 remotes/origin/PHP-7.1.0beta1 remotes/origin/PHP-7.1.0beta2 remotes/origin/PHP-7.1.0beta3
Usa git checkout
Comando para cambiar a la rama de la versión de PHP deseada que desea utilizar para la compilación. Ejemplo:
$ git checkout PHP-7.1.0 Branch PHP-7.1.0 set up to track remote branch PHP-7.1.0 from origin. Switched to a new branch 'PHP-7.1.0'
A continuación, cree un directorio para utilizarlo como destino de instalación. En nuestro caso será /usr/local/php-7.1.0
:
# mkdir /usr/local/php-7.1.0
y especifique todas las cadenas de compilación. Tome nota especial del --prefix
y --with-config-file-scan-dir
cadenas de configuración que definen los ajustes de instalación y configuración
. La siguiente es una lista de las opciones de compilación de PHP más comunes.
Siéntase libre de actualizar la lista para satisfacer sus necesidades. Dependiendo de su selección, es posible que deba instalar requisitos previos
adicionales. Copie y pegue el siguiente texto en su terminal seguido de ENTER:
CONFIGURE_STRINGS="--enable-bcmath \ --enable-calendar \ --enable-dba \ --enable-exif \ --enable-filter \ --enable-fpm \ --enable-ftp \ --enable-gd-native-ttf \ --enable-intl \ --enable-mbstring \ --enable-mysqlnd \ --enable-pcntl \ --enable-shmop \ --enable-simplexml \ --enable-soap \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --enable-xmlreader \ --enable-xmlwriter \ --enable-zip \ --prefix=/usr/local/php-7.1.0 \ --with-bz2 \ --with-config-file-scan-dir=/usr/local/php-7.1.0/etc/conf.d \ --with-curl \ --with-fpm-group=www-data \ --with-fpm-user=www-data \ --with-freetype-dir \ --with-gd \ --with-gettext \ --with-jpeg-dir \ --with-mcrypt \ --with-mhash \ --with-mysqli=mysqlnd \ --with-mysql-sock=/var/run/mysqld/mysqld.sock \ --with-openssl \ --without-pear \ --with-pdo-mysql=mysqlnd \ --with-pdo-sqlite \ --with-png-dir \ --with-pspell \ --with-readline \ --with-sqlite3 \ --with-zlib"
Lo anterior establecerá CONFIGURE_STRINGS
variable de shell para contener todas sus opciones de compilación de PHP. A continuación, necesitamos construir nuestra configuración y Makefiles. Para hacerlo ejecuta:
$ ./buildconf --force Forcing buildconf Removing configure caches rebuilding aclocal.m4 rebuilding configure rebuilding main/php_config.h.in
A continuación, realice la configuración de compilación:
$ ./configure $CONFIGURE_STRINGS
Si el configure
anterior no produjo ningún error comando, entonces es hora de realizar la compilación ejecutando un make
comando:
$ make .... Build complete. Don't forget to run 'make test'.
Una vez finalizada la compilación si el código fuente de PHP está terminado, opcionalmente ejecute make test
comando o ejecutar make install
comando para instalar todos los archivos binarios compilados previamente en sus
directorios relevantes:
# make install Installing shared extensions: /usr/local/php-7.1.0/lib/php/extensions/no-debug-non-zts-20160303/ Installing PHP CLI binary: /usr/local/php-7.1.0/bin/ Installing PHP CLI man page: /usr/local/php-7.1.0/php/man/man1/ Installing PHP FPM binary: /usr/local/php-7.1.0/sbin/ Installing PHP FPM config: /usr/local/php-7.1.0/etc/ Installing PHP FPM man page: /usr/local/php-7.1.0/php/man/man8/ Installing PHP FPM status page: /usr/local/php-7.1.0/php/php/fpm/ Installing phpdbg binary: /usr/local/php-7.1.0/bin/ Installing phpdbg man page: /usr/local/php-7.1.0/php/man/man1/ Installing PHP CGI binary: /usr/local/php-7.1.0/bin/ Installing PHP CGI man page: /usr/local/php-7.1.0/php/man/man1/ Installing build environment: /usr/local/php-7.1.0/lib/php/build/ Installing header files: /usr/local/php-7.1.0/include/php/ Installing helper programs: /usr/local/php-7.1.0/bin/ program: phpize program: php-config Installing man pages: /usr/local/php-7.1.0/php/man/man1/ page: phpize.1 page: php-config.1 /php-src/build/shtool install -c ext/phar/phar.phar /usr/local/php-7.1.0/bin ln -s -f phar.phar /usr/local/php-7.1.0/bin/phar Installing PDO headers: /usr/local/php-7.1.0/include/php/ext/pdo/
Todo listo. PHP 7.1.0 ya está instalado. Para confirmar ejecutar:
$ /usr/local/php-7.1.0/bin/php -v PHP 7.1.0 (cli) (built: Jan 2 2017 09:09:59) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
Instalación del administrador de procesos FastCGI
En esta sección instalaremos PHP-FPM para ser utilizado como frente para la instalación con servidores web como Nginx o Apache. Primero, cree un enlace simbólico de /usr/local/php-$version/sbin/php-fpm
recién compilado binario para hacer nuestra instalación ordenada:
# ln -s /usr/local/php-7.1.0/sbin/php-fpm /usr/local/php-7.1.0/sbin/php-7.1.0-fpm
Todavía en el php-src
directorio, configure un php.ini
predeterminado configuración:
# cp php.ini-production /usr/local/php-7.1.0/lib/php.ini
Habilitar el archivo de configuración del demonio PHP-FPM:
# mv /usr/local/php-7.1.0/etc/php-fpm.d/www.conf.default /usr/local/php-7.1.0/etc/php-fpm.d/www.conf
Use el editor de texto y cree un nuevo /usr/local/php-7.1.0/etc/php-fpm.conf
archivo de configuración con el siguiente contenido:
[global] pid = /var/run/php7-fpm.pid error_log = /var/log/php7-fpm.log include=/usr/local/php-7.1.0/etc/php-fpm.d/*.conf
Habilitar módulos PHP adicionales
Inserte cualquier directiva de módulo que desee habilitar en su php.ini
archivo de configuración. Por ejemplo, para habilitar el módulo PHP OpCache de Zend, ejecute:
# echo "zend_extension=opcache.so" >> /usr/local/php-7.1.0/lib/php.ini
Configurar secuencia de comandos PHP7-FPM init.d
Primero, inserte un siguiente php7-fpm.init
modificado script en /etc/init.d/
directorio:
# wget -qO /etc/init.d/php7-fpm https://linuxconfig.org/images/php7-fpm.init
En caso de que haya instalado una versión diferente de PHP que no sea 7.1.0
use su editor de texto y cambie las siguientes variables de script para que se ajusten a su PHP VERSION
instalado :
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/php-VERSION/sbin NAME=php-VERSION-fpm DAEMON=/usr/local/php-VERSION/sbin/$NAME CONFFILE=/usr/local/php-VERSION/etc/php-fpm.conf
Por último, crea /etc/init.d/php7-fpm
ejecutable y ejecute udpate-rc.d
comando:
# chmod +x /etc/init.d/php7-fpm # update-rc.d php7-fpm defaults
Iniciar demonio PHP-FPM
Ahora debería poder iniciar PHP-FPM Daemon simplemente ejecutando service
comando:
# service php7-fpm start # service php7-fpm status [ ok ] php-7.1.0-fpm is running.
El demonio PHP-FPM ahora está escuchando en un localhost
número de puerto 9000
.