GNU/Linux >> Tutoriales Linux >  >> Arch Linux

Cómo compilar PHP7.0/PHP7.1 desde la fuente en Arch Linux

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.


Arch Linux
  1. Cómo compilar Brotli desde la fuente en Ubuntu 18.04 LTS

  2. Cómo compilar Brotli desde la fuente en CentOS 7

  3. Cómo compilar la herramienta de compresión Brotli desde el origen en Debian 9

  4. Cómo compilar la herramienta de compresión Brotli desde el origen en Fedora 29

  5. Cómo usar Pacman en Arch Linux

Cómo instalar Virtualbox en Arch Linux

Cómo instalar software desde la fuente en Linux

Cómo conectar iPhone a Arch Linux

Cómo instalar Skype en Arch Linux

Cómo instalar Java en Arch Linux

Cómo compilar el kernel de Linux desde el origen para crear un kernel personalizado