En este módulo, aprenderás cómo desplegar tu aplicación Flask en Amazon Web Services (AWS). AWS es una de las plataformas de nube más populares y ofrece una amplia gama de servicios que pueden ayudarte a escalar y gestionar tu aplicación web de manera eficiente.
- Configuración Inicial
1.1 Creación de una Cuenta en AWS
Antes de comenzar, necesitas una cuenta de AWS. Si no tienes una, puedes registrarte en AWS.
1.2 Instalación de AWS CLI
La AWS Command Line Interface (CLI) es una herramienta unificada para gestionar tus servicios de AWS. Puedes instalarla siguiendo las instrucciones en la documentación oficial.
# En macOS brew install awscli # En Windows choco install awscli # En Linux sudo apt-get install awscli
1.3 Configuración de AWS CLI
Después de instalar la CLI, configúrala con tus credenciales de AWS.
Se te pedirá que ingreses tu AWS Access Key ID
, AWS Secret Access Key
, Default region name
y Default output format
.
- Despliegue en EC2
2.1 Creación de una Instancia EC2
Amazon Elastic Compute Cloud (EC2) proporciona capacidad de computación escalable en la nube.
- Inicia sesión en la consola de AWS.
- Navega a EC2 y haz clic en "Launch Instance".
- Selecciona una Amazon Machine Image (AMI). Para este tutorial, usaremos Amazon Linux 2.
- Elige un tipo de instancia. La
t2.micro
es suficiente para aplicaciones pequeñas y está incluida en el nivel gratuito de AWS. - Configura los detalles de la instancia. Puedes dejar la configuración predeterminada.
- Agrega almacenamiento. La configuración predeterminada suele ser suficiente.
- Configura el grupo de seguridad. Asegúrate de permitir el tráfico HTTP (puerto 80) y SSH (puerto 22).
- Revisa y lanza la instancia. Se te pedirá que crees o selecciones un par de claves para conectarte a tu instancia.
2.2 Conexión a la Instancia EC2
Usa SSH para conectarte a tu instancia EC2.
2.3 Configuración del Servidor
Instala las dependencias necesarias en tu instancia EC2.
# Actualiza los paquetes sudo yum update -y # Instala Python3 y pip sudo yum install python3 -y # Instala virtualenv sudo pip3 install virtualenv
2.4 Despliegue de la Aplicación Flask
- Sube tu aplicación a la instancia. Puedes usar
scp
o cualquier otra herramienta de transferencia de archivos.
- Configura tu aplicación.
- Configura Gunicorn para servir tu aplicación.
2.5 Configuración de Nginx
Nginx actuará como un proxy inverso para Gunicorn.
# Instala Nginx sudo amazon-linux-extras install nginx1.12 -y # Inicia Nginx sudo service nginx start # Configura Nginx sudo vim /etc/nginx/nginx.conf
Agrega la siguiente configuración en el archivo nginx.conf
:
server { listen 80; server_name your-ec2-public-dns; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
Reinicia Nginx para aplicar los cambios.
- Conclusión
En este módulo, has aprendido cómo desplegar una aplicación Flask en AWS utilizando una instancia EC2. Has configurado el entorno, subido tu aplicación, y configurado Gunicorn y Nginx para servir tu aplicación. Este es un paso crucial para llevar tu aplicación a producción y hacerla accesible a los usuarios.
Resumen
- Configuración Inicial: Creación de cuenta en AWS, instalación y configuración de AWS CLI.
- Despliegue en EC2: Creación y configuración de una instancia EC2, instalación de dependencias, despliegue de la aplicación Flask.
- Configuración de Nginx: Configuración de Nginx como proxy inverso para Gunicorn.
Próximos Pasos
En el siguiente módulo, aprenderás sobre el monitoreo y la optimización del rendimiento de tu aplicación Flask en producción.
Curso de Desarrollo Web con Flask
Módulo 1: Introducción a Flask
- ¿Qué es Flask?
- Configuración de tu Entorno de Desarrollo
- Creando tu Primera Aplicación Flask
- Entendiendo la Estructura de una Aplicación Flask
Módulo 2: Conceptos Básicos de Flask
- Enrutamiento y Mapeo de URLs
- Manejo de Métodos HTTP
- Renderizando Plantillas con Jinja2
- Trabajando con Archivos Estáticos
Módulo 3: Formularios y Entrada de Usuario
Módulo 4: Integración de Bases de Datos
- Introducción a Flask-SQLAlchemy
- Definiendo Modelos
- Realizando Operaciones CRUD
- Migraciones de Base de Datos con Flask-Migrate
Módulo 5: Autenticación de Usuarios
- Registro de Usuarios
- Inicio y Cierre de Sesión de Usuarios
- Hashing de Contraseñas
- Gestión de Sesiones de Usuario
Módulo 6: Conceptos Avanzados de Flask
- Blueprints para Aplicaciones Grandes
- Manejo de Errores
- Páginas de Error Personalizadas
- Registro y Depuración
Módulo 7: APIs RESTful con Flask
- Introducción a las APIs RESTful
- Creación de Endpoints RESTful
- Manejo de Datos JSON
- Autenticación para APIs
Módulo 8: Despliegue y Producción
- Configuración de Flask para Producción
- Despliegue en Heroku
- Despliegue en AWS
- Monitoreo y Optimización del Rendimiento
Módulo 9: Pruebas y Mejores Prácticas
- Pruebas Unitarias con Flask
- Pruebas de Integración
- Cobertura de Pruebas
- Mejores Prácticas para el Desarrollo con Flask