Cómo instalar y configurar LEMP en Debian 8 (Jessie)


Una de las razones más comunes para configurar un sistema Linux es para alojar un sitio web. Según la encuesta de NetCraft.com de febrero de 2016 del millón de sitios web más concurridos del mundo, aproximadamente el 15,60% de ellos se ejecutan en Nginx.

Junto con la alta probabilidad de que se esté sirviendo algún tipo de contenido dinámico, así como algún tipo de back-end de base de datos para los sitios web, la capacidad de un administrador para configurar servidores LEMP es muy beneficiosa para quienes buscan trabajo y empleadores a-like!

Este tutorial explicará los conceptos básicos de la instalación y configuración de un servidor Linux (específicamente Debian 8 Jessie) para que funcione como un servidor LEMP.

¡Gran pregunta! Como ocurre con la mayoría de las cosas en el mundo de la informática, LEMP es el acrónimo de Linux, Nginx, MySQL y PHP.

Este acrónimo se usa comúnmente para hacer referencia a colecciones de software en un servidor web. Este tutorial primero lo guiará a través de la configuración de LEMP, específicamente MySQL y PHP.

Antes de separar los aspectos de configuración de los sistemas, es importante conocer Nginx.

Nginx comenzó su vida en 2002 cuando el mundo de la informática comenzó a darse cuenta de que los sitios web con diez mil o más conexiones simultáneas era una posibilidad muy real y, como resultado, Nginx se creó desde cero para abordar este problema.

Instalación y configuración de MySQL y PHP

1. Esta primera sección cubrirá Debian como servidor MySQL y PHP. ¡La parte Linux del servidor LEMP ya debería estar lista instalando Debian! Sin embargo, si se necesita una guía sobre cómo instalar Debian, lea el siguiente artículo sobre TecMint:

  1. Instalación de Debian 8 Jessie

Una vez que Debian esté listo para comenzar, el proceso de instalación del resto del software necesario se puede completar con un comando rápido usando el meta-empaquetador "apt".

# apt-get install mysql-server-5.5 php5-mysql php5

Según el hardware del sistema y la conexión a Internet, este proceso puede llevar algún tiempo. En el momento de escribir estas líneas, una nueva instalación de Debian Jessie con todas las actualizaciones aplicadas requería aproximadamente 70 MB de archivos de los repositorios (no es tan malo considerando lo que hará el servidor cuando se hagan las cosas). Durante el proceso de instalación, el sistema puede solicitar al usuario que establezca una contraseña de usuario raíz de SQL. Esto es diferente a la contraseña del usuario root real y, por motivos de seguridad, probablemente debería seguir siendo diferente.

2. Una vez que apt termine de instalar todo el software, los servicios básicos estarán en funcionamiento. Sin embargo, ¡detenerse aquí sería un tutorial muy corto! Así que profundicemos un poco más en la configuración de cada una de las piezas de software instaladas comenzando con MySQL.

3. Después de la instalación de MySQL, a menudo se recomienda que el servidor SQL realice algunas tareas básicas de mantenimiento en la instalación predeterminada. Esto se logra fácilmente con la utilidad mysql_secure_installation .

Este comando simplemente se ejecuta desde la línea de comandos y le pedirá al usuario que elimine elementos como usuarios anónimos, pruebas de bases de datos y elimine la capacidad de inicio de sesión de usuario raíz remoto en la base de datos SQL.

# mysql_secure_installation

Este comando iniciará un mensaje interactivo que hará preguntas sobre los temas anteriores. Dado que apt ya solicitó una contraseña de root de MySQL, será necesario ingresar esa contraseña para realizar cambios. Dado que la contraseña de root ya estaba configurada, No puede ser la respuesta a la pregunta sobre cómo cambiar la contraseña de root en el servidor MySQL.

4. El siguiente conjunto de preguntas se referirá a los usuarios anónimos, la base de datos de "prueba" y el acceso de root a la base de datos de forma remota. Por lo general, es seguro responder a todas estas preguntas, a menos que haya una razón en particular por la que la configuración necesite que una de estas opciones quede intacta.

NOTA: Puede haber un error por no eliminar una base de datos llamada "prueba", no se preocupe por esto, ya que la base de datos puede existir o no y, independientemente, el script continuará haciendo lo que se necesita.

En este punto, MySQL está listo para funcionar. Sin saber qué bases de datos o usuarios se necesitarán, es difícil realizar mucha más configuración. Sin embargo, la mayoría de los sitios web a menudo crean automáticamente las bases de datos y los usuarios necesarios cuando se instala el software. Sin embargo, esto depende mucho del software y requeriría un vistazo rápido a los archivos README del software o las instrucciones de instalación.

5. Ahora que MySQL está configurado, avancemos y configuremos algunas configuraciones básicas de PHP para este servidor en particular. Si bien hay toneladas de configuraciones que se pueden manipular para PHP, solo hay algunas básicas que casi siempre deben modificarse. El archivo de configuración php se encuentra en /etc/php5/fpm/php.ini . Abra este archivo con cualquier editor de texto.

# nano /etc/php5/fpm/php.ini

Usando las capacidades de búsqueda de nano ctrl+w busque la cadena "memory_limit" (omitiendo las comillas). En una instalación predeterminada, esta línea ya estará configurada en 128M, pero si una aplicación necesita más, esta línea se puede cambiar para adaptarse a los requisitos.

Otra opción importante para verificar es “max_execution_time” y nuevamente por defecto se establecerá en 30. Si una aplicación requiere más, esta opción puede cambiarse. Algunas personas prefieren también configurar el registro php en un archivo/directorio especial. Si esto fuera un requisito, busque la cadena "error_log u003d" y luego elimine el comentario de la línea eliminando el punto y coma que generalmente está allí de forma predeterminada.

En este punto, se puede agregar un valor para el archivo de registro al final de la línea. Asegúrese de que la ruta exista en el sistema. Una vez que haya terminado de realizar los cambios necesarios en el archivo php.ini, guarde los cambios y salga del editor de texto. En este punto, MySQL y PHP5 están listos para comenzar a alojar sitios. Ahora es el momento de configurar Nginx.

Instalación y configuración de Nginx

6. Nginx (motor X) es un servidor web alternativo y muy potente. Esta sección de este tutorial lo guiará a través de la configuración de una página web para que Nginx la aloje. El primer paso para configurar Nginx es instalar los paquetes necesarios usando la utilidad "apt".

# apt-get install nginx

Suponiendo que se satisfacen todas las dependencias, navegar a la dirección IP del servidor en un navegador web debería producir el sitio web predeterminado de Nginx.

NOTA: Hay casos en los que después de instalar Nginx, el servidor no se inicia automáticamente. Si navegar a la dirección IP del servidor en un navegador web no produce la página siguiente, emita el siguiente comando para asegurarse de que se inicie Nginx.

# service nginx start

Nginx ahora aloja con éxito la página predeterminada. Si bien la página predeterminada de Debian es un sitio web llamativo, la mayoría de los usuarios querrán alojar algo personalizado.

7. Los siguientes pasos lo guiarán a través de la configuración de Nginx para alojar un sitio web diferente. Nginx, al igual que Apache 2, tiene su propio directorio de configuraciones ubicado en /etc/nginx . Cambie a este directorio usando la utilidad cd.

# cd /etc/nginx

Para este tutorial, hay varios archivos y directorios importantes para configurar un sitio web usando Nginx. Los dos primeros directorios que son importantes son los directorios "sitios disponibles" y "sitios habilitados". Al igual que Apache 2, Nginx usa archivos de configuración para cada sitio en el directorio de sitios disponibles que, cuando están activos, están vinculados simbólicamente en el directorio de sitios habilitados.

Lo primero que se necesita para deshacerse del sitio predeterminado es eliminar el enlace simbólico en los sitios habilitados.

# rm sites-enabled/default

8. Ahora es necesario crear y vincular un nuevo archivo de configuración del sitio para que Nginx sirva la página. La creación del archivo de configuración del sitio se puede simplificar copiando y modificando la configuración predeterminada de los sitios.

# cp sites-available/default sites-available/tecmint-test

Esto creará un nuevo archivo de configuración del sitio para trabajar. Abra este archivo en un editor de texto para cambiar la ruta en la que Nginx entregará los archivos.

# nano sites-available tecmint-test

Dentro de este archivo hay varias opciones importantes para cambiar para que Nginx sirva a un sitio. La primera es la línea que comienza con "root", ya que esta línea define dónde Nginx debe entregar archivos para este sitio en particular.

Este tutorial lo dejará como el valor predeterminado de "/ var/www/html" y simplemente colocará los archivos html que se servirán en este directorio. Sin embargo, asegúrese de modificar esta ruta si va a haber varios sitios o una configuración personalizada en este servidor.

La siguiente línea de importancia es la línea "índice". Dado que este artículo trata sobre la instalación de LEMP y un sitio podría estar sirviendo páginas php, se debe informar a Nginx que la página predeterminada puede ser una página php. Para hacer esto, simplemente agregue "index.php" al final de la lista de archivos del índice.

Antes de habilitar el nuevo sitio, debe haber algo allí para que Nginx sirva. La página de índice predeterminada ya existe, pero para confirmar que otro sitio está funcionando, reemplacemos el contenido de la página predeterminada por algo más.

# echo “It's ALIVE!” > /var/www/html/index.html

9. El siguiente paso es habilitar el nuevo sitio vinculando el archivo de configuración recién creado al directorio habilitado para sitios. Esto se logra fácilmente con el uso del comando ln y luego volviendo a cargar la configuración de Nginx con la utilidad de servicio.

# ln -s /etc/nginx/sites-available/tecmint-test sites-enabled/tecmint-test
# service nginx reload

En este punto, Nginx debería ofrecer la nueva página web "simple". ¡Esto se puede confirmar navegando a la dirección IP del servidor a través de un navegador web!

Nuevamente, este artículo pretendía ser configuraciones muy simples de LEMP. La mayoría de los sitios requerirían una configuración adicional para todas las partes involucradas, pero las opciones de configuración podrían variar en miles. Mucha suerte en la configuración elegida para alojar sitios web.