Práctica 1.1

Despliegue de Aplicaciones Web

José Juan Sánchez Hernández

Curso 2024/2025

1 Instalación de la pila LAMP en una instancia de OpenStack

En esta práctica tendremos que crear una instancia en OpenStack 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.

1.1 Arquitectura web con un único servidor

En esta práctica vamos a trabajar con una arquitectura web basada en un único servidor.

Ventajas:

Inconvenientes:

1.2 Tareas a realizar

Tendremos que realizar la instalación de la pila LAMP para el sistema operativo Ubuntu Server, que se estará ejecutando en una instancia de OpenStack.

A continuación se describen muy brevemente algunas de las tareas que tendrá que realizar.

  1. Crea una máquina instancia EC2 en AWS.

  2. 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.

  3. 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.

    • SSH (TCP)
    • HTTP (TCP)
    • HTTPS (TCP)
  4. 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).

  5. Crea una dirección IP elástica y asígnala a la instancia EC2.

  6. Realice la instalación automática de la pila LAMP y todas las herramientas adicionales propuestas en la instancia EC2.

  7. Busque cuál es la dirección IP elástica de su instancia y compruebe que puede acceder a ella desde una navegador web.

1.3 Entregables

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
│   └── index.php
└── scripts
    ├── .env
    ├── install_lamp.sh
    └── install_tools.sh

1.3.1 Documento técnico

El documento técnico README.md tiene que estar escrito en Markdown y debe incluir como mínimo los siguientes contenidos:

1.3.2 Scripts de Bash

El directorio scripts debe incluir los siguientes archivos:

1.3.3 Actividad de ampliación

Como actividad de ampliación se propone:

1.4 Anexo. ¿Cómo gestionar los archivos .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:

2 Referencias

3 Licencia

Licencia de Creative Commons
Esta página forma parte del curso Despliegue 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.