Comparativas y alternativas

Cómo subir un proyecto Laravel a hosting compartido en cPanel

Guía práctica para desplegar tu aplicación Laravel en un hosting compartido con cPanel, ajustando la estructura de carpetas y las variables de entorno correctamente.

Close-up of two professionals in a meeting, reviewing documents with a pen and paper.

Para subir un proyecto Laravel a un hosting compartido con cPanel debes separar los archivos de la aplicación del directorio público (public/) y apuntar el dominio a esa carpeta. Este ajuste es lo que hace funcionar Laravel sin servidor dedicado ni acceso root.

¿Es posible correr Laravel en hosting compartido?

Sí, aunque con limitaciones. Laravel requiere PHP 8.1 o superior, acceso a Composer, y control sobre el directorio raíz del dominio. La mayoría de los hosts compartidos modernos —HostGator, Hostinger, Neubox— ya ofrecen PHP 8.2 y acceso a Composer por SSH o desde el terminal de cPanel. Lo que no tendrás en hosting compartido son colas de trabajo en segundo plano, WebSockets nativos ni control de procesos — para eso necesitas un VPS.

Paso 1: Prepara tu proyecto local antes de subir

Antes de transferir archivos, asegúrate de que tu proyecto esté listo para producción:

  1. Ejecuta composer install --optimize-autoloader --no-dev para instalar dependencias sin las de desarrollo.
  2. Compila tus assets si usas Vite o Mix: npm run build.
  3. Copia .env.example a .env y configura las variables de producción (base de datos, APP_KEY, APP_ENV=production, APP_DEBUG=false).
  4. Genera la clave de aplicación si no la tienes: php artisan key:generate.

No subas el directorio node_modules/ ni tu .env local — usarás un .env de producción directamente en el servidor.

Paso 2: Estructura de carpetas en el servidor

Este es el paso crítico que más confunde. En cPanel, cada dominio o subdominio apunta a un directorio raíz (Document Root). El problema es que Laravel espera que el servidor sirva solo la carpeta public/, no la raíz del proyecto completo.

La solución recomendada es la siguiente estructura:

home/
  tuusuario/
    miapp/              ← archivos de Laravel (app/, config/, vendor/, etc.)
    public_html/        ← Document Root del dominio principal
      index.php         ← modificado para apuntar a miapp/
      .htaccess
      (resto de assets: css/, js/, images/)

Si el proyecto es para un subdominio o addon domain, cPanel te permite elegir el Document Root — ponlo en public_html/miapp_public y sube los archivos del proyecto a miapp/ fuera de public_html.

Paso 3: Sube los archivos al servidor

Tienes dos métodos principales:

Opción A: File Manager de cPanel

  1. Comprime tu proyecto (sin node_modules) en un ZIP.
  2. Abre el File Manager en cPanel, navega al directorio destino y sube el ZIP.
  3. Extrae el ZIP ahí mismo con clic derecho → Extract.

Opción B: SSH + Git (recomendado)

Si tu hosting permite acceso SSH (muchos planes compartidos lo incluyen):

ssh [email protected]
cd ~/miapp
git clone https://github.com/tuusuario/mi-proyecto.git .
composer install --optimize-autoloader --no-dev

Este método facilita actualizaciones futuras: solo haces git pull y composer install.

Paso 4: Ajusta los archivos de entrada del dominio

Una vez que los archivos están en el servidor, necesitas redirigir el Document Root del dominio hacia public/ de tu proyecto. Hay dos formas:

Opción 1: Cambiar el Document Root en cPanel

En cPanel → Dominios (o Addon Domains / Subdomains), edita el Document Root del dominio y apúntalo directamente a /home/usuario/miapp/public. Esta es la opción más limpia.

Opción 2: Modificar index.php en public_html

Si no puedes cambiar el Document Root, copia el index.php de tu carpeta public/ a public_html/ y edita las rutas al autoloader y a la app:

require __DIR__.'/../miapp/vendor/autoload.php';
$app = require_once __DIR__.'/../miapp/bootstrap/app.php';

Copia también el .htaccess de public/ a public_html/.

Paso 5: Configura el .env y la base de datos

  1. Crea la base de datos MySQL desde cPanel → MySQL Databases. Anota el nombre de la BD, usuario y contraseña.
  2. Sube o crea el archivo .env en la raíz del proyecto (~/miapp/.env) con los datos correctos:
    APP_ENV=production
    APP_DEBUG=false
    APP_KEY=base64:...
    DB_HOST=localhost
    DB_DATABASE=usuario_nombrebd
    DB_USERNAME=usuario_dbuser
    DB_PASSWORD=contraseña_segura
    
  3. Ejecuta las migraciones por SSH: php artisan migrate --force.
  4. Ajusta los permisos de las carpetas de escritura:
    chmod -R 775 storage bootstrap/cache
    

Si tu hosting no ofrece SSH, puedes ejecutar Artisan creando un archivo PHP temporal con shell_exec('php artisan migrate --force') — aunque SSH siempre es preferible.

Paso 6: Verifica la instalación

  • Visita tu dominio en el navegador. Si ves la página de bienvenida de Laravel, el deploy fue exitoso.
  • Si aparece un error 500, revisa los logs en storage/logs/laravel.log.
  • Si aparece el código fuente PHP en lugar de la página, el servidor está corriendo PHP como CGI sin el módulo correcto — contacta soporte.
  • Activa el caché de configuración y rutas para mejor rendimiento: php artisan config:cache && php artisan route:cache.

Si el deploy es para un proyecto de cliente o un producto en producción, considera contratar servicios de despliegue profesionales. En elenlace.com ayudamos a agencias y negocios a desplegar aplicaciones PHP/Laravel en entornos seguros y optimizados.

Para comparar qué hosting compartido soporta mejor Laravel en México, visita nuestra sección de comparativas de hosting.

Conclusiones clave

  • Laravel funciona en hosting compartido siempre que el plan ofrezca PHP 8.1+ y acceso a Composer.
  • La clave es separar los archivos del proyecto del Document Root y apuntar el dominio solo a public/.
  • SSH simplifica enormemente el proceso de subida de archivos y las actualizaciones futuras.
  • El archivo .env debe configurarse directamente en el servidor con datos de producción.
  • Ajusta permisos en storage/ y bootstrap/cache/ para evitar errores de escritura.
  • Para proyectos de mayor escala o con colas/WebSockets, un VPS es la mejor opción.

¿Necesitas apoyo para desplegar tu aplicación Laravel o migrarla a un entorno más robusto? El equipo de elenlace.com te asesora en la configuración correcta desde el primer día.

Preguntas frecuentes

¿Todos los hosting compartidos soportan Laravel?

No todos. Necesitas uno que ofrezca PHP 8.1 o superior, acceso a Composer (por SSH o terminal de cPanel) y capacidad para modificar el Document Root del dominio. Verifica estas características antes de contratar.

¿Puedo correr php artisan sin acceso SSH?

Sí, de forma limitada. Puedes crear un archivo PHP con echo shell_exec('php artisan comandoaqui'); y ejecutarlo desde el navegador. Sin embargo, este método es menos seguro y debes eliminar el archivo inmediatamente después de usarlo.

¿Por qué aparece un error 500 después de subir Laravel?

Las causas más comunes son: permisos incorrectos en storage/ o bootstrap/cache/, un .env mal configurado, o rutas al autoloader erróneas en index.php. Revisa storage/logs/laravel.log para el mensaje exacto.

¿Puedo usar variables de entorno del servidor en lugar del archivo .env?

Depende del hosting. Algunos paneles permiten definir variables de entorno por dominio. Si el tuyo no lo permite, usar el archivo .env directamente en el servidor (fuera del Document Root) es la alternativa segura.

Compara proveedores

Otros proveedores y guías que vale la pena comparar:

← Todos