Este tutorial le muestra cómo compilar PHP7.0/PHP7.1 en Arch Linux e instalarlo junto con PHP7.2. Arch Linux es una distribución de lanzamiento continuo con el software más nuevo y mejor. PHP7.2 aterrizó en el repositorio de Arch Linux. Algunas aplicaciones web, como WordPress, funcionan bien con PHP7.2, pero otras, como NextCloud, actualmente no son compatibles con PHP7.2. Se dice que la próxima versión de NextCloud, NextCloud 13, es compatible con PHP7.2.
Ayer realicé una actualización en mi servidor Arch Linux, lo que resultó en que PHP7.2 reemplazó a PHP7.1 y mi interfaz web NextCloud dejó de funcionar. El AUR (repositorio de usuarios de Arch) proporciona PHP7.0. Intenté instalarlo con Yaourt, pero la verificación de la firma falló, así que no tuve más remedio que compilar PHP7.0/PHP7.1 yo mismo.
Cómo compilar PHP7.0/PHP7.1 en Arch Linux
Primero, actualice todo el software.
sudo pacman -Syu
Instale wget y descargue el código fuente de PHP. Yo uso la última versión de PHP7.0. Reemplace el número de versión con su versión preferida.
sudo pacman -S wget wget http://php.net/distributions/php-7.0.26.tar.gz
Extraiga el tarball.
tar xvf php-7.0.26.tar.gz
Cd en el directorio recién creado.
cd php-7.0.26
Instale las herramientas de compilación y las dependencias.
sudo pacman -S gcc make bison gawk re2c libxml2 libwebp freetype2 c-client libmcrypt libxslt
Configure el entorno con los siguientes parámetros. Copie el comando completo y péguelo en la ventana de su terminal.
./configure \ --prefix=/opt/php-7.0.26 \ --with-config-file-path=/opt/php-7.0.26/etc \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --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-pdo-mysql \ --with-mysqli \ --with-mysql-sock=/var/run/mysqld/mysqld.sock \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --enable-gd-native-ttf \ --with-openssl \ --with-fpm-user=http \ --with-fpm-group=http \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-xmlrpc \ --with-xsl \ --enable-opcache \ --enable-fpm
Cuando termine, compilemos PHP7 con el comando make. Reemplace 2 con la cantidad de núcleos de CPU en su máquina. Por defecto make
usa 1 núcleo, puede hacer que el proceso de compilación sea más rápido usando todos los núcleos disponibles.
make -j2
El proceso de compilación puede llevar algún tiempo, dependiendo de la potencia de su CPU. Una vez que haya terminado, ejecute una prueba.
make test
Ahora instale PHP. El directorio de instalación es /opt/php-7.0.26/
.
sudo make install
En la captura de pantalla, podemos ver que el binario PHP-FPM está instalado en /opt/php-7.0.26/sbin/
y el directorio de configuración de PHP-FPM es /opt/php-7.0.26/etc/
. Antes de ejecutar PHP-FPM, debemos crear el archivo de configuración de PHP-FPM. Hay dos archivos de configuración de muestra para que podamos copiarlos.
sudo cp /opt/php-7.0.26/etc/php-fpm.conf.default /opt/php-7.0.26/etc/php-fpm.conf sudo cp /opt/php-7.0.26/etc/php-fpm.d/www.conf.default /opt/php-7.0.26/etc/php-fpm.d/www.conf
Edite el www.conf
archivo de configuración.
sudo nano /opt/php-7.0.26/etc/php-fpm.d/www.conf
Por defecto, PHP-FPM escucha en el socket TCP 127.0.0.1:9000, podemos hacer que escuche en el socket Unix. Busque la siguiente línea.
listen = 127.0.0.1:9000
Agregue un punto y coma al principio para comentarlo. Luego agregue la siguiente línea debajo.
listen = /run/php-fpm/php7.0-fpm.sock
A continuación, busque las siguientes 3 líneas y elimínelas.
;listen.owner = http ;listen.group = http ;listen.mode = 0660
Guarde y cierre el archivo. A continuación, copie el archivo php.ini.
sudo cp ~/php-7.0.26/php.ini-production /opt/php-7.0.26/etc/php.ini
Edite el archivo.
sudo nano /opt/php-7.0.26/etc/php.ini
Agregue lo siguiente al final del archivo.
include_path = "/opt/php-7.0.26/lib/php"
Guarde y cierre el archivo. Ahora podemos iniciar PHP-FPM con:
sudo /opt/php-7.0.26/sbin/php-fpm
Crear unidad de servicio Systemd
Crear unidad de servicio Systemd para PHP7.0.
sudo nano /etc/systemd/system/php7.0-fpm.service
Copie y pegue las siguientes líneas en el archivo.
[Unit] Description=The PHP FastCGI Process Manager After=network.target [Service] Type=simple PIDFile=/run/php-fpm/php7.0-fpm.pid ExecStart=/opt/php-7.0.26/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.0.26/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target
Guarde y cierre el archivo. Ahora podemos matar el PHP7.0-FPM actual y ejecutarlo a través de systemd. Encuentre el PID del proceso maestro PHP7.0-FPM.
ps aux | grep php-fpm
Como puede ver, el PID es 5066 en mi máquina. Entonces puedo matarlo con:
sudo kill 5066
Tenga en cuenta que el binario PHP7.2-FPM también se llama php-fpm
.Si usa pkill php-fpm
, tanto PHP7.2-FPM como PHP7.0-FPM se detendrán. Ahora inicie php7.0-fpm a través de systemd.
sudo systemctl start php7.0-fpm
Habilite el inicio automático en el momento del arranque.
sudo systemctl enable php7.0-fpm
Comprueba su estado.
systemctl status php-fpm
Hacer que Nginx use PHP7.0-FPM
Para hacer que Nginx use PHP7.0 en lugar de PHP7.2, abra el archivo de bloque del servidor Nginx, busque la siguiente línea.
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
Cámbialo a
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
Puede haber más de una instancia de esta línea. Tienes que cambiarlos todos. Luego haz http
(el usuario del servidor web en Arch Linux) como propietario de /run/php-fpm/php7.0-fpm.sock
archivo.
sudo chown http:http /run/php-fpm/php7.0-fpm.sock
Pruebe la configuración de Nginx.
sudo nginx -t
Si la prueba es exitosa, vuelva a cargar Nginx para que los cambios surtan efecto.
sudo systemctl reload nginx
¡Eso es todo! Espero que este tutorial te haya ayudado a compilar PHP7.0/7.1 desde el código fuente en Arch Linux. Como siempre, si esta publicación le resultó útil, suscríbase a nuestro boletín informativo gratuito para obtener más consejos y trucos útiles.