Desplegar servidor web con Nginx, PHP y MySQL

—

por

En este laboratorio vamos a desplegar un servidor web completo utilizando:

  • Nginx como servidor HTTP.
  • PHP-FPM para ejecutar aplicaciones desarrolladas en PHP.
  • MySQL como sistema gestor de bases de datos.
  • Ubuntu Server como sistema operativo.

Además de realizar una instalación básica, aprenderemos a modificar las rutas predeterminadas utilizadas por los distintos servicios.

La estructura que utilizaremos será la siguiente:

/data/
├── mysql/
│   └── data/
├── web/
│   └── laboratorio/
│       ├── public/
│       ├── private/
│       ├── logs/
│       └── backups/
└── backups/
    └── mysql/

La web será accesible desde:

/data/web/laboratorio/public

Los datos de MySQL se almacenarán en:

/data/mysql/data

Esta separación permite que los datos importantes no dependan directamente de las rutas predeterminadas del sistema.


Objetivos

Al finalizar el laboratorio seremos capaces de:

  • Instalar Nginx, PHP-FPM y MySQL.
  • Crear un servidor virtual en Nginx.
  • Ejecutar archivos PHP desde Nginx.
  • Crear una base de datos y un usuario MySQL.
  • Conectar PHP con MySQL.
  • Cambiar la carpeta pública de una página web.
  • Cambiar el directorio de datos de MySQL.
  • Configurar correctamente propietarios y permisos.
  • Comprender la diferencia entre configuración, aplicación y datos.
  • Diagnosticar errores mediante logs y comandos del sistema.

Requisitos

Para realizar el laboratorio necesitaremos:

  • Ubuntu Server.
  • Acceso mediante SSH o consola.
  • Un usuario con permisos de sudo.
  • Al menos 2 GB de RAM.
  • Aproximadamente 10 GB de espacio libre.
  • Conectividad de red.

El laboratorio puede realizarse en:

  • Una máquina virtual.
  • Un servidor físico.
  • Una instancia VPS.
  • Un equipo de laboratorio.
  • Una Raspberry Pi con Ubuntu Server de 64 bits.
1 – Preparar el sistema 2 – Definir la estructura de directorios 3 – Instalar Nginx 4 – Configurar el cortafuegos 5 – Instalar PHP-FPM 6 – Preparar la página web 7 – Crear el servidor virtual de Nginx 8 – Resolver el nombre del laboratorio 9 – Configurar PHP en Nginx 11 – Comprobar el acceso a MySQL 12 – Crear la base de datos y el usuario 13 – Conectar PHP con MySQL 14 – Cambiar la ruta de una página web 15 – Permisos necesarios para una ruta web personalizada 16 – Cambiar el directorio de datos de MySQL 17 – Autorizar la ruta en AppArmor 18 – Comprobar restricciones de systemd 19 – Arrancar MySQL con la nueva ruta 20 – Eliminar la copia antigua 21 – Recuperar el directorio original 22 – Alternativa: utilizar un montaje bind 23 – Separar los logs de Nginx 24 – Rotación de logs personalizados 25 – Configuración básica de PHP 26 – Diagnóstico de problemas 27 – Comandos de comprobación final 28 – Estructura final 29 – Qué rutas conviene cambiar 30 – Consideraciones de seguridad 31 – Ejercicio propuesto Conclusión


archivos arranque backup buscar completa conexiones configuración copiar copias de seguridad cortafuegos cpu deshabilitar disco escaneo espacio espacio ocupado filtrar firewall habilitar herramienta incremental inicio interfaz lectura listar log mantenimiento monitorización monousuario patrones procesos pruebas ram recursos red redes seguridad servicios sincronización sockets tcp texto udp uso ver

  • grep

    El comando grep se utiliza para buscar patrones de texto dentro de archivos o en la salida de otros comandos en sistemas Unix y Linux.…

  • cp

    El comando cp se utiliza para copiar archivos y directorios en sistemas Unix y Linux. Proporciona una forma rápida de duplicar archivos y directorios en…

  • ls

    El comando ls se utiliza para listar el contenido de directorios en sistemas Unix y Linux. Proporciona una forma rápida de ver qué archivos y…