Sobre este proyecto
it-programming / web-development
Abierto
Contexto general del proyecto
Especificaciones para la Configuración de la Red Social Escalable en AWS. A continuación se presentan las especificaciones para configurar una red social utilizando HumHub en AWS. Esta configuración está diseñada para soportar 1,000 usuarios activos al mes con 100 usuarios en línea simultáneamente y permitirá escalar eficientemente hasta 50,000 usuarios sin necesidad de reconstruir la infraestructura. Se incluyen todas las correcciones propuestas y se utilizará Amazon RDS desde el inicio para la base de datos. ### 1. Arquitectura General - Servidor Web y Aplicación: Instancia EC2 (t3.small) con Ubuntu 22.04 LTS. - Base de Datos: Amazon RDS (MySQL 8.0 o MariaDB 10.5+). - Almacenamiento de Archivos: Amazon S3 para fotos de perfil y archivos subidos. - Sesiones y Caché: Inicialmente en la base de datos, con preparación para integrar Redis (ElastiCache) en el futuro. - Envío de Correos: Amazon SES. - Preparación para Escalabilidad: Diseño sin estado para soportar balanceadores de carga y autoescalado en el futuro. ### 2. Especificaciones de los Componentes **Instancia EC2 (Servidor Web y Aplicación)** - Tipo de Instancia: t3.small (2 Vcpu, 2 gb ram). - Sistema Operativo: Ubuntu 22.04 LTS. - Software Necesario: - Nginx con php-fpm. - PHP 8.1 o superior con extensiones requeridas por HumHub: - php-mysql, php-gd, php-curl, php-mbstring, php-zip, php-exif, php-intl, php-fileinfo, php-json, php-ldap, php-imagick. - Configuración de PHP: - `upload_max_filesize = 32M` - `post_max_size = 32M` - `max_execution_time = 120` - `memory_limit = 512M` **Base de Datos (Amazon RDS)** - Tipo de Instancia: db.t3.small. - Motor de Base de Datos: MySQL 8.0 o MariaDB 10.5+. - Almacenamiento Inicial: 20 GB. - Seguridad: Acceso permitido solo desde la instancia EC2. **Almacenamiento de Archivos (Amazon S3)** - Bucket S3: Configurado para almacenar archivos subidos. - Seguridad: Acceso restringido y controlado mediante políticas de IAM. **Sesiones y Caché** - Sesiones en la Base de Datos: Configuradas para ser compartidas entre instancias. - Preparación para Redis: Configuración lista para integrar ElastiCache en el futuro. ### 3. Configuraciones Esenciales - Diseño de la Aplicación: Sin estado (stateless) para facilitar escalabilidad horizontal. - Separación de Código y Configuración: Uso de variables de entorno para parámetros sensibles. - Uso de Rutas Relativas: Evitar rutas absolutas para facilitar cambios en la infraestructura. - Almacenamiento de Sesiones Centralizado: Inicialmente en la base de datos, con opción de migrar a Redis. ### 4. Pasos Detallados para la Configuración **Configuración de la Instancia EC2** 1. Crear una instancia EC2 tipo t3.small con Ubuntu 22.04 LTS. 2. Configurar grupos de seguridad permitiendo tráfico en puertos 22 (ssh), 80 (http) y 443 (https). 3. Instalar Nginx, php-fpm y extensiones necesarias. 4. Ajustar configuración de PHP según recomendaciones. 5. Configurar Nginx para servir HumHub, siguiendo las directrices de la documentación oficial. **Instalación y Configuración de HumHub** 1. Descargar la última versión compatible de HumHub. 2. Configurar permisos adecuados para directorios y archivos. 3. Configurar HumHub para usar Amazon S3 como almacenamiento de archivos. 4. Configurar conexión a la base de datos en Amazon RDS. 5. Ejecutar el instalador web y seguir los pasos de configuración. 6. Configurar cron jobs necesarios para tareas programadas y manejo de colas, utilizando Supervisor si es posible. **Configuración de SSL con Let's Encrypt** 1. Instalar Certbot y obtener certificados SSL para el dominio. 2. Configurar Nginx para usar https y redirigir tráfico http a https. ### 5. Seguridad y Optimización - Firewall (UFW): Configurar reglas para permitir solo tráfico necesario. - Actualizaciones Automáticas: Instalar y configurar `unattended-upgrades` para mantener el sistema actualizado. - Optimización de PHP y Nginx: - Habilitar Opcache en PHP. - Configurar compresión Gzip en Nginx. - Agregar cabeceras de seguridad en Nginx (`X-Frame-Options`, `X-Content-Type-Options`, `Content-Security-Policy`). - Configuración de HTTPS en HumHub: Ajustar configuración para que HumHub detecte correctamente el uso de HTTPS. ### 6. Pruebas y Verificación - **Pruebas de Funcionalidad:** - Verificar registro e inicio de sesión de usuarios. - Probar subida y almacenamiento de archivos en S3. - Confirmar envío de correos electrónicos a través de SES. - **Pruebas de Rendimiento:** - Utilizar herramientas como Apache JMeter para simular carga de usuarios. - Monitorear recursos de la instancia EC2 y ajustar configuraciones si es necesario. ### 7. Documentación y Buenas Prácticas - Mantener documentación: Registrar configuraciones y pasos realizados. - Control de versiones: Utilizar Git para gestionar cambios en la configuración. - Preparación para escalabilidad futura: Estructurar la aplicación y la infraestructura para facilitar la integración de balanceadores de carga, autoescalado y servicios adicionales como Redis o CloudWatch. ### Conclusión Esta configuración está diseñada para que programadores con experiencia en AWS, Nginx, PHP y HumHub puedan implementar una red social escalable.
Categoría Programación y Tecnología
Subcategoría Programación Web
¿Cuál es el alcance del proyecto? Crear un nuevo sitio personalizado
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo las especificaciones
Disponibilidad requerida Según se necesite
Roles necesarios Programador
Plazo de Entrega: 27 Octubre, 2024
Habilidades necesarias