Cómo preparar Debian 13 para desarrollar con Laravel 13: alternativa a Laravel Herd

Laravel Herd facilita muchísimo el desarrollo de Laravel en Windows y macOS porque instala y configura varias herramientas automáticamente. Sin embargo, Herd no es necesario para desarrollar con Laravel en Linux.

En Debian 13 podemos preparar manualmente un entorno equivalente y, de paso, entender para qué sirve cada componente.

Al terminar tendremos:

Debian 13
│
├── Apache2
├── PHP 8.4
├── Composer
├── Laravel Installer
├── Node.js
├── npm
├── MySQL / MariaDB
├── TablePlus
├── Git
│
└── Laravel 13
    ├── React 19
    ├── Inertia
    ├── TypeScript
    ├── Tailwind
    ├── Vite
    └── Authentication

Debian 13 “Trixie” incluye PHP 8.4, Apache 2.4 y MariaDB 11.8 en sus repositorios oficiales.

Laravel 13 necesita PHP, Composer y Laravel Installer para crear aplicaciones mediante laravel new. Para compilar el frontend también necesitamos Node.js y npm o Bun.


1. Actualizar Debian

Partimos de una instalación completamente limpia de Debian 13.

Primero actualizamos la información de los repositorios:

sudo apt update

Es importante comprender que:

sudo apt update

no actualiza los programas instalados.

Solamente actualiza la lista de paquetes disponibles.

Después podemos actualizar los paquetes que ya tenga Debian:

sudo apt upgrade

2. Instalar herramientas básicas

Instalaremos algunas herramientas que utilizaremos posteriormente:

sudo apt install curl git unzip



Git será especialmente importante cuando comencemos a trabajar con proyectos reales.

Comprobamos:

git --version

3. Instalar Apache2

Laravel no necesita obligatoriamente Apache para desarrollarse, pero resulta útil tener un servidor web completo instalado en nuestro entorno.

Instalamos Apache:

sudo apt install apache2

Después lo arrancamos:

sudo systemctl enable --now apache2

Este comando es interesante.

sudo
└── permisos administrativos

systemctl
└── administra servicios controlados por systemd

enable
└── hace que Apache se inicie automáticamente al arrancar Debian

--now
└── además de habilitarlo, lo inicia inmediatamente

apache2
└── servicio que queremos administrar

Por tanto:

sudo systemctl enable --now apache2

significa aproximadamente:

Habilita Apache para que arranque automáticamente y arráncalo ahora mismo.

Podemos comprobar su estado:

systemctl status apache2

Deberíamos encontrar:

active (running)

También podemos abrir:

http://localhost

y debería aparecer la página predeterminada de Apache.


4. Instalar PHP

Debian 13 incluye PHP 8.4.

Vamos a instalar PHP junto con varias extensiones muy utilizadas por Laravel:

sudo apt install php php-cli libapache2-mod-php php-mbstring php-xml php-curl php-zip php-mysql php-bcmath



php
└── PHP

php-cli
└── permite ejecutar PHP desde la terminal

libapache2-mod-php
└── permite que Apache procese PHP

php-mbstring
└── manejo avanzado de cadenas de texto

php-xml
└── soporte XML, DOM, SimpleXML, etc.

php-curl
└── permite que PHP realice peticiones mediante cURL

php-zip
└── manejo de archivos ZIP

php-mysql
└── permite que PHP se conecte con MySQL/MariaDB

php-bcmath
└── operaciones matemáticas de precisión arbitraria

Debian 13 proporciona módulos PHP como php-mysql, php-mbstring, php-curl, php-xml y php-zip mediante sus paquetes oficiales.

Comprobamos la versión:

php -v

Deberíamos obtener algo parecido a:

PHP 8.4.x

Podemos comprobar las extensiones:

php -m

Por ejemplo:

php -m | grep mysql

Aquí aparece otro concepto de Linux.

php -m
│
└── muestra los módulos PHP cargados

|
│
└── pasa el resultado al siguiente comando

grep mysql
│
└── muestra únicamente las líneas que contienen "mysql"

Deberíamos encontrar algo parecido a:

mysqli
mysqlnd
pdo_mysql

pdo_mysql será especialmente importante porque Laravel puede utilizarlo para comunicarse con MySQL/MariaDB.


5. Instalar Composer

Composer es el administrador de dependencias de PHP.

Una comparación sencilla sería:

PHP                JavaScript

Composer     ←→    npm
composer.json ←→   package.json
vendor/      ←→    node_modules/

Podemos instalar Composer desde Debian:

sudo apt install composer

Después comprobamos:

composer --version

Composer se encargará de descargar y administrar las dependencias PHP que utilizan Laravel y nuestros proyectos.


6. Instalar Node.js y npm

Laravel utiliza herramientas modernas de frontend como Vite. Para eso necesitamos Node.js y npm.

Laravel indica que debemos disponer de Node/npm o Bun para compilar los recursos frontend.

Instalamos:

sudo apt install nodejs npm

npm
└── administrador de paquetes JavaScript

Comprobamos:

node --version

y:

npm --version

Debian 13 proporciona Node.js y npm desde sus repositorios.


7. Instalar MySQL en Debian 13

Aquí hay algo importante que debemos entender.

En Debian, el servidor compatible con MySQL proporcionado por defecto es MariaDB.

Debian 13 incluye MariaDB 11.8.

Podemos instalar el metapaquete de MySQL predeterminado de Debian:

sudo apt install default-mysql-server default-mysql-client

Estos paquetes instalan la implementación MySQL predeterminada de Debian.

En Debian 13 esto utilizará MariaDB.

Desde el punto de vista de nuestro proyecto Laravel tendremos:

Laravel
   │
   │ DB_CONNECTION=mysql
   ▼
MariaDB

No debemos confundir:

MySQL

con:

MariaDB

Son proyectos diferentes, pero mantienen una gran compatibilidad.

Para un entorno de aprendizaje Laravel podemos utilizar perfectamente MariaDB mediante el driver MySQL.


8. Iniciar el servidor de base de datos

Ejecutamos:

sudo systemctl enable --now mariadb
sudo
└── permisos administrativos

systemctl
└── administra servicios

enable
└── inicia automáticamente MariaDB al arrancar Debian

--now
└── también lo inicia inmediatamente

mariadb
└── nombre del servicio

Comprobamos:

systemctl status mariadb

Deberíamos encontrar:

active (running)

9. Entrar a MariaDB

Podemos entrar como administrador mediante:

sudo mariadb

Aquí:

sudo
└── permisos administrativos

mariadb
└── abre el cliente de MariaDB

Nos aparecerá algo parecido a:

MariaDB [(none)]>

Ahora ya no estamos escribiendo comandos Linux.

Estamos dentro del servidor SQL.

Por ejemplo:

SHOW DATABASES;

significa:

SHOW
└── mostrar

DATABASES
└── las bases de datos existentes

Para salir:

exit;

10. Base de datos y tabla no son lo mismo

Esta diferencia es fundamental.

Una base de datos contiene tablas.

Por ejemplo:

curso_laravel             ← BASE DE DATOS
│
├── users                 ← TABLA
├── posts                 ← TABLA
├── migrations            ← TABLA
├── sessions              ← TABLA
└── password_reset_tokens ← TABLA

Podemos imaginarlo así:

Base de datos = archivador

Tabla = una carpeta dentro del archivador

Fila = un registro

Columna = una propiedad del registro

Por ejemplo:

BASE DE DATOS:
curso_laravel

TABLA:
users

COLUMNAS:
id
name
email
password

FILAS:
1 | Andres | correo@ejemplo.com | ...
2 | Pedro  | otro@ejemplo.com   | ...

Laravel puede crear automáticamente tablas mediante migraciones, pero cuando utilizamos MySQL/MariaDB normalmente tenemos que crear primero la base de datos donde esas tablas serán almacenadas.

Laravel explica que, si utilizamos una base de datos diferente de SQLite, debemos crearla y ejecutar las migraciones.


11. Crear un usuario para Laravel

No es buena práctica utilizar el usuario administrativo root desde nuestra aplicación.

Entramos:

sudo mariadb

Y creamos un usuario:

CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'UnaPasswordSegura';

¿Qué significa?

CREATE USER
└── crea un usuario

'laravel'
└── nombre del usuario

@'localhost'
└── solamente podrá conectarse desde esta máquina

IDENTIFIED BY
└── establece su contraseña

'UnaPasswordSegura'
└── contraseña del usuario

Todavía no le hemos dado acceso a ninguna base de datos.

Eso lo haremos después.


12. Crear nuestra base de datos

Supongamos que nuestro proyecto se llamará:

curso-laravel

Los nombres de bases de datos suelen evitar guiones para simplificar determinadas situaciones, así que podemos llamarla:

curso_laravel

Dentro de MariaDB:

CREATE DATABASE curso_laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE
└── crea una base de datos

curso_laravel
└── nombre de la base de datos

CHARACTER SET utf8mb4
└── permite almacenar caracteres Unicode completos

COLLATE utf8mb4_unicode_ci
└── define cómo se comparan y ordenan esos caracteres

Ahora damos al usuario laravel acceso únicamente a esa base:

GRANT ALL PRIVILEGES ON curso_laravel.* TO 'laravel'@'localhost';
GRANT ALL PRIVILEGES
└── concede permisos

ON curso_laravel.*
└── sobre todas las tablas de curso_laravel

TO
└── al usuario

'laravel'@'localhost'
└── usuario Laravel local

Observa:

curso_laravel.*
              ↑

El * significa:

Todas las tablas dentro de curso_laravel.

Después:

FLUSH PRIVILEGES;

y:

exit;

13. Probar nuestro usuario MySQL/MariaDB

Ejecutamos:

mariadb -u laravel -p
mariadb
└── cliente de base de datos

-u
└── indica usuario

laravel
└── nombre del usuario

-p
└── solicita la contraseña

Nos pedirá:

Enter password:

Escribimos nuestra contraseña.

Podemos comprobar:

SHOW DATABASES;

Deberíamos poder ver:

curso_laravel

Salimos:

exit;

14. Instalar TablePlus (OPCIONAL)

TablePlus NO ES NECESARIAMENTE ALGO QUE OCUPEMOS esta es una aplicación gráfica para administrar bases de datos, si quieres verlo de forma gráfica una alternativa podría ser TablePlus

Es importante entender:

TablePlus ≠ MySQL

Nuestra estructura realmente es:

TablePlus
    │
    │ interfaz gráfica
    ▼
MariaDB/MySQL
    │
    ▼
curso_laravel
    │
    ├── users
    ├── migrations
    ├── posts
    └── ...

TablePlus dispone actualmente de una versión AppImage oficial para Linux x86_64 y ARM64.

Descargamos desde la página oficial la versión:

TablePlus-x64.AppImage

para una computadora Intel/AMD de 64 bits.

Después nos dirigimos a nuestra carpeta de descargas.

Dependiendo del idioma del sistema:

cd ~/Descargas

o:

cd ~/Downloads

¿Qué significa cd?

cd
└── Change Directory

cambiar de directorio

Ahora damos permiso de ejecución:

chmod +x TablePlus-x64.AppImage

TablePlus indica oficialmente este procedimiento para ejecutar su AppImage.

chmod
└── cambia permisos de un archivo

+x
└── agrega permiso de ejecución

TablePlus-x64.AppImage
└── archivo al que aplicamos el permiso

Ahora ejecutamos:

./TablePlus-x64.AppImage

Aquí:

./
└── significa "ejecuta este archivo desde el directorio actual"

TablePlus-x64.AppImage
└── aplicación que queremos ejecutar

Si alguna AppImage antigua solicitara FUSE, Debian 13 dispone del paquete libfuse2t64.

Podemos instalarlo mediante:

sudo apt install libfuse2t64

solamente si fuera necesario.


15. Conectar TablePlus

Abrimos TablePlus y creamos una conexión nueva.

Seleccionamos:

MySQL

Podemos utilizar:

Name:
Laravel Local

Host:
127.0.0.1

Port:
3306

User:
laravel

Password:
nuestra contraseña

Database:
curso_laravel

Probamos la conexión.

Si funciona, tendremos:

TablePlus
    │
    ▼
127.0.0.1:3306
    │
    ▼
MariaDB
    │
    ▼
curso_laravel

Por ahora la base puede aparecer vacía.

Eso es normal.

Todavía Laravel no ha creado ninguna tabla.


16. Instalar Laravel Installer

Ahora tenemos:

PHP        ✅
Apache     ✅
Composer   ✅
Node       ✅
npm        ✅
MySQL      ✅
TablePlus  ✅

Nos falta el comando:

laravel

Laravel permite instalar su CLI mediante Composer con:

composer global require laravel/installer

Vamos a entenderlo.

composer
└── utilizamos Composer

global
└── queremos instalar algo para nuestro usuario,
    no únicamente dentro de un proyecto

require
└── agrega/instala una dependencia

laravel/installer
└── paquete que contiene el comando `laravel`

En otras palabras:

Composer, instala globalmente el instalador de Laravel.

Comprobamos:

laravel --version

17. ¿Qué pasa si aparece “laravel: orden no encontrada”?

Puede suceder:

bash: laravel: orden no encontrada

Eso no significa necesariamente que Laravel Installer no se haya instalado.

Composer puede haberlo guardado en una carpeta que Bash todavía no conoce.

Primero preguntamos a Composer dónde guarda sus ejecutables:

composer global config bin-dir --absolute
composer
└── Composer

global
└── configuración global

config
└── consultar/configurar opciones

bin-dir
└── directorio de ejecutables

--absolute
└── mostrar la ruta completa

Puede devolver algo parecido a:

/home/usuario/.config/composer/vendor/bin

Podemos comprobar:

ls ~/.config/composer/vendor/bin

y deberíamos encontrar:

laravel

18. Añadir Laravel al PATH

Solo lo haremos si no funciona al poner el comando $laravel

PATH es una variable especial de Linux.

Contiene las carpetas donde Bash busca programas cuando escribimos algo como:

php

o:

composer

Si Laravel está instalado aquí:

/home/usuario/.config/composer/vendor/bin/laravel

pero esa carpeta no está en PATH, escribir:

laravel

no funcionará.

Añadimos la carpeta:

echo 'export PATH="$HOME/.config/composer/vendor/bin:$PATH"' >> ~/.bashrc

Este comando merece ser desglosado.

echo
└── imprime texto

'export PATH="..."'
└── texto que queremos guardar

>>
└── agrega ese texto al final de un archivo

~/.bashrc
└── archivo de configuración de Bash de nuestro usuario

Dentro de la línea:

export PATH="$HOME/.config/composer/vendor/bin:$PATH"

tenemos:

export
└── crea/exporta una variable de entorno

PATH
└── rutas donde Linux busca comandos

$HOME
└── nuestra carpeta personal

$PATH
└── conserva las rutas que ya existían

Después recargamos Bash:

source ~/.bashrc

source significa:

Lee nuevamente este archivo y aplica sus configuraciones en la terminal actual.

Probamos:

laravel --version

Ahora debería funcionar.


19. Dos maneras de crear un proyecto Laravel

Aquí hay una diferencia muy importante.

Podemos crear un proyecto Laravel de varias maneras.

Opción A — Laravel limpio

Podemos utilizar Composer:

composer create-project laravel/laravel curso-laravel
composer
└── administrador de paquetes PHP

create-project
└── crea un proyecto a partir de un paquete existente

laravel/laravel
└── plantilla base oficial de Laravel

curso-laravel
└── carpeta donde será creado

Traducido:

Composer, crea un proyecto utilizando Laravel como base y colócalo en una carpeta llamada curso-laravel.

Esto crea un Laravel relativamente limpio.

Es ideal si queremos construir nosotros mismos la aplicación desde cero.


20. Opción B — Laravel con Starter Kit

Si queremos que Laravel nos prepare tecnologías adicionales como:

React
Authentication
Inertia
TypeScript
Tailwind
Vite

es mucho más conveniente utilizar:

laravel new curso-laravel

laravel
└── Laravel Installer

new
└── crear una aplicación nueva

curso-laravel
└── nombre/carpeta de nuestra aplicación

El instalador de Laravel puede preguntarnos qué Starter Kit queremos instalar.

Laravel 13 dispone actualmente de Starter Kits oficiales para React, Vue, Svelte y Livewire.


21. Crear Laravel 13 con React y autenticación

Entramos primero a nuestra carpeta de proyectos.

Por ejemplo:

mkdir -p ~/Documentos/Web/Laravel
mkdir
└── Make Directory: crear directorio

-p
└── crea también directorios intermedios si hacen falta

~/Documentos/Web/Laravel
└── ruta que queremos crear

Entramos:

cd ~/Documentos/Web/Laravel

Ahora:

laravel new curso-laravel

Laravel nos mostrará un asistente interactivo.

Cuando pregunte qué Starter Kit queremos utilizar, seleccionamos:

React

Los Starter Kits oficiales proporcionan frontend y backend para autenticación.

El Starter Kit React actual de Laravel 13 utiliza:

React 19
Inertia
TypeScript
Tailwind
shadcn/ui

Cuando aparezca la elección de autenticación, podemos utilizar la autenticación integrada de Laravel.

Finalmente, cuando pregunte qué base de datos queremos utilizar:

MySQL

22. Configurar .env

Cada proyecto Laravel contiene un archivo:

.env

El .env almacena configuraciones que pueden cambiar dependiendo de la computadora o servidor.

Laravel utiliza este archivo para información como:

base de datos
contraseñas
correo
URL
entorno
claves de APIs

Laravel recomienda no subir .env al repositorio porque puede contener credenciales sensibles.

Para nuestra base de datos tendremos:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=curso_laravel
DB_USERNAME=laravel
DB_PASSWORD=UnaPasswordSegura

Vamos línea por línea.

DB_CONNECTION=mysql

DB_CONNECTION
└── tipo de conexión de base de datos

mysql
└── utilizaremos el driver MySQL

Aunque Debian utilice MariaDB, mantenemos:

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

Significa:

El servidor de base de datos está en nuestra propia computadora.

127.0.0.1

es la dirección loopback local.


DB_PORT=3306

3306

es el puerto utilizado habitualmente por MySQL/MariaDB.


DB_DATABASE=curso_laravel

Es la base de datos que creamos anteriormente.


DB_USERNAME=laravel

Es nuestro usuario de base de datos.


DB_PASSWORD=...

Es la contraseña de ese usuario.

Laravel muestra precisamente esta estructura DB_CONNECTION=mysql, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME y DB_PASSWORD en su configuración oficial para MySQL.


23. Crear las tablas con las migraciones

Ahora Laravel ya sabe:

Dónde está MySQL
Qué base utilizar
Qué usuario utilizar
Qué contraseña utilizar

Entramos al proyecto:

cd curso-laravel

Ejecutamos:

php artisan migrate

Desglose:

php
└── ejecuta PHP

artisan
└── consola de comandos incluida dentro de Laravel

migrate
└── ejecuta las migraciones pendientes

Conceptualmente:

php artisan migrate

        ↓

Laravel lee:

database/migrations/

        ↓

envía instrucciones SQL

        ↓

MySQL/MariaDB

        ↓

curso_laravel

        ↓

crea tablas

Por ejemplo:

curso_laravel
│
├── users
├── migrations
├── jobs
├── cache
└── ...

Laravel especifica que al utilizar MySQL debemos crear la base de datos y ejecutar posteriormente php artisan migrate.

Ahora podemos abrir TablePlus y actualizar la conexión.

Las tablas deberían aparecer.


24. ¿Qué hizo realmente php artisan migrate?

No creó necesariamente la base de datos.

La base:

curso_laravel

ya existía.

Lo que hizo Laravel fue crear las tablas dentro de ella.

Antes:

curso_laravel
│
└── vacío

Después:

curso_laravel
│
├── users
├── migrations
├── jobs
├── cache
└── ...

Esta diferencia es fundamental:

CREATE DATABASE
        ↓
crea el contenedor

php artisan migrate
        ↓
crea/modifica las tablas

25. Instalar las dependencias de React

Dentro del proyecto abre otra terminal:

npm install

Desglose:

npm
└── administrador de paquetes JavaScript

install
└── instala las dependencias del proyecto

npm lee:

package.json

y descarga los paquetes necesarios dentro de:

node_modules/


26. Arrancar Laravel

Actualmente Laravel recomienda utilizar:

composer run dev

para arrancar el entorno de desarrollo.

composer
└── utiliza Composer

run
└── ejecuta un script definido en composer.json

dev
└── nombre del script de desarrollo

Este comando puede coordinar varias herramientas necesarias para desarrollar.

La aplicación estará disponible normalmente en:

http://localhost:8000

27. ¿Entonces para qué existe php artisan serve?

También podemos ejecutar:

php artisan serve
php
└── PHP

artisan
└── consola de Laravel

serve
└── inicia el servidor de desarrollo

Normalmente tendremos:

http://127.0.0.1:8000

Esto arranca el servidor PHP/Laravel.

Sin embargo, si nuestro proyecto utiliza React + Vite, normalmente necesitaremos también ejecutar:

npm run dev

en otra terminal.

Por eso en este caso de usar Laravel, React + autenticación mejor usamos solamente:

composer run dev

resulta especialmente cómodo durante el desarrollo moderno de Laravel.

Laravel documenta actualmente composer run dev como la forma de iniciar el servidor local, el worker de colas y Vite después de preparar el proyecto.


Cuando termines tu aplicaciones Laravel recomienda ejecutar, después de crear una aplicación con Starter Kit:

npm install && npm run build

Aquí tenemos un operador nuevo:

&&

Significa:

Ejecuta el segundo comando solamente si el primero terminó correctamente.

Así:

npm install && npm run build

significa:

npm install

si funciona

npm run build

28. ¿Si tenemos Apache necesitamos php artisan serve?

No.

Tenemos varias posibilidades.

Opción 1 — Desarrollo rápido

composer run dev

Es la opción más sencilla mientras aprendemos Laravel.

Opción 2 — Servidor sencillo Laravel

php artisan serve

y, si necesitamos Vite:

npm run dev

Opción 3 — Apache

Podemos configurar Apache para servir directamente:

curso-laravel/public/

Laravel indica que el servidor web debe apuntar a la raíz web pública de Laravel y no a la raíz completa del proyecto.

Apache resulta útil cuando queremos un entorno local más parecido a un servidor web tradicional.

Pero no es necesario configurarlo para comenzar a aprender Laravel, pero podemos verlo en otros tutoriales futuros.


29. ¿Por qué un Laravel limpio no muestra Login y Register?

Si creamos:

composer create-project laravel/laravel curso-laravel

estamos creando una aplicación Laravel base.

Por eso podemos ver solamente la página inicial de Laravel.

Eso no significa que exista un error.

Si queremos:

Login
Register
Forgot Password
Reset Password
Email verification
Dashboard

conviene utilizar uno de los Starter Kits.

Laravel explica que sus Starter Kits proporcionan la estructura de autenticación tanto del backend como del frontend.

Por eso:

laravel new curso-laravel

y seleccionar:

React
+
Laravel Authentication

produce una aplicación mucho más completa.


30. Qué contiene el Starter Kit React

Conceptualmente tendremos:

Laravel
│
├── PHP
│
├── Routes
│
├── Controllers
│
├── Models
│
├── Eloquent
│
├── Authentication
│
│
├── Inertia
│
└── React
    │
    ├── TypeScript
    ├── Tailwind
    ├── Vite
    └── componentes

Laravel 13 utiliza actualmente React 19, Inertia 3, Tailwind 4 y shadcn/ui en su Starter Kit React.

La mayoría del código frontend se encuentra en:

resources/js/

y contiene carpetas como:

resources/js/
├── components/
├── hooks/
├── layouts/
├── lib/
├── pages/
└── types/

31. Qué ocurre cuando un usuario se registra

Una vez que tenemos autenticación podemos entender todo el flujo:

Usuario
   │
   ▼
React
   │
   │ formulario
   ▼
Inertia
   │
   ▼
Laravel
   │
   │ valida los datos
   ▼
Eloquent
   │
   ▼
MySQL/MariaDB
   │
   ▼
tabla users

Después podemos abrir TablePlus.

Por ejemplo:

curso_laravel
└── users

id | name   | email
---|--------|-----------------------
1  | Andres | usuario@ejemplo.com

TablePlus solamente nos permite visualizar y administrar esos datos.

No es TablePlus quien los almacena.

Los almacena MariaDB/MySQL.


32. El entorno completo

Nuestro Debian queda aproximadamente así:

                    DEBIAN 13
                        │
        ┌───────────────┼────────────────┐
        │               │                │
        ▼               ▼                ▼
      PHP             Node.js         MariaDB
        │               │                ▲
        │               │                │
     Composer           npm          TablePlus
        │               │
        └───────┬───────┘
                │
                ▼
             Laravel
                │
        ┌───────┴───────┐
        │               │
        ▼               ▼
     Backend           React
     Laravel           Inertia
        │
        ▼
     Eloquent
        │
        ▼
   MySQL/MariaDB

33. Comandos que utilizaremos todos los días

Entrar al proyecto:

cd ~/Documentos/Web/Laravel/curso-laravel

Abrirlo en Visual Studio Code:

code .

El punto:

.

significa:

Directorio actual.

Por tanto:

code .

significa:

Abre el directorio donde estoy actualmente en VS Code.

Arrancar el entorno:

composer run dev

Migraciones:

php artisan migrate

Ver rutas:

php artisan route:list

Crear controlador:

php artisan make:controller ProductoController

Crear modelo:

php artisan make:model Producto

Crear modelo y migración:

php artisan make:model Producto -m

En este último comando:

php
└── ejecuta PHP

artisan
└── consola Laravel

make:model
└── crear modelo

Producto
└── nombre del modelo

-m
└── también crear su migración

34. Resumen: Laravel limpio o Laravel completo

Quiero Laravel limpio

Utiliza:

composer create-project laravel/laravel mi-proyecto

Obtendremos:

Laravel
└── estructura base

Es útil cuando queremos decidir manualmente qué tecnologías añadir.


Quiero Laravel con React y autenticación

Utiliza:

laravel new mi-proyecto

Selecciona:

React

Laravel Authentication

MySQL

Después:

cd mi-proyecto
npm install
php artisan migrate
composer run dev

Y tendremos aproximadamente:

Laravel 13
├── React
├── Inertia
├── TypeScript
├── Tailwind
├── Vite
├── Login
├── Register
├── recuperación de contraseña
└── conexión MySQL/MariaDB

Los Starter Kits oficiales están diseñados precisamente para proporcionar este punto de partida completo.


35. Instalación resumida desde Debian 13 limpio

Una vez entendido qué hace cada cosa, los comandos principales son:

sudo apt update
sudo apt upgrade
sudo apt install curl git unzip
sudo apt install apache2
sudo systemctl enable --now apache2
sudo apt install php php-cli libapache2-mod-php php-mbstring php-xml php-curl php-zip php-mysql php-bcmath
sudo apt install composer
sudo apt install nodejs npm
sudo apt install default-mysql-server default-mysql-client
sudo systemctl enable --now mariadb

Crear usuario y base de datos:

sudo mariadb
CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'UnaPasswordSegura';

CREATE DATABASE curso_laravel
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

GRANT ALL PRIVILEGES
ON curso_laravel.*
TO 'laravel'@'localhost';

FLUSH PRIVILEGES;

exit;

Instalar Laravel Installer:

composer global require laravel/installer

Comprobar dónde está:

composer global config bin-dir --absolute

Si fuera necesario, agregarlo a PATH:

echo 'export PATH="$HOME/.config/composer/vendor/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Comprobar:

laravel --version

Crear el proyecto:

laravel new curso-laravel

Seleccionar:

React
Laravel Authentication
MySQL

Entrar:

cd curso-laravel

Configurar .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=curso_laravel
DB_USERNAME=laravel
DB_PASSWORD=UnaPasswordSegura

Instalar frontend:

npm install

Crear tablas:

php artisan migrate

Arrancar:

composer run dev

Abrir:

http://localhost:8000

Y con eso tendremos Debian 13 preparado completamente para comenzar a desarrollar aplicaciones modernas con Laravel 13, React, autenticación y MySQL/MariaDB sin depender de Laravel Herd.

Deja un comentario