Hosting para Laravel en España

Laravel es el framework PHP más popular del mundo y el más usado en España para desarrollo de aplicaciones web a medida. Pero a diferencia de WordPress o PrestaShop, Laravel no funciona correctamente en cualquier hosting: necesita acceso SSH, soporte para Composer, configuración específica del servidor web y control sobre las variables de entorno. En esta guía te explico exactamente qué necesita Laravel para funcionar y qué opciones tienes en España.

Por qué Laravel necesita un hosting específico

La mayoría de aplicaciones Laravel no funcionan en hosting compartido básico porque:

  • Necesita Composer para instalar dependencias. Composer requiere acceso a la línea de comandos (SSH).
  • El document root debe apuntar a /public, no a la raíz del proyecto. En hosting compartido sin acceso a la configuración del servidor, esto no siempre es posible.
  • Necesita variables de entorno configuradas en el archivo .env, que contiene credenciales sensibles que no deben estar en el document root público.
  • Los jobs y colas (queues) requieren procesos en segundo plano que no están disponibles en hosting compartido básico.
  • El scheduler de Laravel necesita un cronjob configurado a nivel de servidor.
  • La caché de configuración y las optimizaciones de producción requieren permisos de escritura en carpetas específicas.

Dicho esto, hay soluciones para cada tipo de hosting.

Requisitos técnicos de Laravel

Laravel 11.x (versión actual)

ComponenteRequisito mínimoRecomendado
PHP8.28.3
Extensiones PHPBCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PCRE, PDO, Tokenizer, XMLTodas las anteriores + OPcache
Base de datosMySQL 5.7+ / MariaDB 10.3+ / PostgreSQL 10+ / SQLite 3.8+MariaDB 10.6+
Servidor webApache 2.4+ / Nginx 1.17+ / LiteSpeedNginx o LiteSpeed
Composer2.x2.x
Node.js (opcional)18+ para Vite/Mix20 LTS

Laravel 10.x

ComponenteRequisito mínimo
PHP8.1
Base de datosMySQL 5.7+ / MariaDB 10.3+

Opciones de hosting para Laravel en España

Opción 1: Hosting compartido con cPanel y SSH (para proyectos pequeños)

Es posible desplegar Laravel en hosting compartido si el proveedor permite SSH y Composer. BlumHost incluye acceso SSH en todos los planes de hosting compartido, lo que hace posible:

  • Instalar dependencias con Composer
  • Ejecutar comandos artisan
  • Configurar cronjobs para el scheduler
  • Gestionar permisos de carpetas

Limitaciones del hosting compartido para Laravel:

  • No puedes ejecutar procesos de cola (workers) persistentes
  • El document root puede requerir un workaround con .htaccess
  • Los tiempos de ejecución PHP tienen límites
  • No es adecuado para aplicaciones con mucho tráfico

Ideal para: APIs pequeñas, aplicaciones internas, proyectos en desarrollo, webs con tráfico moderado que no usan queues.

Opción 2: VPS (para proyectos en producción)

Para una aplicación Laravel en producción seria, un VPS es la opción correcta. Te da control total sobre:

  • Versión de PHP exacta
  • Configuración de Nginx o Apache
  • Queue workers con Supervisor
  • Redis para caché y colas
  • Scheduler sin restricciones
  • Variables de entorno del sistema

Ideal para: aplicaciones en producción, APIs con tráfico real, proyectos que usan queues, websockets o procesos en segundo plano.

Cómo configurar Laravel en hosting compartido con cPanel

Paso 1: Verifica los requisitos desde cPanel

Accede a cPanel → Selector de PHP y verifica que tienes disponible PHP 8.2 o superior. Activa las extensiones necesarias: bcmath, ctype, curl, dom, fileinfo, json, mbstring, openssl, pdo, pdo_mysql, tokenizer, xml.

Si necesitas cambiar la versión de PHP, el artículo sobre cómo cambiar la versión de PHP en cPanel cubre el proceso completo.

Paso 2: Sube los archivos del proyecto

Sube toda la estructura de Laravel a tu servidor — pero no al directorio public_html directamente. Sube el proyecto a un directorio un nivel por encima, por ejemplo:

/home/tuusuario/laravel-app/

La carpeta public_html de tu dominio debe apuntar a /home/tuusuario/laravel-app/public/.

Paso 3: Configura el document root

Desde cPanel → Dominios, edita el document root de tu dominio y apúntalo a:

/home/tuusuario/laravel-app/public

Si no tienes esta opción directamente, puedes usar un symlink o un workaround con .htaccess en public_html:

apache

RewriteEngine On
RewriteRule ^(.*)$ /home/tuusuario/laravel-app/public/$1 [L]

O crea un index.php en public_html que cargue el de Laravel:

php

<?php
require __DIR__.'/../laravel-app/public/index.php';

Paso 4: Instala las dependencias con Composer

Conéctate por SSH y ejecuta:

bash

cd ~/laravel-app
composer install --optimize-autoloader --no-dev

Si Composer no está disponible como comando global, descárgalo directamente:

bash

cd ~/laravel-app
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php composer.phar install --optimize-autoloader --no-dev

Paso 5: Configura el archivo .env

Crea el archivo .env en la raíz del proyecto:

bash

cp .env.example .env

Edita los valores clave:

env

APP_NAME="Mi Aplicación"
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=https://tudominio.com

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=tuusuario_nombrebd
DB_USERNAME=tuusuario_dbuser
DB_PASSWORD=tu_contraseña

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_CONNECTION=sync

Genera la clave de aplicación:

bash

php artisan key:generate

Paso 6: Configura los permisos de carpetas

Laravel necesita permisos de escritura en storage y bootstrap/cache:

bash

chmod -R 775 storage bootstrap/cache
chown -R tuusuario:tuusuario storage bootstrap/cache

Paso 7: Optimiza para producción

bash

php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize

Paso 8: Configura el scheduler de Laravel

Laravel incluye un planificador de tareas que requiere un cronjob del sistema. Desde cPanel → Tareas Cron, añade:

* * * * * cd /home/tuusuario/laravel-app && php artisan schedule:run >> /dev/null 2>&1

El artículo sobre cómo crear un cronjob en cPanel explica el proceso en detalle.

Configuración de Nginx para Laravel en VPS

Si usas un VPS, Nginx es la configuración recomendada para Laravel:

nginx

server {
    listen 80;
    listen [::]:80;
    server_name tudominio.com www.tudominio.com;
    root /var/www/laravel-app/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_hide_header X-Powered-By;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Instala SSL con Certbot:

bash

certbot --nginx -d tudominio.com -d www.tudominio.com

Configuración de Apache para Laravel en hosting compartido

Si el servidor usa Apache (o LiteSpeed, que es compatible con las directivas de Apache), crea o edita el .htaccess en la carpeta public de Laravel:

apache

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Laravel incluye este .htaccess por defecto en la carpeta public. En la mayoría de casos no necesitas modificarlo.

Queue workers en VPS con Supervisor

Para proyectos que usan colas de Laravel (emails, notificaciones, procesamiento asíncrono), necesitas un queue worker persistente. En un VPS, usa Supervisor para gestionar el proceso:

bash

apt install -y supervisor

Crea la configuración en /etc/supervisor/conf.d/laravel-worker.conf:

ini

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel-app/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/laravel-app/storage/logs/worker.log
stopwaitsecs=3600

bash

supervisorctl reread
supervisorctl update
supervisorctl start laravel-worker:*

Redis para caché y colas en Laravel

Si tu aplicación tiene tráfico alto, usar Redis para caché y colas mejora significativamente el rendimiento respecto a drivers de archivo:

env

CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Instala el cliente PHP de Redis:

bash

composer require predis/predis

O activa la extensión phpredis desde el Selector de PHP de cPanel como se explica en el artículo sobre Redis en cPanel.

Variables de entorno sensibles: buenas prácticas

El archivo .env nunca debe estar en el document root público ni en el repositorio Git. En hosting compartido con cPanel, está un nivel por encima de public_html, así que está protegido. En VPS, los permisos correctos son:

bash

chmod 640 .env
chown tuusuario:www-data .env

Añade .env al .gitignore del proyecto:

.env
.env.*
!.env.example

Qué plan de hosting elegir para Laravel en España

Para proyectos pequeños o en desarrollo

Web Hosting II de BlumHost (4,50 €/mes): 10 GB NVMe, 3 GB RAM, PHP 8.2, SSH incluido, Composer disponible, cronjobs para el scheduler. Suficiente para APIs pequeñas, webs con tráfico bajo-medio y proyectos en desarrollo activo.

Para aplicaciones en producción con tráfico moderado

VPS II de BlumHost (15 €/mes): 4 GB RAM, 2 cores, 100 GB NVMe, control total sobre Nginx/PHP-FPM, queue workers con Supervisor, Redis, despliegue con Git. Ideal para la mayoría de aplicaciones Laravel en producción.

Para aplicaciones con alto tráfico o requisitos específicos

VPS III o superior de BlumHost (22,50 €/mes en adelante): más RAM para PHP-FPM con múltiples workers, más CPU para procesamiento paralelo, más disco para logs y almacenamiento. Añade VPS Ryzen para aplicaciones con alta demanda de CPU single-thread.

👉 Ver planes de Hosting para Laravel en España


Preguntas frecuentes

¿Laravel funciona en hosting compartido?
Sí, si el hosting incluye SSH y Composer. BlumHost incluye SSH en todos los planes. Las limitaciones son que no puedes ejecutar queue workers persistentes ni procesos en segundo plano. Para proyectos con colas o alta carga, un VPS es más adecuado.

¿Qué versión de PHP necesita Laravel 11?
Laravel 11 requiere PHP 8.2 como mínimo. Se recomienda PHP 8.3 para mejor rendimiento. Desde el Selector de PHP de cPanel puedes cambiar la versión en cualquier momento.

¿Puedo usar PostgreSQL en lugar de MySQL con Laravel en cPanel?
La mayoría de planes de hosting compartido solo ofrecen MySQL/MariaDB. PostgreSQL está disponible principalmente en VPS donde puedes instalar el motor que necesites.

¿Cómo ejecuto php artisan desde cPanel sin SSH?
No puedes ejecutar comandos artisan sin acceso a la línea de comandos. Necesitas SSH, que BlumHost incluye en todos los planes de hosting compartido.

¿Necesito Node.js para Laravel?
Solo si usas Vite (el bundler de assets por defecto en Laravel 9+) para compilar CSS y JavaScript. En producción, subes los archivos compilados y no necesitas Node.js en el servidor. En desarrollo sí necesitas Node.js en tu máquina local.

¿Laravel es compatible con LiteSpeed?
Sí. LiteSpeed es compatible con las directivas de Apache incluyendo el .htaccess de Laravel. El rendimiento con LiteSpeed es igual o mejor que con Apache estándar para aplicaciones Laravel.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *