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

Introducción

El conjunto de software LEMP es un grupo de software que se puede usar para mostrar páginas web dinámicas y aplicaciones web. Este es un acrónimo que describe un sistema operativo Linux, con un servidor web Nginx. Los datos de back-end se almacenan en MySQL y el procesamiento dinámico es manejado por PHP.

En esta guía, demostraremos cómo instalar un conjunto LEMP en un servidor Ubuntu 14.04. El sistema operativo Ubuntu se encarga del primer requisito. Describiremos cómo poner en funcionamiento el resto de los componentes.

Nota: el conjunto LEMP se puede instalar automáticamente en tu Droplet agregando un script a tus datos de usuario al iniciarlo. En internet puedes echar un vistazo a algún tutorial para obtener más información sobre los datos de usuario de Droplet.

Prerrequisitos

Antes de completar este tutorial, debes tener una cuenta de usuario no root regular en su servidor con privilegios sudo.

Una vez que tengas tu cuenta disponible, inicia sesión en tu servidor con ese nombre de usuario. Ahora estás listo para comenzar los pasos descritos en esta guía.

1. Instalar el servidor web Nginx

Para mostrar las páginas web a los visitantes de nuestro sitio, emplearemos Nginx, un servidor web moderno y eficiente.

Todo el software que obtendremos para este procedimiento provendrá directamente de los repositorios de paquetes predeterminados de Ubuntu. Esto significa que podemos usar el paquete apt de administración de paquetes para completar la instalación.

Dado que es la primera vez que utilizamos apt para esta sesión, debemos comenzar actualizando nuestro índice de paquetes locales. Luego podemos instalar el servidor:

En Ubuntu 14.04, Nginx está configurado para comenzar a ejecutarse después de la instalación.

Puedes probar si el servidor está activo y funcionando accediendo al nombre de dominio o la dirección IP pública de tu servidor en tu navegador web.

Si no tienes un nombre de dominio apuntado a tu servidor y no conoces la dirección IP pública de tu servidor, puedes encontrarlo escribiendo uno de los siguientes comandos en tu terminal:

O podrías intentar usar:

Prueba una de las líneas que muestra en tu navegador web. Debería llevarte a la página de inicio predeterminada de Nginx:

Si ves la página anterior, has instalado con éxito Nginx.

2. Instalar MySQL para administrar los datos del sitio

Ahora que tenemos un servidor web, necesitamos instalar MySQL, un sistema de administración de bases de datos, para almacenar y administrar los datos de nuestro sitio.

Puedes instalar esto fácilmente escribiendo:

Se te pedirá que proporciones una contraseña root (administrativa) para usar dentro del sistema MySQL.

El software de base de datos MySQL ya está instalado, pero su configuración aún no está completa.

Primero, debemos decirle a MySQL que genere la estructura de directorios que necesita para almacenar sus bases de datos e información. Podemos hacer esto escribiendo:

A continuación, querrás ejecutar un script de seguridad simple que te pedirá que modifiques algunos valores predeterminados inseguros. Comienza el script escribiendo:

Deberás ingresar la contraseña de root de MySQL que seleccionaste durante la instalación.

A continuación, te preguntará si deseas cambiar esa contraseña. Si estás satisfecho con tu contraseña de root de MySQL, escribe “N” para no y presiona “ENTER”. Posteriormente, se te solicitará que elimines algunos usuarios de prueba y bases de datos. Solo debes presionar “ENTER” a través de estas indicaciones para eliminar la configuración predeterminada insegura.

Una vez que el script ha sido ejecutado, MySQL está listo para funcionar.

3. Instalar PHP para procesar

Ahora tenemos Nginx instalado para mostrar nuestras páginas y MySQL instalado para almacenar y administrar nuestros datos, pero todavía necesitamos algo para conectar estas dos piezas y generar contenido dinámico. Podemos usar PHP para esto.

Dado que Nginx no contiene el procesamiento PHP nativo como otros servidores web, tendremos que instalar php5-fpm, lo que significa “administrador de procesos fastCGI”. Le diremos a Nginx que pase las solicitudes de PHP a este software para su procesamiento.

Podemos instalar este módulo y también tomaremos un paquete de ayuda adicional que permitirá que PHP se comunique con nuestra base de datos. La instalación extraerá los archivos básicos necesarios de PHP. Has esto escribiendo:

Configurar el procesador PHP

Ahora tenemos nuestros componentes PHP instalados, pero necesitamos hacer un pequeño cambio en la configuración para que nuestra configuración sea más segura.

Debes abrir el archivo principal de configuración php5-fpm con privilegios de root:

Lo que estamos buscando en este archivo es el parámetro que establece cgi.fix_pathinfo. Esto se comentará con un punto y coma (;) y se establecerá en “1” de manera predeterminada.

Esta es una configuración extremadamente insegura porque le dice a PHP que intente ejecutar el archivo más cercano que pueda encontrar si un archivo PHP no coincide exactamente. Básicamente, esto permitiría a los usuarios crear solicitudes de PHP de una manera que les permitiera ejecutar scripts que no se les debería permitir ejecutar.

Cambiaremos ambas condiciones al descomentar la línea y establecerla en “0” de esta manera:

Guarda y cierra el archivo cuando hayas terminado.

Ahora, solo necesitamos reiniciar nuestro procesador PHP escribiendo:

Esto implementará el cambio que hicimos.

4. Configurar Nginx para usar nuestro procesador PHP

Ahora, tenemos todos los componentes necesarios instalados. El único cambio de configuración que todavía tenemos que hacer es decirle a Nginx que use nuestro procesador PHP para contenido dinámico.

Hacemos esto en el nivel del server block (los server blocks son similares a los virtual hosts de Apache). Abre el archivo de configuración del server block de Nginx predeterminado escribiendo:

Actualmente, con los comentarios eliminados, el archivo de server block predeterminado de Nginx se ve así:

Necesitamos hacer algunos cambios en este archivo para nuestro sitio.

  • Primero, debemos agregar una opción index.php como el primer valor de nuestra directiva index para permitir que se muestren los archivos de índex PHP cuando se solicita un directorio.
  • También debemos modificar la directiva server_name para que apunte al nombre de dominio o la dirección IP pública de nuestro servidor.
  • El archivo de configuración real incluye algunas líneas comentadas que definen las rutinas de procesamiento de errores. Descomentaremos aquellos para incluir esa funcionalidad.
  • Para el procesamiento real de PHP, necesitaremos descomentar una parte de otra sección. También necesitaremos agregar una directiva try_files para asegurarnos de que Nginx no pase solicitudes incorrectas a nuestro procesador PHP.

Los cambios que debes realizar están en el texto a continuación:

Cuando hayas realizado los cambios anteriores, puedes guardar y cerrar el archivo.

Reinicia Nginx para hacer los cambios necesarios:

5. Crear un archivo PHP para probar la configuración

Tu conjunto LEMP debería estar ahora completamente configurado. Todavía debemos probar para asegurarnos de que Nginx pueda mostrar los archivos .php correctamente a nuestro procesador PHP.

Podemos hacer esto creando un archivo PHP de prueba en nuestra raíz de documentos. Abre un nuevo archivo llamado info.php dentro de la raíz de tu documento en tu editor de texto:

Podemos escribir esto en el nuevo archivo. Este es un código PHP válido que devolverá información formateada sobre nuestro servidor:

Cuando hayas terminado, guarda y cierra el archivo.

Ahora, puedes visitar esta página en tu navegador web visitando el nombre de dominio o la dirección IP pública de tu servidor, seguido de /info.php:

Deberías ver una página web generada por PHP con información sobre tu servidor:

Si ves una página que se muestra así, has configurado el procesamiento de PHP con Nginx con éxito.

Después de probar esto, probablemente sea mejor eliminar el archivo que creaste, ya que realmente puede dar a los usuarios no autorizados algunas ideas sobre tu configuración que pueden ayudarlos a intentar ingresar. Siempre puedes volver a generar este archivo si lo necesitas más adelante.

Por ahora, elimina el archivo escribiendo:

Conclusión

Ahora deberías tener un conjunto LEMP configurado en tu servidor Ubuntu 14.04. Esto te brinda una base muy flexible para mostrar contenido web a tus visitantes.