Instalar nginx, MariaDB y PHP (LEMP) en Ubuntu 16.04

Instalar nginx, MariaDB y PHP (LEMP) en Ubuntu 16.04

LEMP es la combinación de software libre utilizada para proveer una infraestructura de servidores web, el acrónimo se refiere al uso de Linux como sistema operativo, nginx (pronunciado Engine X) como servidor web, MySQL/MariaDB como gestor de base de datos y PHP como lenguaje de programación.

Asumiendo que es en un servidor con Ubuntu 16.04 procederemos instalar y configurar los demás componentes. Todo el software necesario está disponible en los repositorios de Ubuntu, por lo que usamos apt para la instalación.

Requisitos previos:

Para proceder con las instrucciones es necesario tener acceso a una cuenta de usuario con privilegios de sudo en el sistema.

Paso1: Instalar nginx

Actualizamos el índice local de paquetes y luego instalamos el servidor web:

sudo apt update
sudo apt install nginx

Si el firewall ufw está habilitado se deben permitir las conexiones entrantes al servidor, nginx se registra durante la instalación por lo que el procedimiento es simple.

sudo ufw allow "Nginx Full"

Este comando permite el tráfico entrante a nginx en los puertos tanto para HTTP como para HTTPS. Una vez añadida la regla del firewall podemos apuntar el navegador web a la dirección IP del servidor, si se ve la página siguiente nginx fue instalado con éxito.

nginx está instalado!
nginx está instalado!

Paso 2: Instalar el gestor de bases de datos MariaDB

Con el servidor web instalado procedemos a instalar el sistema gestor de base de datos. Para instalar MariaDB primero se deben activar los repositorios Universe de Ubuntu y actualizar las listas de paquetes:

sudo add-apt-repository universe
sudo apt update

Y ejecutamos la instalación:

sudo apt install mariadb-server

MariaDB se ha instalado, pero aún su configuración no está completa. Para proteger la instalación ejecutamos un script que nos preguntará si queremos modificar las configuraciones inseguras:

sudo mysql_secure_installation
  • Nos pide nuestra contraseña de root, solo damos Enter
  • Aunque no es necesario, podemos cambiar la contraseña del usuario root
  • Las preguntas siguientes sólo damos [Y] y luego Enter para aceptar los valores recomendados

Listo! Con los pasos completados la instalación de MariaDB debería estar segura. Si necesitamos acceder al usuario [email protected] debemos hacerlo mediante sudo, para caso en los que el acceso remoto sea requerido se deberá agregar un usuario nuevo al que se le conceden solamente los permisos necesarios.

sudo mysql -u root

Paso 3: Instalar y configurar PHP

A diferencia de otros servidores web nginx no tiene procesamiento PHP nativo, debemos utilizar php-fpm, y configurar nginx para que envíe las solicitudes a este software para su procesamiento. También instalamos el módulo que permite a PHP comunicarse con el gestor de bases de datos.

sudo apt install php-fpm php-mysql

Configurar nginx para usar PHP

Con todos los componentes requeridos instalados el último cambio que falta es configurar nginx para que utilice el procesador de PHP para el contenido dinámico. Abrimos el archivo de configuración del bloque server por defecto:

sudo nano /etc/nginx/sites-available/default

Omitiendo los comentarios, el archivo se ve así:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name _;

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

Necesitamos hacer varios cambios a este archivo:

  • Primero agregamos index.php como primer valor de la directiva index
  • Para el procesamiento PHP descomentamos el segmento que maneja las solicitudes PHP. Esto sería el bloque location ~\.php$ la inclusión del snippet fastcgi-php.conf y el socket asociado con php-fpm.
  • También descomentamos el bloque que se refiere a archivos .htaccess nginx no procesa estos archivos y no deberían ser presentados a los usuarios
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name _;

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

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

    location ~ /\.ht {
        deny all;
    }

}

Comprobamos la configuración en caso de errores:

sudo nginx -t

Si no se reporta ningún error recargamos nginx con la configuración nueva:

sudo systemctl reload nginx

Crear un archivo .php para probar la configuración

El conjunto LEMP debería estar configurado apropiadamente para ejecutar archivos .php con el procesador PHP. Podemos probar la configuración creando el siguiente archivo en el directorio raíz:

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

Agregamos las siguientes líneas de código al archivo:

<?php
    phpinfo();

Apuntamos el navegador web a la dirección /info.php y podemos ver una página web generada por PHP con información sobre el servidor:

phpinfo.php

Después de verificar que nginx procesa la página correctamente es mejor remover el archivo recién creado para no dar a un usuario no autorizado indicios sobre cómo irrumpir en el servidor.

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

Ahora tenemos el conjunto de software LEMP configurado en el servidor de Ubuntu 16.04. Esto ofrece una base muy flexible para servir contenido web para los visitantes.


Also published on Medium.

Deja una respuesta: