Búsqueda de sitios web

Compile e instale PHP 8,7 en Ubuntu 18.04 (Bionic Beaver)


Preprocesador de hipertexto abreviado como PHP es un lenguaje de secuencias de comandos web popular. Este es un lenguaje de secuencias de comandos del lado del servidor, esto significa que se ejecuta en el servidor antes de que los resultados HTML se envíen al cliente-servidor. Tiene reputación por su versatilidad, simplicidad y amplia adopción.

Hay varias características y beneficios asociados con PHP, algunos de los cuales incluyen:

  • Marcos y bibliotecas extensos: PHP ofrece un rico ecosistema con innumerables marcos y bibliotecas para ampliar su funcionalidad. Estos marcos y bibliotecas incluyen Laravel, Symfony y CodeIgniter.
  • Excelente compatibilidad con bases de datos: admite varias bases de datos con extensiones integradas. Las bases de datos compatibles incluyen MySQL, PostgreSQL, Oracle y SQLite.
  • Alto rendimiento: con varias mejoras, PHP ahora proporciona un alto rendimiento que permite manejar sitios web de alto tráfico de manera eficiente.
  • Comunidad activa: la comunidad PHP contribuye a su crecimiento a través de recursos en línea, foros para brindar ayuda, tutoriales, bibliotecas y mejores prácticas para desarrolladores.
  • Escalabilidad: tiene la capacidad de manejar proyectos de diferentes tamaños y complejidad. Esto facilita a los desarrolladores la creación de aplicaciones web escalables que se integran fácilmente con otras tecnologías.
  • Rentable: al ser de código abierto, reduce el coste de desarrollo.
  • Conjunto rico de funciones: PHP proporciona un conjunto completo de funciones para el desarrollo web.
  • Soporte de plataforma amplia: es compatible con varias plataformas como Windows, Linux, macOS y Unix. También es compatible con varios servidores web como Apache, Nginx y Microsoft IIS.

Generalmente, instalar PHP en Ubuntu no debería ser difícil. Sin embargo, el repositorio Ondřej Surý PPA que proporciona las últimas versiones de PHP en Ubuntu parece no funcionar en Ubuntu 18.04. Esto es lo que nos lleva a esta guía sobre cómo compilar e instalar PHP 8,7 en Ubuntu 18.04 (Bionic Beaver).

1. Instale los paquetes necesarios

Para poder compilar PHP8,7 en Ubuntu 18.04 (Bionic Beaver), necesita instalar todos los paquetes necesarios. Primero, actualice el sistema:

sudo apt update && sudo apt upgrade -y

Si es necesario reiniciar, realícelo.

[ -e /var/run/reboot-required ] && sudo reboot

Ahora instale los paquetes de desarrollo:

sudo apt install git pkg-config build-essential autoconf bison libxml2-dev libsqlite3-dev openssl libcurl3 libpq-dev libxslt-dev libonig-dev -y

El siguiente paquete requerido no está disponible en los repositorios predeterminados de Ubuntu 18.04, por lo que agregaremos el repositorio a continuación

echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
sudo apt update

Ahora instala el paquete:

sudo apt install re2c

Una vez completado, puede eliminar el repositorio:

sudo rm -rf /etc/apt/sources.list.d/focal-security.list
sudo apt update

2. Descargue y configure el código fuente PHP

Ahora lo siguiente que debe hacer es descargar el código fuente PHP. Para hacer eso, necesitas clonar el repositorio de GitHub con el siguiente comando. Puedes usar una rama de git específica.

git clone https://github.com/php/php-src.git

# Master branch
git clone https://github.com/php/php-src.git --branch=master

# PHP 8.2 branch
git clone https://github.com/php/php-src.git --branch=PHP-8.2

# PHP 8.1 branch
git clone https://github.com/php/php-src.git --branch=PHP-8.1

# PHP 8.0 branch
git clone https://github.com/php/php-src.git --branch=PHP-8.0

# PHP 7.4 branch
git clone https://github.com/php/php-src.git --branch=PHP-7.4

Ahora cambie al directorio:

cd php-src

Para esta guía, realizaremos algunas configuraciones antes de compilar el código fuente. Primero, genere la configuración usando el comando:

$ ./buildconf
buildconf: Checking installation
buildconf: autoconf version 2.69 (ok)
buildconf: Cleaning cache and configure files
buildconf: Rebuilding configure
buildconf: Rebuilding main/php_config.h.in
buildconf: Run ./configure to proceed with customizing the PHP build.

Puede configurar PHP con varias opciones deseadas antes de la instalación. Esto incluye habilitar/deshabilitar extensiones y configurar la ruta de instalación.

Para ver todas las opciones disponibles, utilice:

./configure --help

Aquí configuraremos PHP usando varias opciones.

./configure \
 --prefix=/opt/php \
 --enable-cli \
 --enable-fpm \
 --enable-intl \
 --enable-opcache \
 --enable-sockets \
 --enable-soap \
 --with-freetype \
 --with-fpm-user=www-data \
 --with-fpm-group=www-data \
 --with-jpeg \
 --with-mysql-sock \
 --with-mysqli \
 --with-pdo-mysql \
 --with-pgsql \
 --with-xsl \
 --with-zlib

Salida de muestra:

3. Construya PHP a partir del código fuente

Ahora estamos listos para compilar PHP a partir del código fuente en nuestro Ubuntu 18.04 (Bionic Beaver). Comenzaremos la compilación con el siguiente comando:

Para agilizar el proceso, puedes proporcionar la cantidad de núcleos identificados con el comando:

$ nproc
4

Ahora proporcione el número principal durante la compilación:

make -j$(nproc)

El proceso debe proceder como se muestra:

4. Instale PHP desde el código fuente

Una vez que se complete el proceso de compilación, ejecute la instalación:

sudo make install

Salida de muestra:

Una vez completado, tendrá PHP 8 instalado en /opt/php/php8. Puedes verificar esto con el comando:

$ /opt/php/bin/php -v
PHP 8.3.0-dev (cli) (built: Jun 22 2023 10:04:20) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.0-dev, Copyright (c) Zend Technologies

Exporta esta RUTA:

echo "export PATH=\$PATH:/opt/php/php8/bin" | sudo tee -a /etc/profile
source /etc/profile

Ahora revisa la versión de PHP:

$ php -v
PHP 8.3.0-dev (cli) (built: Jun 22 2023 10:04:20) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.0-dev, Copyright (c) Zend Technologies

Ver los módulos instalados:

$ php -m
[PHP Modules]
Core
ctype
date
dom
fileinfo
filter
hash
iconv
intl
json
libxml
mysqli
mysqlnd
pcre
PDO
pdo_mysql
pdo_sqlite
pgsql
Phar
posix
random
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
xsl
zlib

[Zend Modules]

5. Configurar PHP en Ubuntu 18.04 (Bionic Beaver)

Ahora necesitamos identificar la ubicación de la configuración PHP después de la instalación. Para lograrlo, use el comando:

$ php --ini
Configuration File (php.ini) Path: /opt/php/php8/lib
Loaded Configuration File:         (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

Aquí puedes ver claramente que no hay ninguna configuración para PHP. Crearemos una configuración a partir del ejemplo disponible php.ini-development o php.ini-production en el Directorio php-src.

sudo cp php.ini-production /opt/php/php8/lib/php.ini

Ahora verifique que la configuración esté disponible:

$ php --ini
Configuration File (php.ini) Path: /opt/php/php8/lib
Loaded Configuration File:         /opt/php/php8/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

Ahora puede modificar el archivo de configuración como desee. Lo siguiente que debemos crear es el archivo de configuración PHP-FPM:

sudo cp /opt/php/php8/etc/php-fpm.conf.default /opt/php/php8/etc/php-fpm.conf

Modifique la configuración:

sudo vim /opt/php/php8/etc/php-fpm.conf

Asegúrese de que las siguientes líneas se agreguen al archivo.

;include=/opt/php/php8/etc/php-fpm.d/*.conf
pid = run/php-fpm.pid
[www]
user = www-data
group = www-data
listen = 127.0.0.1:8999
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4

Guarde el archivo y cree un archivo de servicio para PHP-FPM

sudo vim /etc/systemd/system/php-fpm.service

Agregue estas líneas al archivo:

[Unit]
Description=PHP FPM service
After=network.target

[Service]
PIDFile=%t/php8/php-fpm.pid
ExecStartPre=/bin/mkdir --parents %t/php8
ExecStart=/opt/php/php8/sbin/php-fpm --fpm-config /opt/php/php8/etc/php-fpm.conf --nodaemonize
ExecReload=/bin/kill -USR2 $MAINPID
Type=simple

[Install]
WantedBy=multi-user.target

Ahora recarga el demonio del sistema:

sudo systemctl daemon-reload

Inicie y habilite el servicio:

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Verifique el estado:

$ systemctl status php-fpm
 php-fpm.service - PHP FPM service
   Loaded: loaded (/etc/systemd/system/php-fpm.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2023-06-22 12:16:53 UTC; 2s ago
  Process: 2085 ExecStartPre=/bin/mkdir --parents /run/php8 (code=exited, status=0/SUCCESS)
 Main PID: 2096 (php-fpm)
    Tasks: 3 (limit: 2311)
   CGroup: /system.slice/php-fpm.service
           ├─2096 php-fpm: master process (/opt/php/php8/etc/php-fpm.conf)
           ├─2102 php-fpm: pool www
           └─2103 php-fpm: pool www

Jun 22 12:16:53 ubuntu systemd[1]: Starting PHP FPM service...
Jun 22 12:16:53 ubuntu systemd[1]: Started PHP FPM service.

Verifique si está escuchando en el puerto configurado:

$ sudo ss -plunt|grep 8999
tcp    LISTEN   0        128             127.0.0.1:8999          0.0.0.0:*       users:(("php-fpm",pid=2103,fd=9),("php-fpm",pid=2102,fd=9),("php-fpm",pid=2096,fd=7))

6. Pruebe PHP en Ubuntu 18.04 (Bionic Beaver)

Ahora podemos probar y validar que el PHP instalado esté funcionando como deseamos. Para lograrlo puede utilizar el servidor web deseado:

Opción 1: usar Apache

Comience instalando Apache y los paquetes necesarios:

sudo apt install apache2 libapache2-mod-fcgid -y

Asegúrese de que esté iniciado y habilitado:

sudo systemctl enable apache2 --now

Cree un archivo de host virtual que maneje PHP a través del puerto FCGI

sudo vim /etc/apache2/sites-available/test.conf

Agregue estas líneas al archivo y reemplácelas cuando sea necesario:

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName test.computingforgeeks.com

     ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:8999/var/www/html/$1
     DirectoryIndex /index.php index.php

</VirtualHost>

Guarde el archivo y habilite el sitio:

sudo a2ensite test

Además, habilite otras extensiones de Apache:

sudo a2enmod actions fcgid alias
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_fcgi

Reinicie apache:

sudo systemctl restart apache2

Ahora crea un archivo PHP simple con el comando:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Opción 2: usar Nginx

También puede utilizar el servidor web Nginx para servir los archivos PHP. Primero, instálalo:

sudo apt install nginx

Asegúrese de que esté iniciado y habilitado:

sudo systemctl enable --now nginx

A continuación, cree un archivo de configuración:

sudo vim /etc/nginx/conf.d/test.conf

Agregue estas líneas al archivo:

server {
    listen 80;
    server_name test.computingforgeeks.com;

    root /var/www/html;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:8999;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Reinicie nginx:

sudo systemctl restart nginx

Ahora crea el archivo:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Con cualquiera de las opciones anteriores utilizadas, verifique si puede acceder al archivo PHP con el nombre de dominio proporcionado http://domain_name/info.php

Veredicto

¡Eso es! Hemos explicado con éxito cómo compilar e instalar PHP 8,7 en Ubuntu 18.04 (Bionic Beaver). Esto debería ayudarle a ejecutar las últimas versiones de PHP en Ubuntu 18.04. Espero que esto te haya sido de ayuda.

Ver más:

  • Alojamiento de aplicaciones PHP en Linux con servidor web Apache/Nginx
  • Cómo instalar PHP 8.2 en Rocky Linux 8/AlmaLinux 8
  • Cómo instalar PHP 8.2 en CentOS 7/RHEL 7