Desarrollo y bases de datos

Instalar Laravel en un hosting con cPanel (Laravel 13 y 12)

Revisado el 9 min de lectura instalacion composer laravel

Puedes instalar Laravel en un hosting con cPanel usando Composer y acceso SSH. En esta guía crearemos un proyecto nuevo, prepararemos su base de datos y configuraremos el dominio para que publique únicamente la carpeta public.

Si ya tienes una aplicación en un repositorio, no necesitas crear otra: consulta Deploy+ para desplegarla desde el área de clientes.

1. Comprueba PHP y Composer

Para un proyecto nuevo con Laravel 13 necesitas PHP 8.3 o superior, dentro de las versiones compatibles con Laravel y tus dependencias. Configura la versión de la web desde el selector de PHP.

Abre SSH o la terminal de cPanel y comprueba también la versión que ejecutan los comandos:

php -v
composer --version

La versión de PHP de la terminal puede diferir de la usada por la web. Resuelve esa diferencia antes de instalar. Los requisitos de Laravel incluyen Ctype, cURL, DOM, Fileinfo, Filter, Hash, Mbstring, OpenSSL, PCRE, PDO, Session, Tokenizer y XML; la base de datos elegida requiere además su controlador PHP.

Si Composer indica ext-fileinfo is missing, por ejemplo, habilita esa extensión en la versión de PHP correspondiente. No omitas las comprobaciones con --ignore-platform-reqs: instalar dependencias incompatibles no hará que la aplicación funcione.

2. Crea el proyecto fuera del directorio público

Desde la raíz de tu cuenta, crea una carpeta nueva que no exista todavía:

cd ~
composer create-project laravel/laravel mi-proyecto "^13.0"
cd mi-proyecto
php artisan --version
composer check-platform-reqs

El primer comando descarga el proyecto y sus dependencias. La comprobación de Artisan debe identificar Laravel 13; la de Composer debe confirmar los requisitos del entorno. No ejecutes create-project sobre una web existente.

Si necesitas instalar Laravel 12

Si la aplicación o integración requiere esa versión, utiliza otra carpeta nueva:

composer create-project laravel/laravel mi-proyecto-12 "^12.0"

Laravel 12 requiere PHP 8.2 o superior y su calendario oficial mantiene las correcciones de seguridad hasta el 24 de febrero de 2027. Comprueba la política de soporte de Laravel al elegir versión. Para un proyecto que ya existe, utiliza su composer.lock y composer install; no lo sustituyas por una instalación nueva ni cambies de versión mayor sin revisar la actualización.

Si quieres un starter kit

El instalador oficial permite elegir kits como React, Vue, Svelte o Livewire. Es una alternativa a crear el proyecto con Composer:

composer global require laravel/installer
composer global config bin-dir --absolute

Añade al PATH de tu terminal la ruta que devuelva el segundo comando y comprueba laravel --version. Después utiliza laravel new otro-proyecto en una carpeta nueva. Consulta laravel new --help antes de automatizar opciones: el instalador evoluciona por separado y no debes asumir que instalará una versión histórica del framework.

3. Configura la base de datos

Una instalación nueva puede empezar con SQLite si PHP tiene su controlador. Para usar MySQL, crea primero la base y su usuario desde el asistente de bases de datos de cPanel, asignando al usuario los permisos necesarios.

Edita .env dentro del proyecto con los datos reales de esa base:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=miusuario_proyecto
DB_USERNAME=miusuario_app
DB_PASSWORD="sustituye_por_la_clave_de_la_base"

Usa los nombres completos que muestra cPanel, incluido su prefijo. No publiques .env ni lo subas al repositorio.

En el proyecto nuevo, ejecuta:

php artisan config:clear
php artisan migrate

Si estás desplegando una aplicación con datos existentes, revisa las migraciones y conserva una copia antes de aplicarlas. No uses migrate:fresh: elimina las tablas.

4. Publica solo la carpeta public

El dominio debe servir /home/tu_usuario/mi-proyecto/public, no /home/tu_usuario/mi-proyecto. Así los archivos de configuración y el código privado quedan fuera de la raíz web.

Para un dominio adicional o subdominio, revisa su directorio desde cPanel > Dominios > Administrar. Si la configuración permite modificarlo, selecciona la carpeta public del proyecto. No muevas index.php a la raíz para evitar este paso.

En el dominio principal, cPanel normalmente utiliza public_html. Si necesitas sustituir ese directorio por un enlace al public de Laravel, planifica antes qué contiene, su copia y la vuelta atrás. No renombres ni borres public_html siguiendo una receta sin comprobar si ya aloja una web u otros dominios. Puedes usar Deploy+ y su raíz web public o consultarnos la configuración adecuada para tu cuenta.

5. Prepara y comprueba la aplicación

En .env, configura la URL real y desactiva la depuración pública:

APP_ENV=production
APP_DEBUG=false
APP_URL=https://tudominio.com

La instalación debe tener una clave APP_KEY. En un proyecto nuevo sin clave, genera una con php artisan key:generate. No la regeneres en una aplicación existente: podrías dejar inaccesibles datos cifrados.

Si tu proyecto utiliza Vite, compila sus recursos con una versión de Node.js compatible con su package.json. En una instalación nueva, npm install genera el fichero de bloqueo y npm run build crea los recursos de producción. En despliegues posteriores con package-lock.json, utiliza npm ci y npm run build. Consulta Node.js para compilar assets.

Comprueba que storage y bootstrap/cache sean escribibles por la aplicación, sin aplicar permisos 777 de forma general. Después ejecuta:

php artisan optimize

Abre el dominio por HTTPS y comprueba portada, rutas interiores y funciones que consulten la base de datos. Verifica también que /.env no entregue el archivo. Si aparece un error 500, consulta storage/logs/laravel.log y los registros del hosting; no actives la depuración pública para mostrar el error a todos los visitantes.

6. Programa las tareas si tu aplicación las necesita

En cPanel > Trabajos de cron, configura una ejecución por minuto para el scheduler:

* * * * * /usr/local/bin/php /home/tu_usuario/mi-proyecto/artisan schedule:run > /dev/null 2>&1

Sustituye la ruta y comprueba que ese ejecutable usa el PHP que necesita tu proyecto. Ejecuta primero el comando manualmente, sin descartar su salida, y revisa php artisan schedule:list.

Puedes utilizar colas de Laravel en el hosting. El scheduler no mantiene por sí solo un trabajador de colas permanente: la ejecución de los trabajadores se configura por separado, según las necesidades de la aplicación. Comprueba que los trabajos pendientes se procesan correctamente antes de dar la configuración por terminada.

Si tu proyecto requiere instalar servicios del sistema o disponer de acceso root, consulta esos requisitos concretos para comprobar su encaje en el alojamiento.

Publicar los siguientes cambios con Deploy+

Cuando el proyecto esté en Git, Deploy+ permite configurar su publicación desde el área de clientes, con archivos compartidos y versiones a las que volver. Una reversión de código no deshace automáticamente cambios de base de datos: diseña las migraciones teniendo en cuenta esa diferencia.

Referencias: instalación de Laravel y recomendaciones de despliegue.

También te puede ayudar

¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.