Documentación Práctica de Laravel - Construcción del entorno de Desarrollo

Resumen

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.


Requisitos previos

Para que Laravel funcione correctamente en tu entorno:


Instalación

1. Actualizar el sistema e instalar dependencias

sudo 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

2. Crear base de datos y usuario en MariaDB

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;

3. Crear el proyecto Laravel

cd /var/www
sudo composer create-project laravel/laravel miapplaravel

4. Ajustar permisos

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

5. Configurar en .env

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

6. Configurar Apache y sitio

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

7. Ejecutar migraciones

php artisan migrate
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
php artisan config:cache

8. Instalar dependencias de composer y generar key

# En /var/www/miapplaravel
[sudo] composer install
sudo php artisan key:generate

Estructura de directorios y ficheros

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

Configuración y herramientas de Laravel

Con todo esto Laravel ya estaría listo para ponernos a hacer una app (WIP...)