Implantación de Aplicaciones Web
José Juan Sánchez Hernández
Curso 2024/2025
En esta práctica tendremos que crear una instancia EC2 en Amazon Web Services (AWS) con la última versión de Ubuntu Server, e instalar todos los paquetes necesarios para tener una pila LAMP y todas las herramientas adicionales que hemos estudiado en el apartado de teoría de esta práctica.
Deberá automatizar el proceso de instalación y configuración de la pila LAMP, haciendo uso de todos los scripts de Bash que sean necesarios para llevarlo a cabo.
En esta práctica vamos a trabajar con una arquitectura web basada en un único servidor.
Ventajas:
Inconvenientes:
Tendremos que realizar la instalación de la pila LAMP para el sistema operativo Ubuntu Server, que se estará ejecutando en una instancia de EC2 de Amazon Web Services (AWS).
A continuación se describen muy brevemente algunas de las tareas que tendrá que realizar.
Crea una máquina instancia EC2 en AWS.
La Amazon Machine Image (AMI) que vamos a seleccionar para esta práctica será una Community AMI con la última versión de Ubuntu Server.
Cuando esté creando la instancia deberá configurar los puertos que estarán abiertos para poder conectarnos por SSH y para poder acceder por HTTP/HTTPS.
Crea un par de claves (pública y privada) para conectar por SSH con la instancia. También puedes hacer uso de las claves que te proporciona AWS Academy (vockey.pem).
Crea una dirección IP elástica y asígnala a la instancia EC2.
Realice la instalación automática de la pila LAMP y todas las herramientas adicionales propuestas en la instancia EC2.
Busque cuál es la dirección IP elástica de su instancia y compruebe que puede acceder a ella desde una navegador web.
Deberá crear un repositorio en GitHub con el nombre de la práctica y añadir al profesor como colaborador.
El repositorio debe tener el siguiente contenido:
Además del contenido anterior puede ser necesario crear otros archivos de configuración. A continuación se muestra un ejemplo de cómo puede ser la estructura del repositorio:
.
├── README.md
├── conf
│ └── 000-default.conf
├── htaccess
│ └── htaccess
├── php
│ └── info.php
└── scripts
├── .env
├── install_lamp.sh
└── install_tools.sh
El documento técnico README.md
tiene que estar escrito
en Markdown y debe
incluir como mínimo los siguientes contenidos:
Descripción de la instalación de Apache HTTP Server, PHP, MySQL Server en la última versión Ubuntu Server.
Descripción de la instalación de phpMyAdmin.
Descripción de la instalación de Adminer.
Instalación del analizador de logs GoAccess para Apache Server.
Cada descripción debe ir acompañada de alguna/s captura/s de pantalla, donde se pueda ver claramente los pasos que se han llevado a cabo.
El directorio scripts
debe incluir los siguientes
archivos:
.env
: Este archivo contiene todas las variables de
configuración que se utilizarán en los scripts de Bash.
install_lamp.sh
: Script de Bash con la
automatización del proceso de instalación de la pila LAMP.
install_tools.sh
: Script de Bash con la
automatización del proceso de instalación de las herramientas
adicionales.
Como actividad de ampliación se propone:
.env
?Los archivos .env
son archivos de texto que se suelen
utilizar para almacenar variables de entorno con información sensible,
com contraseñas, claves de API, etc.
Estos archivos no se deberían subir a un repositorio público, porque cualquier persona podría acceder a ellos y obtener las contraseñas que contienen.
Paso 1. Crear un archivo .gitignore
en
el repositorio.
Para evitar que estos archivos se guarden en el repositorio poemos
crear un archivo .gitignore
en la raíz de nuestro
repositorio y añadir el nombre del archivo que no queremos tener bajo el
control de versiones, que en este caso es el archivo
.env
.
.env
Paso 2. Crear un archivo .env.example
y
añadirlo al repositorio.
Podemos crear un archivo .env.example
y añadirlo al
repositorio. Este archivo almacenará todas las variables que se tienen
que configurar en el archivo .env
, pero estarán sin
inicializar.
Ejemplo:
PHPMYADMIN_APP_PASSWORD=
APP_USER=
APP_PASSWORD=
STATS_USERNAME=
STATS_PASSWORD=
De esta forma, cuando alquien quiera desplegar el proyecto que
contiene el repositorio, sólo tendrá que copiar el archivo
.env.example
, renombrarlo a .env
y actualizar
las variables de entorno con los valores correctos.
Para gestionar estas variables en un entorno de producción existen varias soluciones:
Esta
página forma parte del curso
Implantación de Aplicaciones
Web de José Juan Sánchez
Hernández y su contenido se distribuye bajo una
licencia
Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0
Internacional.