Capítulo 1 de 9

Tutorial Laravel 13 #1: instalar y configurar el proyecto

verificado el 2 septiembre 2026 · 6 min

Respuesta rápida

Instala Laravel 13 con composer create-project laravel/laravel blog y luego arranca php artisan serve. El comando crea el archivo .env, genera la clave de aplicación y ejecuta las migraciones él solo. Laravel 13 exige PHP 8.3 como mínimo y usa SQLite por defecto.

Al final de este capítulo, tendrás un proyecto Laravel 13 instalado, configurado sobre SQLite, y la página de bienvenida aparecerá en tu navegador.

Este primer capítulo instala Laravel 13, explica para qué sirve cada carpeta del proyecto y arranca el servidor de desarrollo. Al terminar, la página de bienvenida de Laravel aparecerá en tu navegador.

Lo que necesitas

Laravel 13 exige PHP 8.3 como mínimo y admite PHP 8.3, 8.4 y 8.5. Comprueba tu versión:

bash
php -v

Solo cuenta la primera línea. Debe anunciar PHP 8.3, 8.4 u 8.5:

code
PHP 8.4.25 (cli) (built: Aug 27 2026 20:19:39) (NTS)

Si el comando no existe o devuelve una versión más antigua, instala PHP. En Windows, WampServer o Laragon, en macOS, Homebrew con brew install php, en Linux, el paquete php-cli de tu distribución.

También te hace falta Composer, el gestor de dependencias de PHP. Es el que descarga Laravel y todo aquello de lo que depende.

bash
composer --version

Extensiones PHP

Laravel necesita unas cuantas extensiones de PHP. La mayoría de instalaciones ya las traen. Dos merecen una comprobación, porque su ausencia bloquea más adelante:

bash
php -m | grep -E "pdo_sqlite|intl"

pdo_sqlite es la que usa la base de datos de este tutorial. intl la exigirá el panel de administración en el capítulo 4, instalarla ahora evita que la instalación falle llegado ese momento.

Un editor

VS Code es gratuito y sobra de largo, con la extensión «PHP Intelephense». PhpStorm es de pago y entiende Laravel de forma nativa. El tutorial no da por supuesto ninguno: todo se hace desde la terminal.

Crear el proyecto

Sitúate en la carpeta donde guardas tus proyectos y luego:

bash
composer create-project laravel/laravel blog

Composer descarga Laravel y sus dependencias en una carpeta blog. La operación tarda de uno a tres minutos según tu conexión.

Lo que el comando hace por su cuenta

Desde Laravel 11, create-project ya no se limita a descargar los archivos. Copia .env.example en .env, genera la clave de aplicación, crea el archivo database/database.sqlite y ejecuta las migraciones iniciales. Los comandos php artisan key:generate y php artisan migrate que encontrarás en los tutoriales antiguos ya no hacen falta en un proyecto nuevo.

Comprueba la versión instalada:

bash
cd blog
php artisan --version
code
Laravel Framework 13.30.1

La alternativa: el instalador de Laravel

Existe un instalador global que acorta el comando y propone elegir un kit de arranque:

bash
composer global require laravel/installer
laravel new blog

Va bien si creas proyectos a menudo, pero añade una dependencia global a tu máquina y a veces da problemas de PATH. Si obtienes laravel: command not found, el artículo corregir «laravel: command not found» explica la solución. Para este tutorial, composer create-project basta y evita ese rodeo.

El árbol de carpetas del proyecto

Esto es lo que contiene la carpeta blog. El esqueleto de Laravel se ha aligerado mucho desde Laravel 8: varios archivos que describen los tutoriales antiguos ya no existen.

En la raíz

app

El código de tu aplicación. Recién instalado solo contiene tres archivos: un controlador base, el modelo User y un proveedor de servicios. Ahí irás añadiendo tus controladores y tus modelos.

bootstrap

El archivo bootstrap/app.php es el punto de configuración de la aplicación: ahí se declaran las rutas, los middlewares y el tratamiento de los errores. En Laravel 8 y 9 ese papel estaba repartido entre app/Http/Kernel.php, app/Console/Kernel.php y app/Exceptions/Handler.php, que han desaparecido.

config

Los archivos de configuración. Laravel 13 solo publica diez por defecto, frente a la veintena de antes: los demás siguen existiendo dentro del framework con sus valores por defecto. Para recuperar uno y modificarlo, usa php artisan config:publish.

database

Las migraciones (la estructura de las tablas), los seeders (los datos de partida) y las factories (objetos de prueba). También es donde está database.sqlite, tu base de datos.

public

La única carpeta que el servidor web debe exponer. Contiene index.php, el punto de entrada de todas las peticiones, y los archivos compilados por Vite.

resources

Las vistas Blade, las hojas CSS y los archivos JavaScript antes de compilar.

routes

Las declaraciones de direcciones. Laravel 13 solo crea dos archivos, web.php y console.php. Los archivos api.php y channels.php que describen los tutoriales escritos para Laravel 8 ya no se crean de oficio: php artisan install:api y php artisan install:broadcasting los añaden si los necesitas. Este tutorial solo usa web.php.

Dentro de la carpeta app

Http/Controllers

Los controladores: el código que recibe una petición, va a buscar los datos y elige la vista que hay que devolver.

Models

Los modelos Eloquent. Cada tabla de la base tiene un modelo correspondiente que sirve para leerla y escribirla. Esta carpeta existe desde Laravel 8, en las versiones anteriores los modelos se dejaban directamente en app.

Configurar el proyecto

Toda la configuración que depende de la máquina vive en el archivo .env, en la raíz. Los archivos de config lo leen a través de la función env(). Ese archivo no debe subirse nunca al control de versiones: contiene tus contraseñas.

El nombre y la dirección del sitio

.env
APP_NAME="Mon blog"
APP_URL=http://localhost:8000

APP_NAME aparecerá en el título de las páginas. APP_URL sirve para construir los enlaces absolutos, sobre todo los que apuntan a las imágenes subidas.

La base de datos

Laravel 13 usa SQLite por defecto:

.env
DB_CONNECTION=sqlite

SQLite guarda toda la base en un único archivo, database/database.sqlite. No hay servidor que arrancar, ni usuario que crear, ni contraseña que recordar. Para aprender es la mejor opción: borras el archivo y vuelves a empezar de cero.

Si prefieres MySQL o MariaDB, crea la base y sustituye estas líneas:

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=

El tutorial funciona con las dos. Aparece una diferencia de comportamiento en el capítulo 8, sobre el motor de búsqueda: allí se mide y se explica.

El enlace de almacenamiento

Los archivos subidos desde el panel de administración aterrizan en storage/app/public, que no es accesible desde la web. Este comando crea el enlace simbólico que los hace visibles:

bash
php artisan storage:link
code
INFO  The [public/storage] link has been connected to [storage/app/public].

Arrancar el servidor

bash
php artisan serve
code
  INFO  Server running on [http://127.0.0.1:8000].

  Press Ctrl+C to stop the server

Abre http://127.0.0.1:8000. Aparece la página de bienvenida de Laravel. Deja esa terminal abierta: el servidor sigue funcionando mientras no lo pares.

Si el puerto 8000 ya está ocupado, Laravel no se detiene: prueba con el siguiente y te avisa. Lee la dirección que aparece en pantalla en vez de darla por supuesta.

code
  Failed to listen on 127.0.0.1:8000 (reason: Address already in use)

   INFO  Server running on [http://127.0.0.1:8001].

También puedes servir el proyecto con Apache, Nginx, Docker o Laravel Herd. En ese caso, la raíz del servidor debe apuntar a la carpeta public, nunca a la raíz del proyecto: exponer la raíz haría que tu archivo .env se pudiera descargar.

Comprobar la instalación

Este comando resume el estado del proyecto y confirma que todo está en su sitio:

bash
php artisan about
code
Environment ........................................................
Application Name .......................................... Mon blog
Laravel Version ........................................... 13.30.1
PHP Version ................................................ 8.4.25
Composer Version ........................................... 2.10.3
Environment ................................................. local
Debug Mode ................................................ ENABLED

Drivers ...........................................................
Cache .................................................... database
Database ................................................... sqlite
Queue .................................................... database
Session .................................................. database

El proyecto está listo. El índice de la serie recuerda lo que aporta cada capítulo. El capítulo siguiente explica cómo asociar una dirección a tu propio código.

Errores frecuentes

El puerto 8000 ya está ocupado php artisan serve no se detiene: pasa al 8001 y lo anuncia. Lee la dirección que aparece en pantalla en vez de darla por supuesta.
Falta la extensión intl No hace falta de inmediato, pero el panel de administración del capítulo 4 la exige. Instalarla ahora evita un fallo de composer más adelante.
La raíz del servidor apunta al proyecto Apache o Nginx deben servir la carpeta public, nunca la raíz: de lo contrario el archivo .env se vuelve descargable.
Los archivos api.php y channels.php no están Es lo normal desde Laravel 11. php artisan install:api e install:broadcasting los crean si hacen falta.
Newsletter

Las nuevas pruebas, tutoriales y proyectos, por correo.

Pruebas reproducibles, código versionado, resultados fechados. Nunca spam.