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.
Contenidos
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:
-
Añadir tu usuario al grupo
www-dataPara 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:
addusertambién funciona, perousermodes más estándar para modificar usuarios existentes). -
Corregir propietarios actuales
Si ya tienes archivos creados con
root(por haber usadosudo code), restaura la propiedad al grupo correcto:sudo chown -R $USER:www-data /var/www/html/tu-proyecto -
Configurar permisos de escritura
Asegúrate de que el grupo tenga permisos de escritura en los directorios clave (como
storageybootstrap/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
rooty el servidor no puede leerlo. -
Solución: Nunca uses
sudopara ejecutar tu editor de código. Configura los permisos del grupo como se indicó arriba.
-
Causa: El archivo ahora pertenece a
-
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
-
Solución: Asegúrate de que la carpeta de logs tenga permisos de escritura para el grupo:
Creación de un Nuevo Proyecto Laravel
Pasos básicos para levantar una aplicación desde cero:
- Base de Datos: Crea una base de datos vacía en MySQL/MariaDB.
-
Instalación:
laravel new nombre-app -
Configuración de Entorno:
- Copia
.env.examplea.env. - Configura las credenciales de base de datos (
DB_DATABASE,DB_USERNAME, etc.).
- Copia
-
Migraciones: Genera las tablas base.
php artisan migrate -
Desarrollo MVC:
- Modelos: Representación de tus tablas.
- Controladores: Lógica de negocio.
-
Vistas/Rutas: Interfaz y puntos de entrada (
routes/web.phporoutes/api.php).
Crear una API REST en Laravel
Pasos para exponer tu backend a clientes externos (React, Vue, Mobile):
-
Definir Rutas: Usa
routes/api.phppara definir tus endpoints. Las rutas aquí tienen prefijo/apiy middleware de limitación de tráfico por defecto. -
Crear Controladores API:
php artisan make:controller Api/ProductController --api -
Respuesta JSON: Retorna respuestas estructuradas.
public function index() { return response()->json(Product::all()); } - 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:
- Edita
database/seeders/DatabaseSeeder.php. -
Usa el modelo
Userpara 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'), ]); } - 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:
-
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 -
Reconstruir contenedores:
docker-compose down docker-compose up -d --build -
Verificación:
Entra al contenedor y verifica los propietarios:
docker-compose exec app ls -la storage/logs
Te podría interesar
-
Depurando Race Conditions: Cuando DOMContentLoaded Falla
A veces, las mejoras de rendimiento traen efectos secundarios inesperados. Recientemente, al migrar Becommerce.es a una infraestructura más rápida, una funcionalidad crítica dejó de funcionar:...
-
La Guía Definitiva: Comentarios en Jekyll y Migración Híbrida con Giscus
Una de las grandes “pérdidas” al migrar de WordPress a un sitio estático como Jekyll es el sistema de comentarios. Al no tener base de...
-
Docker Swarm contenedor php-fpm infectado 100% CPU
Cómo Arreglar Docker Swarm Infectado con Malware PHP-FPM
-
Illuminate \ Database \ QueryException PHP SQLSTATE[HY000] [2002] No such file or directory select * from sessions where id = B9e limit 1
¡Arregla el error de Database No such file or directory select!
-
Problema comando: git Fetch --all regresa: error: cannot lock ref 'refs/remotes/origin/main: is at sd78f7u... but expected s9.... From https://GitHub.com/... (Unable to update local ref)
Problema al ejecutar git fetch --all