Laravel es un framework PHP moderno que facilita el desarrollo de aplicaciones web siguiendo el patrón MVC (Model-View-Controller). Proporciona herramientas integradas para enrutamiento, controladores, modelos, vistas, migraciones, autenticación, colas, cache y más. Su sintaxis limpia y su ecosistema completo permiten desarrollar aplicaciones robustas y mantenibles de manera rápida.
En esta guía práctica se explica cómo instalar Laravel en Ubuntu con Apache, PHP 8.3 y MariaDB y como dejar un entorno de desarrollo listo para hacer una app.
Para que Laravel funcione correctamente en tu entorno:
www-data) en storage y bootstrap/cachesudo apt update && sudo apt upgrade -y
sudo apt install apache2 mariadb-server mariadb-client php8.3 php8.3-cli php8.3-fpm php8.3-mbstring php8.3-mysql php8.3-xml php8.3-zip php8.3-curl php8.3-bcmath unzip curl composer -y
sudo systemctl enable apache2 mariadb php8.3-fpm
sudo systemctl start apache2 mariadb php8.3-fpm
CREATE DATABASE miapplaravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'miapplaraveluser'@'localhost' IDENTIFIED BY 'paso';
GRANT ALL PRIVILEGES ON miapplaravel.* TO 'miapplaraveluser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
cd /var/www
sudo composer create-project laravel/laravel miapplaravel
sudo chown -R www-data:www-data /var/www/miapplaravel
sudo chmod -R 755 /var/www/miapplaravel
sudo chmod -R 775 /var/www/miapplaravel/storage /var/www/miapplaravel/bootstrap/cache
APP_NAME=MiAppLaravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://#IP_DEL_SERVIDOR
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=miapplaravel
DB_USERNAME=miapplaraveluser
DB_PASSWORD=tu_contraseña
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_CONNECTION=sync
Archivo /etc/apache2/sites-available/miapplaravel.conf:
<VirtualHost *:80>
ServerName miapplaravel.local
DocumentRoot /var/www/miapplaravel/public
<Directory /var/www/miapplaravel/public>
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/miapplaravel_error.log
CustomLog ${APACHE_LOG_DIR}/miapplaravel_access.log combined
</VirtualHost>
Activar el sitio y módulos:
sudo a2ensite miapplaravel
sudo a2enmod rewrite proxy_fcgi setenvif
sudo a2enconf php8.3-fpm
sudo systemctl restart apache2
sudo systemctl restart php8.3-fpm
php artisan migrate
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
php artisan config:cache
# En /var/www/miapplaravel
[sudo] composer install
sudo php artisan key:generate
miapplaravel/
├── app/ # Lógica de negocio (Controllers, Models, Providers)
├── bootstrap/ # Inicialización de Laravel y cache
├── config/ # Archivos de configuración
├── database/ # Migraciones, seeders y factories
├── public/ # DocumentRoot de Apache, index.php
├── resources/ # Vistas (Blade), assets y traducciones
├── routes/ # Definición de rutas (web.php, api.php)
├── storage/ # Logs, cache, sesiones, archivos subidos
├── tests/ # Pruebas unitarias y funcionales
├── vendor/ # Dependencias Composer
├── artisan # CLI de Laravel
├── composer.json # Dependencias y autoload
├── .env # Configuración de entorno
Artisan CLI: php artisan
php artisan make:controller NombreControllerphp artisan make:model NombreModelphp artisan make:migration crear_tabla_ejemplophp artisan config:clear, php artisan cache:clearEloquent ORM: Simplifica consultas a la base de datos.
$usuarios = User::all();
Blade: Motor de plantillas para vistas.
<h1>{{ $titulo }}</h1>
Middleware: Filtra peticiones, por ejemplo autenticación.
Queues / Jobs: Ejecuta tareas en segundo plano.
Con todo esto Laravel ya estaría listo para ponernos a hacer una app (WIP...)