Instalar LEMP en Ubuntu 18.04

¿Qué es LEMP?

LEMP es un grupo de software que se puede usar para servir páginas web dinámicas y aplicaciones web. Este es un acrónimo que describe:

  • Linux como Sistema Operativo.
  • Engine-x” como se pronuncia el servidor web Nginx.
  • MySQL como Base de Datos.
  • PHP lenguaje de procesamiento dinámico.

¿Que es Nginx?

Nginx ​ es un servidor web/proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electrónico.​​ Es software libre y de código abierto, licenciado bajo la Licencia BSD simplificada

Poner Ubuntu Server 18.04 en español

Este paso es opcional pero para algunos puede ser mas cómodo trabajar en español, si se prefiere trabajar en ingles pueden saltarse completamente este paso.

Instalar los paquetes de idioma en Linux para su traducción al español:

sudo apt-get install language-pack-es
sudo apt-get install language-pack-es-base
sudo apt-get install language-support-es

Si lo que queremos es instalar los diccionarios en español, debemos ejecutar lo siguiente:

sudo apt-get install aspell-es
sudo apt-get install myspell-es

Para traducir los manuales del sistema al español en Linux Ubuntu:

sudo apt-get install manpages-es

Comando para reconfigurar el idioma de todo el sistema y ponerlo en español:

sudo dpkg-reconfigure locales

Instalación de LEMP

Instalar NGINX

sudo apt update
sudo apt install nginx

probar funcionamiento de Nginx con un navegador ingresando http://IP_Servidor

Si no aparece la pagina anterior ejecutar el siguiente comando e intenetar ingresar nuevamente

systemctl restart nginx

Instalar MySQL

Una vez instalado Nginx se necesitara instalar un administrador de base de datos para almacenar y administrar datos en su sitio en este caso usaremos MySQL.

sudo apt install mysql-server
sudo mysql_secure_installation

el comando mysql_secure_installation ejecuta un script que nos ayuda a mejorar la seguridad de nuestra instalacion de nuestra base de datos. El cual nos ayuda a configurar ciertos parámetros de seguridad como ser:

  • VALIDATE PASSWORD PLUGIN – permite solo poner contraseñas seguras a los usuarios.
  • password validation policy – nivel de seguridad de las contraseñas Low = 0, Medium = 1, Strong = 2. (Medium y Strong requieren usar mayúsculas, numeros y caracteres especiales.).
  • Password Root – Definir la contraseña root de MySQL
  • Anonymous user – Y o S para eliminar acceso anónimas a MySQL
  • Remote login root – Y o S para desabilitar acceso root remoto.
  • BDTest – Y o S para eliminar Base de Datos de prueba.

Instalar PHP y configurar Nginx para usar PHP

Ahora se debe instalar PHP para generar el contenido del futuro sitio web

sudo add-apt-repository universe

el repositorio universe de Ubuntu incluye software gratuito y de código abierto mantenido por la comunidad de Ubuntu.

sudo apt install php-fpm php-mysql

php-fpmyphp-mysql permitirán a PHP comunicarse con su base de datos

Configurar Nginx para usar PHP para contenido dinámico

sudo nano /etc/nginx/sites-available/ejemplo.com
server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name ejemplo.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

Funciones de las directivas:

  • listen – Define en qué puerto escuchará Nginx. En este caso, escuchará en el puerto 80, el puerto predeterminado para HTTP.
  • root – Define la raíz del documento donde se almacenan los archivos servidos por el sitio web.
  • index – Configura Nginx para priorizar los archivos de servicio nombrados index.php cuando se solicita un archivo de índice, si están disponibles.
  • server_name – Define qué bloque de servidor se debe usar para una solicitud dada a su servidor. Apunte esta directiva al nombre de dominio o la dirección IP pública de su servidor.
  • location / – El primer bloque de ubicación incluye una try_files directiva, que verifica la existencia de archivos que coincidan con una solicitud de URI. Si Nginx no puede encontrar el archivo apropiado, devolverá un error 404.
  • location ~ \.php$ – Este bloque de ubicación maneja el procesamiento real de PHP al señalar Nginx al archivo de configuración fastcgi-php.conf y al archivo php7.2-fpm.sock, que declara a qué socket está asociado php-fpm.
  • location ~ /\.ht – El último bloque de ubicación se ocupa de los archivos .htaccess , que Nginx no procesa. Al agregar la directiva deny all , si algún archivo .htaccess encuentra su camino hacia la raíz del documento, no se entregará a los visitantes.

Crear Enlaces simbólicos

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default

Nota: Si se necesita poner la configuración por defecto nuevamente:

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

Pruebe su nuevo archivo de configuración

sudo nginx -t

Volver a cargar Nginx

sudo systemctl reload nginx

Probar la configuración de PHP

hasta este punto LEMP deberia estar configurado, para probarlo y validar que Nginx puede entregar correctamente los archivos de extensión .php

Crear archivo info.php

sudo nano /var/www/html/info.php
<?php
phpinfo();

Visitar la pagina web del archivo recién creado http://IP_Servidor/info.php en la cual debería ver una pagina web generada por PHP.

Con el paso anterior se comprueba que Nginx funciona correctamente con PHP y que esta listo para subir o desarrollar la pagina web que usara este servicio. Como este archivo se usa de prueba se elimina con el siguiente comando:

sudo rm /var/www/html/info.php

Aquí termina esta entrada espero que les sea de utilidad y aclare tus dudas. pronto habrá una próxima entrada con mas noticias, novedades y laboratorios.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *