¿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.