================================================================================ GUÍA DE INSTALACIÓN Y PUBLICACIÓN EN CPANEL - GANTTSCRUM PRO ================================================================================ Este documento detalla el paso a paso necesario para desplegar el proyecto GanttScrum Pro en un servidor compartido con cPanel, utilizando la herramienta "Setup Python App" (que usa Phusion Passenger para servir FastAPI). -------------------------------------------------------------------------------- 1. PRERREQUISITOS EN CPANEL -------------------------------------------------------------------------------- Antes de comenzar, asegúrate de que tu plan de hosting en cPanel cuente con: - Acceso a la herramienta "Setup Python App" (Soporte WSGI/Passenger). - Acceso a bases de datos PostgreSQL (o una base de datos externa accesible). - Acceso a terminal SSH (opcional, pero altamente recomendado para agilizar la instalación de librerías mediante pip). -------------------------------------------------------------------------------- PASO 1: CONFIGURAR LA BASE DE DATOS (MYSQL / MARIADB) -------------------------------------------------------------------------------- 1. Inicia sesión en tu cPanel. 2. Ve a la sección de "Bases de Datos" -> "Bases de Datos MySQL". 3. Crea una nueva base de datos (ej: `tuusuario_gestion_proyectos`). 4. Crea un nuevo usuario de base de datos con contraseña segura. 5. Asocia el usuario a la base de datos otorgándole todos los privilegios. 6. Ve a la sección "Bases de Datos" -> "phpMyAdmin". 7. Haz clic sobre tu base de datos recién creada en la barra lateral izquierda. 8. Ve a la pestaña "Importar" (Import) en la barra superior. 9. Selecciona el archivo SQL compatible con MySQL provisto: - Archivo a importar: `database_schema_mysql.sql` (ubicado dentro de la carpeta docs). 10. Presiona "Importar" (o "Continuar") en la parte inferior. -------------------------------------------------------------------------------- PASO 2: SUBIR LOS ARCHIVOS DEL PROYECTO -------------------------------------------------------------------------------- 1. En cPanel, ingresa al "Administrador de Archivos" (File Manager). 2. Sube el archivo `project_cpanel.zip` a la raíz de tu cuenta (`/home/tuusuario/`). 3. Haz clic derecho sobre el archivo ZIP y selecciona "Extract" (Descomprimir). Esto creará las carpetas del proyecto en tu estructura de archivos. -------------------------------------------------------------------------------- PASO 3: CONFIGURAR LA APLICACIÓN PYTHON EN CPANEL -------------------------------------------------------------------------------- 1. En el buscador de cPanel, escribe "Setup Python App" e ingresa a la herramienta. 2. Haz clic en "Create Application". 3. Rellena los campos con la siguiente configuración: - Python Version: Selecciona 3.10 o superior. - Application root: La ruta física donde extrajiste el backend (ej: `project/backend`). - Application URL: El subdominio o dominio donde se publicará la API (ej: `api.tudominio.com`). - Application startup file: Escribe `passenger_wsgi.py`. - Application Entry point: Escribe `application`. 4. Haz clic en "Create". Esto levantará el entorno virtual (VirtualEnv) y creará un archivo base. -------------------------------------------------------------------------------- PASO 4: CONFIGURAR VARIABLES DE ENTORNO EN EL BACKEND -------------------------------------------------------------------------------- 1. Vuelve al "Administrador de Archivos" y ve a la ruta de tu Application Root (`project/backend`). 2. Edita o crea el archivo `.env` para declarar la cadena de conexión de producción y la clave de API para Gemini: DATABASE_URL=mysql+aiomysql://tuusuario_dbuser:tu_password@localhost:3306/tuusuario_dbname GEMINI_API_KEY=tu_clave_api_gemini_aqui SECRET_KEY=clave_secreta_para_firmar_tokens_jwt 3. Asegúrate de guardar los cambios en el archivo `.env`. -------------------------------------------------------------------------------- PASO 5: INSTALAR DEPENDENCIAS (PIP) -------------------------------------------------------------------------------- 1. Copia el comando de activación del entorno virtual que te muestra la parte superior de la pantalla de "Setup Python App" (ejemplo: `source /home/tuusuario/nodevenv/project/backend/3.10/bin/activate`). 2. Abre la terminal de cPanel (o mediante SSH) y pega el comando de activación para entrar al entorno de Python de tu aplicación. 3. Posiciónate en la carpeta del backend (`cd /home/tuusuario/project/backend`) e instala todas las librerías necesarias ejecutando: pip install -r requirements.txt (Esto descargará e instalará de forma aislada FastAPI, Uvicorn, SQLAlchemy, asyncpg, etc.) -------------------------------------------------------------------------------- PASO 6: PUBLICACIÓN DEL FRONTEND Y REDIRECCIÓN -------------------------------------------------------------------------------- 1. El directorio `frontend/` contiene toda la interfaz de usuario estática. 2. Copia todo el contenido de la carpeta `frontend/` dentro del directorio público de tu dominio web (usualmente `public_html/` o la raíz de tu subdominio). 3. Para que el frontend pueda consumir los servicios del backend de Python de forma transparente y evitar bloqueos de CORS, configura una redirección mediante el archivo `.htaccess`. 4. En `public_html/`, edita o crea el archivo `.htaccess` y agrega las siguientes reglas de reescritura de Apache para redirigir las solicitudes `/api/v1` al puerto/servicio del backend: RewriteEngine On # Redirigir todas las peticiones que comiencen con api/v1 a la app Python RewriteCond %{REQUEST_URI} ^/api/v1 [NC] RewriteRule ^(.*)$ http://localhost:8000/$1 [P,L] 5. Reemplaza `http://localhost:8000` con el socket local o puerto asignado por cPanel a tu aplicación Python si es que corre en un puerto específico en lugar de Passenger directo. -------------------------------------------------------------------------------- PASO 7: REINICIO Y VERIFICACIÓN -------------------------------------------------------------------------------- 1. Regresa a "Setup Python App" en cPanel. 2. Presiona el botón "Restart" para recargar la aplicación de Python y limpiar el caché. 3. Abre tu dominio en el navegador y verifica que la pantalla de inicio de sesión se visualice, y que las solicitudes HTTP a `/api/v1/auth/login` retornen estados exitosos. ================================================================================ ¡Listo! Tu plataforma GanttScrum Pro ya está en funcionamiento bajo cPanel. ================================================================================