Cómo instalar Nginx con PHP y MySQL (LEMP Stack) en Ubuntu 20.04 LTS

Nginx (pronunciado «engine x») es un servidor HTTP gratuito, de código abierto y de alto rendimiento. Nginx es conocido por su alta velocidad, estabilidad, amplio conjunto de funciones, configuración sencilla y bajo consumo de recursos. Este tutorial muestra cómo puedes instalar Nginx en un servidor Ubuntu 20.04 LTS con soporte PHP 7.4 (a través de PHP-FPM) y soporte MySQL (LEMP = Linux + Nginx (pronunciado «motor x») + MySQL + PHP).

Requisitos previos

  • Servidor Ubuntu 20.04 LTS
  • Privilegios de root

¿Qué vamos a hacer?

  • Instalar Nginx
  • Instalar MySQL
  • Instalar PHP-FPM
  • Configurar Nginx y PHP-FPM
  • Instalar PhpMyAdmin
  • Configurar PhpMyAdmin
  • Probar

Paso 1 – Instalar Nginx

Nginx o motor x es un servidor HTTP y proxy de alto rendimiento y bajo consumo de memoria. La mayoría de los sitios web a gran escala como Netflix, Pinterest, CloudFlare, GitHub utilizan Nginx.

En este paso, instalaremos el servidor web Nginx desde el repositorio de Ubuntu.

Actualiza todos los repositorios del sistema Ubuntu e instala los paquetes Nginx utilizando el comando apt que aparece a continuación.

sudo apt update
sudo apt install nginx

Una vez completada la instalación, inicia el servicio Nginx y habilítalo para que se inicie cada vez al arrancar el sistema.

systemctl start nginx
systemctl enable nginx

Ahora que se ha completado la instalación del servidor web Nginx, comprueba el servicio Nginx utilizando el siguiente comando.

systemctl status nginx

A continuación se muestra el resultado que obtendrás.

Instalar Nginx

Comprueba también el puerto HTTP del sistema Ubuntu y asegúrate de que lo utiliza el servicio Nginx.

ss -plt4

A continuación se muestra el resultado que obtendrás.

Comprobar puerto

Como resultado, el protocolo HTTP es utilizado por el servicio Nginx.

A continuación, aseguraremos nuestra instalación de Nginx utilizando el cortafuegos UFW.

Añade los protocolos HTTP y HTTPS a la configuración del cortafuegos UFW utilizando el siguiente comando.

for fw in ssh http https
do
ufw allow $fw
done

Ahora activa el cortafuegos UFW y comprueba su estado.

ufw enable
ufw status numbered

Y el protocolo HTTP y HTTPS se ha añadido a la configuración del cortafuegos UFW.

Abrir puerto HTTP y HTTPS Firewall UFW

Paso 2 – Instala MySQL

MySQL es el Sistema de Gestión de Bases de Datos Relacionales (RDBMS) de código abierto más popular creado por Oracle Corporation. Es un componente central de la Pila LEMP, e instalaremos la última versión de MySQL desde el repositorio de Ubuntu.

Instala MySQL utilizando el comando apt que aparece a continuación.

sudo apt install mysql-server mysql-client

Una vez completada la instalación de MySQL, inicia el servicio MySQL y habilítalo para que se inicie cada vez que arranque el sistema.

systemctl start mysql
systemctl enable mysql

Ahora comprueba el servicio MySQL utilizando el comando de abajo.

systemctl status mysql

El servicio MySQL está en funcionamiento.

Instalar servidor MySQL

A continuación, configuraremos la contraseña de root para el servidor MySQL.

Ejecuta el comando «mysql_secure_installation» que aparece a continuación.

mysql_secure_installation

Ahora se te pedirá la siguiente configuración, y asegúrate de escribir tu contraseña segura para el usuario raíz de MySQL.

Press y|Y for Yes, any other key for No: Press Enter

New password:
Re-enter new password:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

Y la contraseña raíz de MySQL ha sido configurada.

Como resultado, la instalación y configuración de la Base de Datos MySQL en Ubuntu 20.04 se ha completado.

Paso 3 – Instalar y configurar PHP-FPM

PHP-FPM o Gestor de Procesos FastCGI es una alternativa para el antiguo PHP FastCGI que proporciona funciones adicionales y mejoras de velocidad. Es adecuado para sitios pequeños y grandes basados en el lenguaje de programación PHP.

En este paso, instalaremos el PHP7.4-FPM por defecto con algunas extensiones adicionales requeridas por PHPMyAdmin.

Instala PHP-FPM utilizando el siguiente comando.

sudo apt install php-fpm php-cli php-curl php-mysql php-curl php-gd php-mbstring php-pear -y

Una vez completada la instalación de PHP-FPM, ve al directorio ‘/etc/php/7.4/fpm’ y edita la configuración php.ini utilizando el editor vim.

cd /etc/php/7.4/fpm/
vim php.ini

Descomenta la siguiente configuración y cambia el valor a ‘0’.

cgi.fix_pathinfo = 0

Guarda y cierra.

Ahora inicia el servicio PHP7.4-FPM y habilítalo para que se inicie siempre al arrancar el sistema

systemctl start php7.4-fpm
systemctl enable php7.4-fpm

El servicio PHP-FPM está en marcha, compruébalo utilizando el siguiente comando.

systemctl status php7.4-fpm

A continuación se muestra el resultado que obtendrás.

Instalar php-fpm

Por defecto, el PHP-FPM se ejecuta bajo el archivo sock, compruébalo utilizando el comando ss siguiente.

ss -pl | grep php

A continuación se muestra la respuesta que obtendrás.

u_str   LISTEN   0     511   /run/php/php7.4-fpm.sock 67702   * 0

Y la instalación de PHP-FPM 7.4 en Ubuntu 20.04 se ha completado.

Paso 4 – Configurar Nginx y PHP-FPM

En este paso, configuraremos el servidor web Nginx y PHP-FPM.

Ve al directorio de configuración ‘/etc/nginx’, y edita el archivo ‘nginx.conf’ usando vim o nano.

cd /etc/nginx/
vim nginx.conf

Descomenta la siguiente línea para ocultar la versión de Nginx.

server_tokens off;

Guárdalo y ciérralo.

A continuación, edita la configuración del virtualhost ‘por defecto’ en el directorio ‘sites-available’.

vim sites-available/default

Descomenta la línea PHP que se muestra a continuación y cambia la línea del archivo sock.

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        # # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        # # With php-cgi (or other tcp sockets):
        # fastcgi_pass 127.2.0.1:9000;
        }

Guarda y cierra.

Prueba la configuración de Nginx y asegúrate de que no hay ningún error, luego reinicia el servicio.

nginx -t
systemctl restart nginx

Como resultado, la configuración de Nginx y PHP-FPM se ha completado.

Configurar Nginx y PHP-FPM

Paso 5 – Instalar phpMyAdmin

PhpMyAdmin es una aplicación basada en PHP para gestionar bases de datos MySQL o MariaDB desde un navegador web. En este paso, instalaremos y configuraremos PHPMyAdmin bajo la pila LEMP (Linux, Nginx, MySQL y PHP-FPM).

Instala PHPMyAdmin utilizando el comando apt que aparece a continuación.

sudo apt install phpmyadmin

Durante la instalación, te preguntará por la configuración del servidor web para phpmyadmin.

Elige ninguna opción y mueve el cursor a«Aceptar«.

Configurar el servidor web para phpMyAdmin

Para la configuración de la base de datos y los usuarios de phpmyadmin, elige ‘Sí’.

Configurar la base de datos y el usuario de phpMyAdmin

Y escribe un nuevo admin de PHPMyAdmin ‘FUERTE’ como ‘Hakaselabs001@#’.

Configurar contraseña para base de datos y usuario phpMyAdmin

Repite la contraseña ‘Hakaselabs001@#’.

Configurar el servidor web para phpMyAdmin

Y la instalación de phpMyAdmin en Ubuntu 20.04 se habrá completado.

Paso 6 – Configurar phpMyAdmin con Nginx y MySQL

Tras la instalación de phpmyadmin, necesitamos configurar phpmyadmin para que se ejecute bajo el servidor web Nginx y configurar el acceso del usuario phpmyadmin de MySQL. Para ejecutar phpMyAdmin bajo el servidor web Nginx, necesitamos añadir la configuración al archivo de configuración del host virtual.

Configurar phpMyAdmin con el servidor web Nginx

Ahora ve al directorio de configuración ‘/etc/nginx’, y edita el archivo de host virtual por defecto.

cd /etc/nginx/sites-available/
vim default

Pega la siguiente configuración de Nginx para PHPMyAdmin dentro del corchete ‘servidor {…}’.

location /phpmyadmin {
    root /usr/share/;
    index index.php;
    try_files $uri $uri/ =404;

location ~ ^/phpmyadmin/(doc|sql|setup)/ {
deny all;
}

location ~ /phpmyadmin/(.+\.php)$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
}

Guarda y sal.

Prueba la configuración de nginx y asegúrate de que no hay ningún error, luego reinicia el servicio nginx.

nginx -t
systemctl reload nginx

Y hemos añadido la configuración de Nginx para nuestra instalación de phpMyAdmin, es accesible a través de la URL de la ruta como ‘http://server-ip/phpmyadmin’.

Configurar Nginx para phpMyAdmin

Permitir que el usuario phpMyAdmin acceda a las bases de datos

Para este tutorial, utilizaremos usuarios MySQL no root para PHPMyAdmin. Crearemos un nuevo usuario y le concederemos todos los privilegios de todas las bases de datos del servidor.

Accede al shell de MySQL utilizando el siguiente comando.

mysql -u root -p

Ahora crea un nuevo usuario MySQL ‘hakase’ y concédele todos los privilegios de la base de datos.

create user hakase@'localhost' identified by 'Hakaselabs001@#';
grant all privileges on *.* to hakase@'localhost';
flush privileges;

Ahora escribe ‘exit’ para salir del intérprete de comandos MySQL.

exit

Como resultado, hemos creado un nuevo usuario MySQL para el phpMyAdmin.

Paso 7 – Pruebas

En este paso, probaremos nuestra configuración de la Pila LEMP y phpMyAdmin.

Archivo PHP de prueba

Ve al directorio ‘/var/www/html’ y crea un nuevo archivo de script ‘info.php’ utilizando el editor vim.

cd /var/www/html
vim info.php

Pega en él el siguiente script.

<?php
phpinfo();
?>

Guárdalo y ciérralo.

A continuación, abre tu navegador web y escribe la dirección IP de tu servidor seguida de la ruta de tu script ‘info.php’.

http://server-ip/info.php

A continuación se muestra el resultado que obtendrás.

phpinfo con LEMP Stack

Como resultado, hemos detallado la configuración de nuestro PHP-FPM 7.4 en el servidor Ubuntu 20.04, y el script PHP se está ejecutando en nuestro servidor LEMP Stack.

Probar phpMyAdmin

Para probar nuestra instalación de phpMyAdmin, escribe la dirección IP de tu servidor seguida de la ruta ‘phpmyadmin’ en la URL

http://server-ip/phpmyadmin/

Y obtendrás la página de inicio de sesión de phpMyAdmin.

Página de inicio de sesión de phpMyAdmin

Para acceder al phpMyAdmin, escribe el usuario que hemos creado en la parte superior. El usuario es ‘hakase’ con la contraseña ‘Hakaselabs001@#’, luego pulsa el botón‘Ir‘.

Y obtendrás el panel de phpMyAdmin como se muestra a continuación.

Panel de phpMyAdmin

El phpMyAdmin funciona en el entorno LEMP Stack.

Como resultado, la instalación y configuración del LEMP Stack en Ubuntu 20.04 se ha completado con éxito.

También te podría gustar...