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)
| Componente | Requisito mínimo | Recomendado |
|---|---|---|
| PHP | 8.2 | 8.3 |
| Extensiones PHP | BCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PCRE, PDO, Tokenizer, XML | Todas las anteriores + OPcache |
| Base de datos | MySQL 5.7+ / MariaDB 10.3+ / PostgreSQL 10+ / SQLite 3.8+ | MariaDB 10.6+ |
| Servidor web | Apache 2.4+ / Nginx 1.17+ / LiteSpeed | Nginx o LiteSpeed |
| Composer | 2.x | 2.x |
| Node.js (opcional) | 18+ para Vite/Mix | 20 LTS |
Laravel 10.x
| Componente | Requisito mínimo |
|---|---|
| PHP | 8.1 |
| Base de datos | MySQL 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.
