Cómo instalar LEMP (Linux, Nginx, MySQL, PHP) en Ubuntu 16.04

Como instalar Linux, Nginx, MySQL, PHP (LEMP stack) en Ubuntu

Se denomina LEMP a un grupo de software de código abierto que se instalan en un servidor para alojar sitios y aplicaciones web dinámicas. El término es el acrónimo que representa un sistema operativo Linux con un servidor Nginx, con almacenamiento en una base de datos MySQL y de contenido dinámico procesado con PHP. En esta guía te mostraré cómo instalar LEMP en un servidor con Ubuntu 16.04.

Pre-requisitos

Antes de comenzar, debes tener configurada una cuenta de usuario con privilegios administrativos en un servidor con Ubuntu 16.04. Puedes aprender cómo configurar este tipo de usuario siguiendo los pasos del tutorial: Configuración inicial del servidor de Ubuntu. Una vez que tengas el usuario configurado estás listo para seguir los siguientes pasos.

Instalar Nginx

Nginx es un moderno y eficiente servidor web que te permitirá mostrar las páginas web de tu sitio a los diferentes visitantes.

Si es la primera vez que usas la sesión debes comenzar actualizando la base de datos de paquetes del servidor y luego instalar Nginx:

En Ubuntu 16.04, Nginx es configurado para comenzar a funcionar al terminar la instalación. Si estás utilizando el firewall ufw, que recomendamos en el tutorial de la configuración inicial, debes permitir las conexiones de Nginx. Para hacerlo basta con teclear en la consola:

Puedes verificar que en efecto el firewall esta permitiendo las conexiones del servidor así:

Para comprobar que Nginx está instalado y corriendo debes escribir la dirección IP pública de tu servidor en tu navegador web. Si no sabes cuál es la dirección IP pública de tu servidor puedes utilizar este tip para encontrarla.

Página de bienvenida de Nginx

Página de bienvenida de Nginx

Si puedes ver una página similar a la de la imagen has instalado Nginx correctamente.

Instalar MySQL

Ya tienes el servidor web configurado y corriendo, ahora debes instalar MySQL. Este software, se encarga de gestionar, organizar y facilitar el acceso a las bases de datos en tu servidor. Toda la información de tus sitios será guardada en una de estas bases de datos. Para instalarlo teclea lo siguiente:

Durante la instalación, el servidor te pedirá que selecciones y confirmes una contraseña para el usuario “root” de MySQL. Esta es una cuenta administrativa en MySQL con privilegios aumentados. Esta cuenta es similar a la cuenta de “root” para el propio servidor (sin embargo, la que estamos configurando ahora es una cuenta específica de MySQL).

Una vez completada la instalación, debes ejecutar algunos comandos adicionales para configurar y asegurar tu servidor MySQL:

Configurar y asegurar la instalación de MySQL

Debes ejecutar el script de seguridad para eliminar algunas configuraciones peligrosas por defecto y bloquear un poco el acceso al servidor de base de datos. Ejecuta el script escribiendo el siguiente comando:

Lo primero que te pedirá este script será introducir la contraseña establecida para la cuenta root de MySQL y luego te preguntará si quieres configurar el plugin VALIDATE PASSWORD PLUGIN.

¿Qué hace realmente el script de seguridad?

El script de seguridad impedie que el servidor MySQL acepte aquellas contraseñas consideradas como no seguras. Si la contraseña no cumple con los requisitos de la validación, será rechazada con un error.

En caso de responder “y” verás algo como esto:

Selecciona el nivel de seguridad asociado a las contraseñas teniendo en cuenta las consideraciones comentadas anteriormente, donde “0”es el nivel más leve y “2” es el más fuerte.

A continuación, te preguntará si deseas cambiar la contraseña de root. Si deseas mantener tu contraseña, escribe “n” de “no”. Para el resto de las preguntas, puedes pulsar “y” y luego “ENTER” para aceptar los valores predeterminados.

En este punto, el sistema de gestión de bases de datos está instalado y configurado y puedes seguir adelante.

Instalar PHP

Ya has logrado instalar Nginx para servir las páginas web y MySQL para guardar y administrar las bases de datos. Sin embargo, aún no tienes ningún software que genere el contenido dinámico. Es hora de instalar PHP para que se encargue de esto.

Nginx no contiene un procesador de PHP nativo, por lo cual debes instalar php-fpm y decirle al servidor web que pase todas las llamadas PHP a este software. Puedes instalar php-fpm y aprovechar este mismo paso para instalar un paquete de ayuda que le permita a PHP comunicarse con MySQL. Ejecuta el siguiente comando en la consola:

Configurar el procesador de PHP

Ya tienes instalado los componentes necesarios. Ahora es preciso hacer algunos cambios en la configuración para hacer la instalación mucho más segura.

Abre el archivo de configuración de php-fpm en un editor de texto. Yo utilizaré el editor nano por comodidad, pero puedes usar el que desees.

Lo que debes buscar en este archivo es el parámetro cgi.fix_pathinfo. Por defecto esta opción viene comentada (“;”) y su valor es “1”. Eso es extremadamente inseguro, ya que esa opción le indica a PHP que ejecute cualquier archivo que encuentre en caso de no existir el archivo que se le pide al servidor. En otras palabras, implica darles la posibilidad a los usuarios de ejecutar archivos PHP que no tengan permitido ejecutar.

Para deshabilitar esta opción debes buscar la propiedad, descomentarla (borrar el “;”) y ponerla a “0”. Debería quedar así:

Cierra y guarda el archivo cuando termines la edición (ctrl + x, luego “y" y luego ENTER).

Para que los cambios surtan efecto, es preciso que reinicies el procesador de PHP escribiendo:

Configurar Nginx para que utilice php-fpm

Lo que falta es decirle a Nginx que utilice el procesador de PHP para el contenido dinámico. Esto lo puedes hacer editando los bloques del servidor (estos son muy similares a los virtual hosts de Apache). Abre el archivo de configuración bloque por defecto de Nginx escribiendo:

El archivo de configuración que verás es muy similar a este (nota que te lo muestro sin comentarios):

Los cambios que debes hacer son los siguientes:

  • Primero debes agregar index.php como primer valor de la lista en la directiva index. Así los archivos index.php serán servidos cuando se llame al directorio.
  • Debes modificar la directiva server_name para que apunte a la dirección ip de tu servidor o a tu dominio.
  • Para poder utilizar el procesador de PHP debes descomentar el segmento del archivo que captura las peticiones PHP. Sería el bloque location ~\.php$.
  • También debes descomentar el bloque relacionado con los archivos .htaccessNginx no procesa estos archivos, por lo que es mejor evitar que se muestren por accidente.

Estos cambios están resaltados en el ejemplo que te muestro a continuación:

Cuando termines de modificar el archivo, salva y cierra para retornar a la consola.

Ahora debes comprobar que no existan errores de sintaxis en el archivo de configuración escribiendo:

Si te muestra algún error, edita nuevamente el archivo para corregirlo. Es indispensable que hagas esto antes de continuar.

Cuando esté listo, recarga Nginx para que todos los cambios surtan efecto:

Probar PHP en el Servidor Web

Tu ambiente LEMP ya está listo, solo te resta asegurarte de que Nginx está sirviendo correctamente los archivos .php. Para que php-fpm pueda interpretar el archivo, tienes que guardarlo en la raíz del servidor WEB. En Ubuntu 14.04 o superior, este directorio se encuentra en /var/www/html/.

Crea un nuevo archivo llamado info.php con un editor de texto:

Escribe o pega el siguiente código en el nuevo archivo. Esta función muestra información relevante sobre tu servidor:

Cuando termines guarda y cierra el archivo.

Puedes ahora probar si tu servidor web es capaz de visualizar el contenido generado por un script PHP. Para visualizar los resultados, solo tienes que escribir en la barra de direcciones de tu navegador web:

Si logras ver una página como esta, entonces Nginx está procesando los archivos .php como se esperaba:

Instalar LEMP, phpinfo ubuntu

Archivo de información de PHP

Después de verificar que Nginx sirve la página correctamente, es preciso que elimines este archivo, ya que este expone información sensible sobre tu servidor a los usuarios no autorizados. Siempre puedes regenerarlo si lo necesitas en un futuro. Para eliminar el archivo escribe lo siguiente:

Punto final

A partir de aquí, tienes muchas opciones para continuar. Básicamente has instalado una plataforma que te permitirá alojar la mayoría de los sitios y aplicaciones web existentes. Recuerda que hasta aquí, aún no hay nada que mostrar en tu servidor salvo la página de configuración de PHP.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja un comentario

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