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 SIN ACCESO SSH para Freenet Esta guía detalla el proceso para desplegar tu aplicación Laravel (Freenet) en un entorno de alojamiento compartido donde **NO tienes acceso a Terminal ni a SSH**. El enfoque principal es compilar todo en local, mantener el código fuente seguro y usar rutas web temporales para comandos de Artisan. ## 1. Preparación Local del Proyecto (¡Crucial!) Dado que no podrás correr comandos de `composer` o `npm` en tu servidor, **todo debe ir pre-compilado**. 1. **Instalar dependencias de producción:** Asegúrate de tener la carpeta `vendor` actualizada sin dependencias de desarrollo. ```bash composer install --optimize-autoloader --no-dev ``` 2. **Compilar los assets de frontend (Tailwind/Vite):** Asegúrate de generar la carpeta `public/build`: ```bash npm run build ``` 3. **Limpiar la caché local:** ```bash php artisan optimize:clear ``` 4. **Comprimir el proyecto:** Crea un archivo ZIP de todo el proyecto (ej. `freenet.zip`). > [!IMPORTANT] > **Excluye** la carpeta `node_modules` y el archivo `.env`. > **ES OBLIGATORIO INCLUIR** la carpeta `vendor` completa en tu ZIP, ya que no podrás generarla en el servidor. --- ## 2. Estructura de Archivos en cPanel (Por Seguridad) Por razones de seguridad, los archivos del núcleo de Laravel deben estar aislados de la carpeta pública. 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 allí mismo. 4. Mueve todo el contenido de la carpeta `public` (de Laravel) hacia tu carpeta `public_html` (o la raíz pública correspondiente en cPanel). * *Nota: La carpeta `freenet_core/public` debe quedar vacía o eliminada.* Tu estructura debe quedar así: ```text /home/tu_usuario/ ├── freenet_core/ <-- (Toda tu app, incluyendo la carpeta 'vendor') │ ├── app/ │ ├── bootstrap/ │ ├── vendor/ │ ├── ... ├── public_html/ <-- (El contenido público de tu app) │ ├── index.php │ ├── build/ │ ├── .htaccess ``` --- ## 3. Configuración del `index.php` Indícale a la carpeta pública dónde está tu código fuente. Edita el archivo `/public_html/index.php` y actualiza las rutas agregando `../freenet_core/`: ```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 y crea una base de datos, un usuario y vincúlalos con todos los privilegios. 2. En el Administrador de Archivos, ve a `/home/tu_usuario/freenet_core/`. 3. Copia `.env.example` y renómbralo a `.env`. 4. Edita el `.env`: ```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 WHATSAPP_VERIFY_TOKEN=tu_token_de_verificacion WHATSAPP_APP_SECRET=tu_app_secret ``` --- ## 5. Ejecutar Migraciones y Optimización vía Navegador Como no tienes terminal, ejecutaremos los comandos de Artisan a través de una ruta temporal en el navegador. Edita el archivo `/home/tu_usuario/freenet_core/routes/web.php` y agrega temporalmente esto al final: ```php Route::get('/setup-produccion', function () { try { // Ejecutar migraciones \Illuminate\Support\Facades\Artisan::call('migrate', ['--force' => true]); // Optimizar caché (equivalente a php artisan optimize) \Illuminate\Support\Facades\Artisan::call('config:cache'); \Illuminate\Support\Facades\Artisan::call('route:cache'); \Illuminate\Support\Facades\Artisan::call('view:cache'); return '¡Migraciones y Optimizaciones ejecutadas con éxito!'; } catch (\Exception $e) { return 'Error: ' . $e->getMessage(); } }); ``` 1. Guarda el archivo. 2. Abre tu navegador y visita: `https://tudominio.com/setup-produccion` 3. Si ves el mensaje de éxito, vuelve al archivo `routes/web.php` y **BORRA ESA RUTA INMEDIATAMENTE** por seguridad. --- ## 6. Configuración de Colas (Jobs) en cPanel (Cron Jobs) Finalmente, debes asegurarte de que el sistema procese los mensajes de WhatsApp en segundo plano. 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 tu plan no soporta procesos persistentes (Supervisor) por no tener SSH, el cron procesará los mensajes en cola cada minuto hasta vaciar la lista y se apagará: ```bash /usr/local/bin/php /home/tu_usuario/freenet_core/artisan queue:work --stop-when-empty >> /dev/null 2>&1 ``` > [!NOTE] > *Nota: Pregunta a tu proveedor de hosting cuál es la ruta exacta de PHP (ej. `/opt/cpanel/ea-php82/root/usr/bin/php` o `/usr/local/bin/php`) y asegúrate de reemplazar `tu_usuario` por tu usuario de cPanel.*