banner logo of full name of the blog, The Roxs Dev

Ejercicio-1 Linux y Automatización

A devops portal to explore.

Con el team 295, la automatización dejará de ser manual, repetitivo y propenso a errores y se volverá rápido y seguro.

Sobre DevOps Travel

  • Los usuarios pueden reservar paquetes fácilmente a través de esta plataforma fácil de usar en la ubicación deseada.
  • El sitio web front-end está creado utilizando HTML CSS y JavaScript.
  • Este sitio web se hace flexible y responsivo.
  • El Backend de este sitio web está realizado utilizando base de datos php y MySQL.
  • El sitio web se ejecuta en el servidor Apache.

Alt Text

Sobre la Arquitectura

En el diagrama de arquitectura, los usuarios inician una solicitud HTTP accediendo a la aplicación a través del navegador utilizando "localhost" o la dirección IP del servidor. El servidor, con Apache instalado, responde entregando el archivo a los usuarios, solicitándoles que completen sus datos, incluido su nombre, correo electrónico y descripción.

Al completar el formulario, los usuarios envían los datos al servidor. Luego, Apache reenvía los datos enviados a un script PHP responsable de almacenar esta información en la base de datos MySQL. Si los datos se almacenan correctamente, MySQL comunica este éxito al script PHP, que responde con un mensaje HTML que se muestra en el navegador del usuario. Por otro lado, si hay un problema al guardar los datos, el script PHP devuelve un mensaje de error al navegador del usuario, notificándole el problema encontrado.

Esta sólida arquitectura garantiza un flujo fluido de datos entre los usuarios, Apache, PHP y MySQL, proporcionando una experiencia de usuario fluida y una gestión de datos confiable.

Alt Text

Diagrama de la Aplicación

Incluye los accesos principales

  • Home Page
  • Gallery
  • Package
  • Booking

Alt Text

De que se trata el desafío

Se debe crear un script en bash que permita instalar la web, la base de datos, el servidor Apache sobre linux [ubuntu] todo lo necesario para desplegar la web en el servidor. esta estrategia de enfoque es una arquitectura LAMP

"LAMP" es un conjunto de aplicaciones de software de código abierto que se suelen instalar juntas para que un servidor pueda alojar aplicaciones y sitios web dinámicos escritos en PHP. Este término es en realidad un acrónimo que representa al sistema operativo Linux, con el servidor web Apache. Los datos del sitio se almacenan en una base de datos MySQL y el contenido dinámico se procesa mediante PHP.

Las letras en LAMP representan:

  • Linux: El sistema operativo en el que se ejecutarán las aplicaciones web. Linux es una opción popular debido a su estabilidad y escalabilidad.
  • Apache: El servidor web. Apache es uno de los servidores web más utilizados en el mundo y es conocido por ser confiable y altamente configurable.
  • MySQL: El sistema de gestión de bases de datos relacional. MySQL se utiliza para almacenar y administrar los datos de la aplicación web.
  • PHP (o a veces, Perl o Python): El lenguaje de programación utilizado para desarrollar la lógica de la aplicación web. PHP es el lenguaje más comúnmente asociado con LAMP, pero en algunos casos se pueden usar Perl o Python.

Sistema Operativo: Ubuntu

A tomar en cuenta!!!

  • Nombre del script lo escogen el team un ejemplo "deploy.sh" ó "grupo1-deploy.sh"
  • Recuerden dar permiso de ejecucion para poder ejecutarlo como ./deploy.sh
  • El script debe evaluar que solo el usuario root pueda correr el script o que valida el superusuario "sudo" antes de correr el script
  • Debe permitir evaluar si existe los paquetes como [git, php, apache, mariadb] para evitar reinstalación y caída de la aplicación
#ejemplo:  
#si instalo git 
sudo apt install -y git
#en la proxima ejecucion deberia decir que 
ya existe git y evitar reinstalar
Tips: pueden usar condicionales como "if"
  • La carga de la base de datos se incluye en el flujo, creacion de usuarios etc
  • Se debe automatizar que se pueda agregar el pass de la base de datos al momento de ejecutar el script asi evitamos que datos sensibles queden en el repositorio
  • se debe testear el php
  • Importante se debe Configurar apache para que soporte extensión php, en el repositorio estan los pasos.
  • Se recomienda renombrar en index.html default de apache para que no pise con el index.php
  • Se debe realizar el copiado en la ruta donde se guarda los archivos estaticos apache /var/www/html
  • el script debe permitir evaluar la existencia del proyecto, si existe un git pull y si no existe un git clone
  • revisar la ingesta de datos en la base de datos

Base de datos

Alt Text

Resumen

Este será el flujo que debe tener el script

STAGE 1: [Init]

  • Instalacion de paquetes en el sistema operativo ubuntu: [apache, php, mariadb, git, curl, etc]
  • Validación si esta instalado los paquetes o no , de manera de no reinstalar
  • Habilitar y Testear instalación de los paquetes

STAGE 2: [Build]

  • Clonar el repositorio de la aplicación
  • Validar si el repositorio de la aplicación no existe realizar un git clone. y si existe un git pull
  • Mover al directorio donde se guardar los archivos de configuración de apache /var/www/html/
  • Testear existencia del codigo de la aplicación
  • Ajustar el config de php para que soporte los archivos dinamicos de php agregando index.php
  • Testear la compatibilidad -> ejemplo http://localhost/info.php
  • Si te muestra resultado de una pantalla informativa php , estariamos funcional para la siguiente etapa.

STAGE 3: [Deploy]

  • Es momento de probar la aplicación, recuerda hacer un reload de apache y acceder a la aplicacion DevOps Travel
  • Aplicación disponible para el usuario final.

STAGE 4: [Notify]

  • El status de la aplicacion si esta respondiendo correctamente o esta fallando debe reportarse via webhook al canal de discord #deploy-bootcamp
  • Informacion a mostrar : Author del Commit, Commit, descripcion, grupo y status

Alt Text

Consideraciones

  • En el repositorio estaran descrito los pasos manuales , ustedes tienen automatizarlo
  • superen sus limites, y apoyense en equipo

Tips

  • Muy importante revisar el estado de funcionamiento de php y base de datos

Alt Text

Notify

  • Usaran un webhook de discord de nuestro canal para enviar las notificaciones de despliegue del script

Alt Text

Documentación Complementaria:

Cómo instalar la pila Linux, Apache, MySQL y PHP (LAMP) en Ubuntu 20.04

How To Install MariaDB on Ubuntu 20.04

Guía de referencia de MySQL

[El comando sed de Linux: usos y ejemplos] (https://www.hostinger.com.ar/tutoriales/el-comando-sed-de-linux-usos-y-ejemplos/)

40 Comandos básicos de Linux que todo usuario debe saber

© by RoxsRoss 2023 | All Rights Reserved


Sobre la entrega 🚀🚀🚀

Repositorio ejercicio 1 IV Edición Bootcamp DevOps by RoxsRoss Reto-Ejecicio1

Formulario de Entrega here

Fecha de Entrega: [En 15 Días]

Importante: tomate el tiempo disfruta el aprendizaje en caso de no poder llegar a los tiempos no te preocupes, yo te espero. "Pero Intentalo"

No se puede crecer si no estas dispuesto a saltar a la zona del peligro 🔥!