Laravel - Guía de Configuración, Permisos y Primeros Pasos
Desarrollo

Laravel - Guía de Configuración, Permisos y Primeros Pasos

15 Apr, 2023 • 5 min de lectura

Laravel es un framework potente, pero configurar el entorno de desarrollo (especialmente en Linux y Docker) puede presentar desafíos con permisos y configuraciones iniciales. Esta guía recopila soluciones a problemas comunes y pasos esenciales para iniciar un proyecto.

Gestión de Permisos en Linux

Uno de los problemas más frecuentes al desarrollar en Linux es el conflicto de permisos entre tu usuario local y el servidor web (generalmente www-data).

¿Cómo evitar errores de permisos al editar ficheros?

Si recibes errores como “Insufficient permissions” al guardar cambios en VSCode o problemas con el propietario de los archivos, sigue estos pasos:

  1. Añadir tu usuario al grupo www-data Para que tu usuario principal tenga los mismos permisos que el servidor web, agrégalo al grupo de Apache/Nginx:
    sudo usermod -aG www-data $USER
_(Nota: `adduser` también funciona, pero `usermod` es más estándar para modificar usuarios existentes)._
  1. Corregir propietarios actuales Si ya tienes archivos creados con root (por haber usado sudo code), restaura la propiedad al grupo correcto:
    sudo chown -R $USER:www-data /var/www/html/tu-proyecto
  1. Configurar permisos de escritura Asegúrate de que el grupo tenga permisos de escritura en los directorios clave (como storage y bootstrap/cache):
    sudo chmod -R 775 storage bootstrap/cache

Errores Comunes de Permisos

  • Problema: Editas un archivo con sudo code . y el servidor web devuelve error 500.
    • Causa: El archivo ahora pertenece a root y el servidor no puede leerlo.
    • Solución: Nunca uses sudo para ejecutar tu editor de código. Configura los permisos del grupo como se indicó arriba.
  • Problema: “The stream or file laravel.log could not be opened in append mode: Permission denied”
    • Solución: Asegúrate de que la carpeta de logs tenga permisos de escritura para el grupo:
        sudo chmod -R 775 storage/logs

Creación de un Nuevo Proyecto Laravel

Pasos básicos para levantar una aplicación desde cero:

  1. Base de Datos: Crea una base de datos vacía en MySQL/MariaDB.
  2. Instalación:
    laravel new nombre-app
  1. Configuración de Entorno:

    • Copia .env.example a .env.
    • Configura las credenciales de base de datos (DB_DATABASE, DB_USERNAME, etc.).
  2. Migraciones: Genera las tablas base.

    php artisan migrate
  1. Desarrollo MVC:

    • Modelos: Representación de tus tablas.
    • Controladores: Lógica de negocio.
    • Vistas/Rutas: Interfaz y puntos de entrada (routes/web.php o routes/api.php).

Crear una API REST en Laravel

Pasos para exponer tu backend a clientes externos (React, Vue, Mobile):

  1. Definir Rutas: Usa routes/api.php para definir tus endpoints. Las rutas aquí tienen prefijo /api y middleware de limitación de tráfico por defecto.
  2. Crear Controladores API:
    php artisan make:controller Api/ProductController --api
  1. Respuesta JSON: Retorna respuestas estructuradas.
   public function index() {
        return response()->json(Product::all());
    }
  1. Seguridad (Sanctum/Passport): Configura autenticación para proteger los endpoints sensibles.

Seeders: Usuarios por Defecto

Para inicializar tu base de datos con un usuario administrador o datos de prueba:

  1. Edita database/seeders/DatabaseSeeder.php.
  2. Usa el modelo User para crear el registro:
   use App\Models\User;
    use Illuminate\Support\Facades\Hash;

    public function run()
    {
        User::create([
            'name' => 'Admin Usuario',
            'email' => '[email protected]',
            'password' => Hash::make('password_segura'),
        ]);
    }
  1. Ejecuta el seeder:
    php artisan db:seed

Troubleshooting Docker y Permisos

Si usas Docker, los permisos pueden ser más complejos por la diferencia de IDs de usuario entre el host y el contenedor.

Error: “Permission denied” en logs con Docker

Si laravel.log da error al escribir dentro del contenedor:

  1. En tu Dockerfile: Asegúrate de cambiar el propietario de las carpetas críticas al usuario interno de la imagen (usualmente www-data).
   COPY . /var/www/html
    RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache
  1. Reconstruir contenedores:
   docker-compose down
    docker-compose up -d --build
  1. Verificación: Entra al contenedor y verifica los propietarios:
    docker-compose exec app ls -la storage/logs