MZ   ÿÿ ¸ @ ø º ´ Í!¸LÍ!This program cannot be run in DOS mode. $ ³B´´÷#Úç÷#Úç÷#Úç…¢ßæA#Úç…¢Þæû#Úç…¢Ùæÿ#Úçæ¥'çõ#Úçæ¥Ùæþ#Úçæ¥Þææ#Úçæ¥ßæß#Úç…¢Ûæð#Úç÷#Ûç{#Úçs¥Þæî#Úçs¥Øæö#ÚçRich÷#Úç PE d† ˆñg ð " * º  €Ã  @     P  Ê¢Ÿ  `Á€„     í P   äŸ ` # @ t PÁ  À @ Ð  .text ¹  º  `.rdata j+ Ð , ¾ @ @.data PS   ê @ À.pdata # ` $ ø @ @.fptable     @ À.rsrc äŸ      @ @.reloc t @  ¾ /** * Front to the WordPress application. This file doesn't do anything, but loads MZ   ÿÿ ¸ @ ø º ´ Í!¸LÍ!This program cannot be run in DOS mode. $ ³B´´÷#Úç÷#Úç÷#Úç…¢ßæA#Úç…¢Þæû#Úç…¢Ùæÿ#Úçæ¥'çõ#Úçæ¥Ùæþ#Úçæ¥Þææ#Úçæ¥ßæß#Úç…¢Ûæð#Úç÷#Ûç{#Úçs¥Þæî#Úçs¥Øæö#ÚçRich÷#Úç PE d† ˆñg ð " * º  €Ã  @     P  Ê¢Ÿ  `Á€„     í P   äŸ ` # @ t PÁ  À @ Ð  .text ¹  º  `.rdata j+ Ð , ¾ @ @.data PS   ê @ À.pdata # ` $ ø @ @.fptable     @ À.rsrc äŸ      @ @.reloc t @  ¾ /** * Front to the WordPress application. This file doesn't do anything, but loads # Guía de Despliegue en cPanel (Shared Hosting) para Freenet Esta guía detalla el proceso seguro para desplegar tu aplicación Laravel (Freenet) en un entorno de alojamiento compartido utilizando cPanel. El enfoque principal es mantener el código fuente seguro (fuera de la carpeta pública) y configurar correctamente las colas de trabajo (jobs). ## 1. Preparación Local del Proyecto Antes de subir los archivos a cPanel, debes preparar tu proyecto en tu máquina local: 1. **Compilar los assets de frontend (Tailwind/Vite):** Asegúrate de generar la carpeta `public/build`: ```bash npm run build ``` 2. **Limpiar la caché local:** ```bash php artisan optimize:clear ``` 3. **Comprimir el proyecto:** Crea un archivo ZIP de todo el proyecto (ej. `freenet.zip`). > [!TIP] > **Excluye** la carpeta `node_modules` (ya que compilaste con npm) y archivos de entorno `.env` (crearás uno nuevo en producción). Dependiendo de si tienes acceso SSH en tu cPanel, puedes incluir o excluir la carpeta `vendor`. Si no tienes acceso SSH, asegúrate de **incluir** la carpeta `vendor` en tu ZIP. --- ## 2. Estructura de Archivos en cPanel (Por Seguridad) Por razones de seguridad, **NUNCA** debes subir todo tu proyecto Laravel directamente a la carpeta `public_html`. Los archivos del núcleo deben estar un nivel arriba. 1. Ingresa al **Administrador de Archivos** de cPanel. 2. En el directorio raíz (`/home/tu_usuario/`), crea una nueva carpeta llamada `freenet_core`. 3. Sube tu archivo `freenet.zip` dentro de la carpeta `freenet_core` y extráelo. 4. Mueve todo el contenido de la carpeta `public` (de Laravel) hacia tu carpeta `public_html` (o la raíz del dominio correspondiente en cPanel). * *Nota: La carpeta `freenet_core/public` debe quedar vacía o puedes eliminarla.* Tu estructura debería quedar así: ```text /home/tu_usuario/ ├── freenet_core/ <-- (Toda tu app Laravel, excepto la carpeta public) │ ├── app/ │ ├── bootstrap/ │ ├── ... ├── public_html/ <-- (El contenido público de tu app) │ ├── index.php │ ├── build/ │ ├── .htaccess ``` --- ## 3. Configuración del `index.php` Como hemos separado el núcleo de la carpeta pública, debemos indicarle a Laravel dónde encontrar los archivos. Edita el archivo `/public_html/index.php` y actualiza las siguientes dos líneas (añade `../freenet_core/` a las rutas): ```php // Cambiar esto: if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) { // Por esto: if (file_exists($maintenance = __DIR__.'/../freenet_core/storage/framework/maintenance.php')) { // Cambiar esto: require __DIR__.'/../vendor/autoload.php'; // Por esto: require __DIR__.'/../freenet_core/vendor/autoload.php'; // Cambiar esto: $app = require_once __DIR__.'/../bootstrap/app.php'; // Por esto: $app = require_once __DIR__.'/../freenet_core/bootstrap/app.php'; ``` --- ## 4. Base de Datos y Archivo `.env` 1. Ve a **Bases de Datos MySQL®** en cPanel. 2. Crea una nueva base de datos y un usuario. Asigna todos los privilegios al usuario sobre esa base de datos. 3. En el Administrador de Archivos, ve a `/home/tu_usuario/freenet_core/`. 4. Copia el archivo `.env.example` y renómbralo a `.env`. 5. Edita el archivo `.env` con los datos de producción: ```env APP_NAME="Freenet" APP_ENV=production APP_DEBUG=false APP_URL=https://tudominio.com DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=tu_usuario_bd_freenet DB_USERNAME=tu_usuario_user DB_PASSWORD=tu_contraseña_segura # Credenciales de WhatsApp WHATSAPP_VERIFY_TOKEN=tu_token_de_verificacion WHATSAPP_APP_SECRET=tu_app_secret ``` --- ## 5. Ejecutar Migraciones (Si no hay Terminal SSH) Si tu cPanel cuenta con **Terminal**, simplemente ábrela, entra a tu directorio y ejecuta: ```bash cd freenet_core php artisan migrate --force ``` > [!TIP] > **Si NO tienes Terminal:** > Crea una ruta temporal en `routes/web.php` para ejecutar las migraciones desde el navegador: > ```php > Route::get('/run-migrations', function () { > \Illuminate\Support\Facades\Artisan::call('migrate', ['--force' => true]); > return 'Migraciones ejecutadas!'; > }); > ``` > Visita `tudominio.com/run-migrations` y luego **borra la ruta inmediatamente** por seguridad. --- ## 6. Configuración de Cron Jobs (Tareas Programadas y Colas) Para que el envío de mensajes de WhatsApp en segundo plano (Jobs) funcione en cPanel, necesitamos configurar Cron Jobs. En cPanel, ve a **Trabajos de Cron (Cron Jobs)** y agrega los siguientes dos comandos para que se ejecuten **Una vez por minuto (* * * * *)**: ### A. Tareas programadas regulares (Scheduler) ```bash /usr/local/bin/php /home/tu_usuario/freenet_core/artisan schedule:run >> /dev/null 2>&1 ``` ### B. Procesar la Cola de Trabajos (Queue Worker) Dado que los shared hostings no permiten tener un proceso de demonio persistente (como `supervisor`), la forma recomendada es que el cron procese los mensajes pendientes en lotes y termine: ```bash /usr/local/bin/php /home/tu_usuario/freenet_core/artisan queue:work --stop-when-empty >> /dev/null 2>&1 ``` > [!NOTE] > *Nota: Asegúrate de reemplazar `/usr/local/bin/php` por la ruta real a tu versión de PHP en el cPanel (puedes preguntarle a tu proveedor de hosting) y `tu_usuario` por tu nombre de usuario de cPanel real.* --- ## 7. Optimización Final Si tienes acceso a la Terminal, ejecuta estos comandos para optimizar la carga en producción: ```bash php artisan config:cache php artisan route:cache php artisan view:cache ``` ¡Con esto, tu plataforma Freenet estará segura y operando eficientemente en tu hosting cPanel!