Nginx con PHP 8 en el servidor Ubuntu

Ronaldo B.27 de julio de 20226 min de lectura

En este artículo

Si lo prefieres, también puedes verificar esta publicación en video disponible en el canal de Hcode en YouTube.

Ya hemos hablado en algunos artículos sobre la instalación de PHP 8 en Ubuntu. Sin embargo, este artículo es un poco diferente, ya que vamos a mostrar cómo realizar su instalación y también crear un ejemplo usando este lenguaje, pero ejecutándolo a través de Nginx, uno de los Servidores Web más conocidos y rápidos del mundo. Esto será especialmente útil cuando necesitemos realizar el despliegue de nuestros proyectos PHP y requiramos un Servidor Web confiable.

Vamos a realizar la instalación en un servidor Linux Ubuntu, hospedado en DigitalOcean. Este artículo estará centrado en PHP 8, pero el paso a paso se puede utilizar en versiones anteriores también.

Nuestro artículo estará dividido en los siguientes temas:

1 - Instalación de Nginx

2 - Instalación y Configuración de PHP 8

3 - ¿Qué es PHP-FPM?

4 - Configuración de PHP-FPM

5 - Configuración de Nginx

6 - Creación del Primer código

Instalación de Nginx

Vamos a actualizar los paquetes instalados en nuestro Sistema con apt-get usando el siguiente comando:

sudo apt-get update

Después de eso, vamos a instalar Nginx, con el siguiente comando:

sudo apt-get install nginx -y

Vamos a iniciar su servicio con el comando a continuación:

sudo service nginx start

Con este comando, al acceder al servidor, veremos el siguiente resultado en el navegador:

Página de bienvenida de Nginx

¡Genial! Nginx se ha instalado con éxito!

Instalación y Configuración de PHP 8

Vamos a realizar la descarga de PHP sin usar apt-get, sino a través de su origen en Internet. Podemos realizar esta descarga en la carpeta que consideremos mejor. En mi caso, descargaré en la carpeta raíz del Sistema.

La descarga se puede realizar con el siguiente comando:

sudo wget -c https://downloads.php.net/~carusogabriel/php-8.0.0beta1.tar.xz -o -

Después de que se complete la descarga, vamos a extraer la carpeta de PHP 8 y también a renombrarla a un nombre más agradable. Haremos esto con el siguiente comando:

sudo tar -Jxxvf php-8.0.0beta1.tar.xz && sudo mv php-8.0.0beta1 php8-beta1

Ahora vamos a acceder a la carpeta para la configuración con el comando cd php8-beta1.

Antes de realizar la configuración, necesitamos instalar algunos paquetes que PHP requiere para que funcione correctamente. Vamos a instalar estos paquetes con el siguiente comando:

sudo apt-get install -y build-essential pkg-config libxml2-dev sqlite3 libsqlite3-dev zlib1g libz-dev

Ahora sí estamos preparados para instalar PHP en Ubuntu. Haremos esto con los dos comandos a continuación:

sudo ./configure --enable-fpm --with-pdo-mysql
sudo make && sudo make install

Ten en cuenta que en el primer comando añadimos la flag --enable-fpm. Esta será esencial para la conexión de Nginx con PHP. Hablaremos un poco más sobre el FPM en un momento.

La próxima configuración que realizaremos es agregar el archivo php.ini a nuestro sistema. Vamos a hacer esto con el siguiente comando:

cp php.ini-development /usr/local/php/php.ini

¡Estamos yendo muy bien! Pero antes de continuar con la configuración, necesitamos hablar sobre PHP-FPM.

¿Qué es PHP-FPM?

Cuando PHP se ejecuta a través de un Servidor Web, necesita comunicarse con ese Servidor para que el código pueda funcionar y su resultado llegue al usuario final. Hay muchas maneras de hacer esta conexión. Una de ellas es el CGI (Common Gateway Interface, en español “Interfaz Común de Entrada”). Hace este “intermediario” entre el lenguaje PHP y Nginx.

Para facilitar esta conexión, PHP tiene un administrador de procesos llamado FPM (FastCGI Process Manager). Necesitamos realizar su configuración para que nuestro código PHP funcione en conjunto con Nginx. Eso es lo que vamos a hacer ahora.

Configuración de PHP-FPM

Lo primero que necesitamos hacer es editar el archivo php.ini. En este archivo hay una configuración llamada cgi.fix_pathinfo. Por defecto, esta configuración tiene como valor el número 1. Esta configuración permite que Nginx informe a PHP-FPM solicitudes incluso si los archivos no existen, lo que puede ser una brecha de seguridad. Para resolver esta cuestión, vamos a definir esta configuración como 0.

Vamos a acceder al archivo php.ini:

sudo nano /usr/local/php/php.ini

Busca la línea que queremos y defínela como 0:

cgi.fix_pathinfo=0

Definiendo opción de CGI como 0

Ahora sí podemos iniciar la configuración del FPM. Vamos a copiar algunos archivos de configuración predeterminados a las carpetas de nuestro Sistema. Usaremos los comandos a continuación:

cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
cp sapi/fpm/php-fpm /usr/local/bin
cp sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf

Explicando: El primer archivo copiado es el de configuración del FPM para la conexión con los servidores. Los otros dos archivos fueron copiados de la carpeta donde descargamos PHP. Representan el binario del FPM y su archivo de configuración general.

Vamos a hacer un cambio en el archivo www.conf. Para ello, vamos a acceder a él usando el siguiente comando:

sudo nano /usr/local/etc/php-fpm.d/www.conf

Vamos a buscar las configuraciones user y group y vamos a definirlas con los siguientes valores:

user = www-data
group = www-data

Definiendo los valores de user y group en el archivo www.conf

A continuación, vamos a editar el archivo de configuración general del FPM. Vamos a acceder a él con el siguiente comando:

sudo nano /usr/local/etc/php-fpm.conf

En este archivo vamos a editar la última línea, dejándola así:

include=/usr/local/etc/php-fpm.d/*.conf

Editando el archivo de configuración general del FPM

Hemos realizado muchas configuraciones y ahora estamos preparados para iniciar el servicio de PHP-FPM. Para eso, solo basta informar la ruta a su binario, con el siguiente comando:

/usr/local/bin/php-fpm

Con esto, el FPM estará iniciado ?.

Configuración de Nginx

Con el FPM configurado, solo falta configurar Nginx.

Vamos a acceder al archivo de configuración de los Virtual Hosts de Nginx, con el siguiente comando:

sudo nano /etc/nginx/sites-available/default

En este archivo buscamos una línea que contiene todos los archivos que se ejecutan por defecto en Nginx. Esta línea debe estar debajo de la línea de configuración de root. La dejaremos de la siguiente forma:

index index.php index.html index.htm index.nginx-debian.html;

Línea de configuración de los archivos que se ejecutarán en Nginx

Ten en cuenta que hemos añadido el archivo index.php, para que Nginx ejecute de hecho los archivos de este lenguaje.

La próxima configuración que realizaremos es en la directiva location ~ \.php$. Vamos a remover el comentario de este bloque de configuración y dejarlo de la siguiente forma:

location ~ \.php$ {
	include fastcgi_params;
	fastcgi_index   index.php;
	fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
	fastcgi_param   SCRIPT_NAME       $fastcgi_script_name;
	fastcgi_pass 127.0.0.1:9000;
}

Después de guardar este archivo estaremos listos para iniciar el servicio de Nginx con las nuevas configuraciones. Usaremos el siguiente comando:

sudo service nginx restart

Creación del Primer código

Para probar si todo salió bien, ¿qué te parece si creamos un pequeño ejemplo? ¡Vamos allá!

Vamos a crear un archivo llamado index.php en la carpeta /var/www/html, con el siguiente comando:

sudo nano /var/www/html/index.php

El contenido de este nuevo archivo será el siguiente:

<?php

echo "<h1>PHP 8 en Nginx</h1>";

phpinfo();

?>

Ahora, al acceder a la dirección local de nuestro servidor, veremos el siguiente resultado:

PHP ejecutándose en nuestro servidor

¡Excelente! Nuestro código funcionó y ahora PHP está siendo ejecutado en conjunto con Nginx en nuestro servidor ?.

Conclusión

En este artículo aprendimos cómo instalar PHP 8 junto con Nginx. Esperamos que este conocimiento pueda ayudarte en tus estudios sobre PHP o en tu trabajo también ?.

Nos vemos en el próximo artículo, hasta entonces.

Sigue aprendiendo con Hcode

Regístrate en la plataforma de cursos y sigue las próximas guías del blog.