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:
¡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
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
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
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;
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:
¡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.