Tutorial Laravel 13 #1: instalar y configurar el proyecto
verificado el 2 septiembre 2026 · 6 min
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.
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:
php -vSolo cuenta la primera línea. Debe anunciar PHP 8.3, 8.4 u 8.5:
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.
composer --versionExtensiones 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:
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:
composer create-project laravel/laravel blogComposer descarga Laravel y sus dependencias en una carpeta blog. La operación tarda de uno a tres minutos según tu conexión.
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:
cd blog
php artisan --versionLaravel Framework 13.30.1La alternativa: el instalador de Laravel
Existe un instalador global que acorta el comando y propone elegir un kit de arranque:
composer global require laravel/installer
laravel new blogVa 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
APP_NAME="Mon blog"
APP_URL=http://localhost:8000APP_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:
DB_CONNECTION=sqliteSQLite 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:
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:
php artisan storage:linkINFO The [public/storage] link has been connected to [storage/app/public].Arrancar el servidor
php artisan serve INFO Server running on [http://127.0.0.1:8000].
Press Ctrl+C to stop the serverAbre 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.
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:
php artisan aboutEnvironment ........................................................
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 .................................................. databaseEl 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.