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.
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.
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.
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.
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.
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.
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«.
Para la configuración de la base de datos y los usuarios de phpmyadmin, elige ‘Sí’.
Y escribe un nuevo admin de PHPMyAdmin ‘FUERTE’ como ‘Hakaselabs001@#’.
Repite la contraseña ‘Hakaselabs001@#’.
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’.
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.
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.
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.
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.