Examen 3: Implementación de un sitio web de producción#


Objetivos#

  • Instalación y configuración de un servidor de aplicaciones
  • Creación del VirtualHost para la aplicación web
  • Instalación de una aplicación web y configuración de ambiente productivo
  • Instalación y configuración de la base de datos
  • Configuración de características adicionales en el ambiente productivo

Elementos de apoyo#


Páginas de manual de Apache HTTPD

Restricciones#

Danger

  • La evaluación de esta actividad corresponderá al tercer examen parcial del curso

Warning

  • Esta actividad depende de los recursos implementados en la práctica 8 y práctica 9
  • Se recomienda que se realicen las actividades previas siguiendo la calendarización con el objeto de dejar suficiente tiempo para la elaboración de este examen práctico
  • La fecha límite de entrega es el martes 23 de mayo de 2023 a las 23:59 horas
  • Esta actividad debe ser entregada en equipo de acuerdo al flujo de trabajo para la entrega de tareas y prácticas
    • Utilizar la carpeta docs/examenes/examen-web/Equipo-ABCD-EFGH-IJKL-MNOP para entregar la práctica
    • Donde Equipo-ABCD-EFGH-IJKL-MNOP representa el nombre del equipo que debió anotarse previamente en la lista del grupo
    • Hacer un merge request a la rama examen-web del repositorio de tareas para entregar la actividad
  • No se permite tener proyectos repetidos. Revisar los requerimientos de la aplicación o sistema elegido para seleccionar la base de datos y motor de caché en memoria (si aplica).

Instalación de una aplicación web en un ambiente productivo#

Tabla de definición de proyectos#

# Sistema Motor PHP Base de datos Característica
1
Característica
2
Característica
3
1 WordPress PHP Debian FPM MariaDB Debian WP Offload Media Lite (S3) (Ninguno) Correo AWS SES
2 WordPress PHP Debian mod_php MariaDB 10.11 APT wp-cli Instalador (bash) Correo AWS SES
Postfix
3 WordPress PHP Sury FPM MariaDB Debian wp-cli CRON respaldo rclone Correo AWS SES
Postfix
4 WordPress PHP Sury FPM MariaDB Debian Memcache / Redis Caché PHP:
APC / APCu
Correo AWS SES
5 WordPress PHP Sury FPM MariaDB 10.11 APT wp2static / WP Super Cache / Simply Static Caché PHP:
Zend OPcache
Correo AWS SES
6 WordPress PHP Sury FPM MySQL Community 8.0 APT Aplicación móvil Monitoreo externo Correo AWS SES
7 WordPress PHP Sury mod_php MariaDB 10.11 APT Bitácoras SYSLOG NewRelic PHP Correo AWS SES
Postfix
8 WordPress PHP Debian mod_php MySQL Community 8.0 APT Multi-sitio Autenticación digest
para wp-admin
Correo AWS SES
9 WordPress PHP Debian mod_php MariaDB Debian CloudFlare CAPTCHA / 2FA Correo AWS SES
10 WordPress PHP Debian mod_php MariaDB Debian WebMin VirtualMin Correo AWS SES
11 WordPress PHP Debian FPM MySQL Community 8.0 APT vHost para PHPMyAdmin con autenticación htpasswd Replicación MySQL Correo AWS SES

Warning

Tabla de asignación de equipos#

# Equipo Dominio DNS
1 Equipo-AVJA zinclemonade.me
2 Equipo-AGKI-BHD-DTGM-NJMR-SVEL AGKI-BHD-DTGM-NJMR-SVEL.me
3 Equipo-GCJ-MAVF-RGA-YZJP jpyamamoto.com
4 Equipo-DAE-RMDE-ZCDA-NVR-VMJM equipo-dae-rmde-zcda-nvr-vmjm.tech
5 Equipo-BRRA-GTHL-MMM-OGA-VGM boruroad.me
6 Equipo-NNA-PSJ-RFOD-RRI redeslocas.rocks
7 Equipo-AGR-HADB-HJFD-TEJC saquenelfortnite.games
8 Equipo-AAR-ATDI-BME-DAAV-LMAM waningnew.me
9 Equipo-ACAA-MPKA-PMJM-RRSA-VGI merino.codes
10 Equipo-CCU-MGR-PCES-RSGA redes-urgs.me
11 Equipo-ANLE-GGJ-GVII-LPEE-SCMA iangarcia.me

Procedimiento#

  • Instalar y configurar la aplicación web para que se conecte a la base de datos y que utilice la configuración solicitada de PHP

  • Montar la aplicación en el directorio /opt/wordpress

  • Crear un VirtualHost que responda al dominio proyecto.example.com y que sirva únicamente para redireccionar las peticiones HTTP y HTTPS al dominio aplicacion.example.com.

  • Configurar el VirtualHost de la aplicación para que responda en el dominio aplicacion.example.com

  • No utilizar los VirtualHosts predeterminados ni ningún otro que se haya creado en la práctica 9 para HTTP ni HTTPS

    Note

    Los sitios estáticos creados en la práctica 9 deben seguir funcionando

  • El sitio debe tener un certificado wildcard SSL emitido por Let's Encrypt y se debe utilizar el mismo nombre de dominio que en la práctica 9

  • El sitio debe hacer redirección de todas las peticiones HTTP hacía su versión en HTTPS

    • Se pueden usar redirecciones estándar 301 y 302 de HTTP

    • Utilizar la directiva Redirect o la configuración de mod_rewrite (pero no ambas porque son excluyentes entre si)


Envío de correo electrónico a través de un relay#

Se utilizará el relay de correo de AWS SES para el envío de correo electrónico a través del protocolo SMTP

Se mencionará a los alumnos la opción que deben implementar:

Danger

Las credenciales de SMTP e información de S3 están en la carpeta compartida de Google Drive


Entregables#

Reporte#

Hacer un tutorial que explique cómo se implementó el sitio web asignado:

  • Explicar brevemente la instalación del stack web en la máquina virtual de la nube:

    • Registros DNS
    • VirtualHost de Apache HTTPD
    • Instalación y configuración de PHP
    • Instalación y configuración de MySQL/MariaDB
  • Especificar DETALLADAMENTE cómo se implementaron las características adicionales en la instalación de WordPress.

  • Explicar brevemente cómo se configuró el envío de correo a través de AWS SES ya sea en Postfix o directamente en WordPress.

Note

  • Subir las imagenes necesarias al directorio img

Archivos adjuntos#

Subir a la carpeta compartida de Google Drive los siguientes archivos de respaldo que sustentan el trabajo elaborado en el desarrollo del proyecto:

  • Par de llaves SSH con las que se accedió al servidor en un archivo TAR (archivos equipo_redes_rsa y equipo_redes_rsa.pub)

  • Lista de usuarios y contraseñas para acceder a la aplicación web, base de datos y demás, en un archivo de texto llamado accesos.txt

  • Archivo TAR con el respaldo del directorio /etc/letsencrypt donde está el certificado y llave privada que utilizan los sitios web hospedados

  • Respaldo de configuraciones de todo el servidor en un archivo TAR (directorio /etc)

  • Respaldo de configuraciones de Apache HTTPD en un archivo TAR (directorio /etc/apache2)

  • Respaldo de configuraciones de MySQL/MariaDB en un archivo TAR (directorio /etc/mysql o /etc/mariadb)

  • Respaldo de configuraciones de PHP en un archivo TAR (directorio /etc/php o /etc/php-fpm)

  • Respaldo de bitácoras del sistema en un archivo TAR (directorio /var/log)

  • Respaldo de la aplicación web en un archivo TAR (directorio /opt/wordpress)

  • Respaldo de la base de datos utilizada en formato SQL comprimido con gzip, bzip2 o 7zip

Otros archivos adjuntos#

Subir los siguientes archivos si es que aplican para el proyecto que fue asignado:

  • Respaldo del bucket de S3 en formato TAR

  • Archivo del script de instalación escrito en bash

  • Archivo del script de respaldo y configuración de CRON para respaldos

  • Respaldo del sitio web estático en un archivo TAR (directorio /opt/estatico)

  • Respaldo de la configuración de rsyslog

  • Respaldo de la configuración de NewRelic para PHP

  • Respaldo de los archivos de autenticación para Apache HTTPD generados con htpasswd(1) y/o htdigest(1)

  • Respaldo de la aplicación web PHPMyAdmin en un archivo TAR (directorio /opt/phpmyadmin)

  • Respaldo de la configuración de WebMin y VirtualMin

  • Configuración de replicación para MySQL/MariaDB


Extra#

  • Implementar HTTP Strict Transport Security (HSTS) en las cabeceras del sitio para forzar a que se pida el contenido del sitio a través de HTTPS

    • Establecer estas configuraciones en los VirtualHosts de la aplicación para evitar conflictos con la configuración de los otros VirtualHosts de los demás sitios implementados en las prácticas anteriores

    • Establecer un timeout bajo de entre 60 y 300 segundos para probar que HSTS funciona

    • Probar esta configuración en el VirtualHost de HTTP y HTTPS para ver la configuración que se debe dejar

    • Deshabilitar la redirección de HTTP a HTTPS si se está habilitando HTTP Strict Transport Security (HSTS)

  • Implementar la cabecera X-Robots-Tag para evitar que los motores de búsqueda indexen el sitio


Notas adicionales#

  • No se aceptan instalaciones que provengan de scripts que automaticen el proceso, ni de soluciones todo en uno (one click install)

  • Redacte un reporte por equipo, en el que consigne los pasos que considere necesarios para explicar cómo realizó el proyecto, incluya capturas de pantalla que justifiquen su trabajo

  • Incluya en su reporte un apartado de conclusiones referentes al trabajo realizado

  • Puede agregar posibles errores, complicaciones, opiniones, críticas de el proyecto, o cualquier comentario relacionado

  • Entregue su reporte de acuerdo a la forma de entrega de tareas y prácticas definida al inicio del curso