Cómo instalar LEMP Stack con PhpMyAdmin en Ubuntu 20.04


Para aquellos de ustedes que no saben qué es LEMP, esta es una combinación de paquetes de software: Linux, Nginx (pronunciado EngineX), MariaDB y PHP.

Puede utilizar LEMP con fines de prueba o en un entorno de producción real para implementar aplicaciones web utilizando marcos PHP como Laravel o Yii, o sistemas de gestión de contenido como WordPress, Drupal o Joomla.

Quizás se pregunte cuál es la diferencia entre LAMP y LEMP. Bueno, la única diferencia es el servidor web que está incluido: Apache (en LAMP) y Nginx (en LEMP). Ambos servidores web son bastante buenos y aunque Apache es el que se usa con más frecuencia, Nginx no retrocede de ninguna manera.

Otra aplicación ampliamente utilizada normalmente instalada junto con la pila LEMP es PhpMyAdmin: es una herramienta PHP basada en la web para administrar un servidor de base de datos MySQL/MariaDB desde un navegador web.

Si está buscando una configuración LAMP para su Ubuntu 20.04, entonces debería leer nuestra guía de configuración LAMP en Ubuntu 20.04.

  1. Ubuntu 20.04 Server Installation Guide

En este artículo, aprenderá a instalar y configurar la pila LEMP con PhpMyAdmin en el servidor Ubuntu 20.04.

Paso 1: Instalar Nginx en Ubuntu 20.04

1. Nginx es un servidor web moderno y rápido diseñado para servir muchas conexiones simultáneas sin consumir demasiados recursos del servidor. Por eso, a menudo es la opción preferida en entornos empresariales.

NGINX también se usa comúnmente como balanceador de carga y caché de contenido web. Es compatible con servidores virtuales basados u200bu200ben nombre y basados u200bu200ben IP (análogos a los hosts virtuales en Apache).

Puede instalar Nginx en su escritorio o servidor Ubuntu 20.04 ejecutando el siguiente comando.

$ sudo apt update
$ sudo apt install nginx

Los archivos de configuración de Nginx se almacenan en el directorio/etc/nginx y su archivo de configuración principal es /etc/nginx/nginx.conf. Es importante destacar que su raíz de documentos predeterminada para almacenar sus archivos web es/usr/share/nginx/html /. Pero puede utilizar el estándar/var/www/html, que debe configurarse en el archivo de configuración del bloque del servidor de su sitio web o aplicación.

2. El instalador de paquetes de Ubuntu activa systemd para iniciar el servicio Nginx y habilitarlo para que se inicie automáticamente cada vez que se reinicia el servidor. Utilice los siguientes comandos systemctl para confirmar que el servicio se está ejecutando y está habilitado.

$ sudo systemctl status nginx 
$ sudo systemctl is-enabled nginx

3. Ahora es el momento de verificar si la instalación de Nginx fue exitosa llamando a la página de Nginx a través del navegador usando la dirección IP del servidor.

http://SERVER_IP

Si no conoce la dirección IP de su servidor, puede buscar usando el comando IP como se muestra.

$ ip addr show

La página web predeterminada de NGINX debería cargarse como se muestra en la siguiente captura de pantalla, confirmando la correcta instalación y operación.

Paso 2: Instalación de la base de datos MariaDB en Ubuntu 20.04

4. MariaDB es un sistema de administración de bases de datos relacionales relativamente nuevo que fue diseñado como una bifurcación comunitaria de MySQL después de su adquisición por Oracle.

La instalación de MariaDB es simple y se puede iniciar con un comando como:

$ sudo apt install mariadb-server mariadb-client

5. El servicio MariaDB también se inicia y habilita automáticamente para iniciarse siempre en el inicio del sistema y puede confirmar esto usando los siguientes comandos.

$ sudo systemctl status mariadb
$ sudo systemctl is-enabled mariadb

6. Si desea mejorar la seguridad de MariaDB, puede ejecutar el comando mysql_secure_installation , que proporcionará algunas opciones básicas pero importantes para configurar:

$ sudo mysql_secure_installation

Luego, elija la opción para establecer la contraseña del usuario raíz (o administrador) de la base de datos, siga las instrucciones y lea atentamente las preguntas. Para proteger su servidor de base de datos, responda las preguntas como se muestra en la captura de pantalla.

  • Enter current password for root (enter for none): Enter
  • Set a root password? [Y/n] y
  • Remove anonymous users? [Y/n] y
  • Disallow root login remotely? [Y/n] y
  • Remove test database and access to it? [Y/n] y
  • Reload privilege tables now? [Y/n] y

7. Para crear, administrar y realizar operaciones de base de datos, necesita el comando de shell mysql con el indicador -u para especificar el nombre de usuario de la base de datos y -p para proporcionar la contraseña del usuario .

Para conectarse como usuario root, use el comando sudo (incluso sin el indicador -p ); de lo contrario, recibirá el error resaltado en la siguiente captura de pantalla.

$ mysql -u root -p
$ sudo mysql -u root

Paso 3: Instalar PHP en Ubuntu 20.04

8. PHP es un popular lenguaje de programación de código abierto, flexible y dinámico para crear sitios web y aplicaciones web. Es compatible con una variedad de técnicas de programación. Es importante destacar que la comunidad PHP es grande y diversa, compuesta por innumerables bibliotecas, marcos y otros componentes útiles.

NGINX usa FPM (FastCGI Process Manager) o PHP-FPM, para procesar scripts PHP. PHP-FPM es una implementación PHP FastCGI alternativa ampliamente utilizada que incluye muchas características adicionales y se utiliza para impulsar sitios/aplicaciones web de alto tráfico.

Para instalar PHP y PHP-FPM, ejecute el siguiente comando que también instalará algunos paquetes adicionales necesarios.

$ sudo apt install php php-mysql php-fpm

Dado que PHP 7.4 es la versión predeterminada de PHP en Ubuntu 20.04, los archivos de configuración de PHP se encuentran en /etc/php/7.4/ y los archivos de configuración de PHP-FPM se almacenan en /etc/php/7.4/fpm.

9. A continuación, verifique si el servicio php7.4-fpm está en funcionamiento y si está habilitado con el siguiente comando.

$ sudo systemctl status php7.4-fpm
$ sudo systemctl is-enabled php7.4-fpm

Paso 4: configurar Nginx para que funcione con PHP-FPM

10. Ahora necesita configurar NGINX para enviar solicitudes de cliente a PHP-FPM, que de forma predeterminada está configurado para escuchar en un socket UNIX como lo define el parámetro de escucha en /etc/php/7.4/fpm/pool.d/www .conf archivo de configuración del grupo predeterminado.

$ sudo vi /etc/php/7.4/fpm/pool.d/www.conf 

11. En el archivo de configuración del bloque del servidor predeterminado (/ etc/nginx/sites-available/default), elimine el comentario de la directiva de ubicación para procesar solicitudes PHP para que se parezca a la que se muestra en la siguiente captura de pantalla.

$ sudo vi /etc/nginx/sites-available/default

Guarda el archivo y cierra.

12. Luego, pruebe la sintaxis de configuración de NGINX para verificar que sea correcta. Si está bien, reinicie el servicio Nginx para aplicar los nuevos cambios.

$ sudo nginx -t
$ sudo systemctl restart nginx

13. Ahora pruebe si NGINX puede funcionar junto con PHP-FPM para procesar solicitudes PHP. Cree una página info.php simple en el directorio raíz del documento.

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

14. En su navegador, navegue utilizando la siguiente dirección. La página de configuración de PHP debería cargarse como se muestra en la siguiente captura de pantalla.

http://SERVER_IP/info.php

Paso 5: Instalar PhpMyAdmin en Ubuntu 20.04

15. PhpMyAdmin es una aplicación PHP basada en web, gratuita y de código abierto, creada específicamente para administrar servidores de bases de datos MySQL/MariaDB a través de un navegador web. Proporciona una interfaz gráfica intuitiva y admite una amplia gama de funciones comunes para las tareas de administración de bases de datos.

$ sudo apt install phpmyadmin

16. Durante la instalación del paquete, se le pedirá que configure varios aspectos del paquete PhpMyAdmin. Primero, se le pedirá que elija el servidor web predeterminado para ejecutarlo. Presione Esc porque NGINX no está en la lista proporcionada.

17. A continuación, PhpMyAdmin requiere una base de datos para trabajar. En este mensaje de configuración del paquete, elija Yes para configurar una base de datos para PhpMyAdmin con el paquete dbconfig-common.

18. En el siguiente mensaje, debe proporcionar una contraseña para que PhpMyAdmin se registre en la base de datos MariaDB. Ingrese una contraseña segura y haga clic en Enter.

Paso 6: Configuración de NGINX para servir el sitio PhpMyAdmin

19. Para permitir que NGINX sirva al sitio PhpMyAdmin ubicado en/usr/share/phpmyadmin, cree un enlace simbólico para este directorio en la raíz del documento, luego configure los permisos y la propiedad correctos en el directorio PHPMyAdmin de la siguiente manera.

$ sudo ln -s  /usr/share/phpmyadmin /var/www/html/phpmyadmin
$ sudo chmod 775 -R /usr/share/phpmyadmin/
$ sudo chown root:www-data -R /usr/share/phpmyadmin/

20. Además, asegúrese de que la directiva index en el archivo de configuración de bloque de servidor predeterminado (/ etc/nginx/sites-available/default) incluya index.php como se muestra en la siguiente captura de pantalla.

21. A continuación, reinicie el servicio Nginx una vez más para aplicar los cambios anteriores.

$ sudo systemctl restart nginx

22. Ahora acceda al sitio PhpMyAdmin desde un navegador usando la siguiente dirección.

http://SERVER_IP/phpmyadmin. 

En la página de inicio de sesión, autentíquese con el nombre de usuario y la contraseña de PHPMyAdmin. Recuerde que el inicio de sesión del usuario root remoto está deshabilitado a menos que esté accediendo a PHPMyAdmin en el host local donde está instalada la base de datos MariaDB, el acceso root no funcionará.

Por último, pero no menos importante, asegure la instalación de PhpMyAdmin con nuestra guía: 4 consejos útiles para proteger la interfaz web de PhpMyAdmin.

Conclusión

Su configuración de LEMP ahora está completa y puede comenzar a construir sus aplicaciones web o simplemente jugar con los servicios Nginx y MariaDB que acaba de instalar. Estos son ampliamente utilizados y se recomienda encarecidamente a los administradores de sistemas adquirir más conocimientos sobre ellos.