Nuestro Blog.

Desarrollo Laravel en Windows

By anfibic / 08 December 2023
Desarrollo Laravel en Windows

Durante este puente me decidía a configurar un ordenador Windows que tengo en casa para poder desarrollar en él en mis ratos libres, para tener un entorno separado del ordenador del trabajo. Hacía mil años y medio que no configuraba un Windows para desarrollar, y decidí utilizar la AI de GPT para que me guiara en el proceso. Siendo un usuario de Mac desde hace años, y que la relación con Windows se había reducido a una relación de multimedia, tengo que decir que el proceso ha resultado ser bastante fluido, aparecieron un par de problemas, que tuvieron una solución sencilla, y en un par de horas el equipo estaba listo para desarrollar. Las diferencias entre los dos sistemas operativos son mínimas hoy en día, y me ha sorprendido muy gratamente la integración de virtualización que lleva Windows por defecto, un comando y descargas e instalas un servidor Ubuntu,... 

Configurar un entorno de desarrollo puede ser un desafío, especialmente al cambiar de sistema operativo. En esta publicación, te guiaré a través del proceso de configurar un entorno de desarrollo Laravel con Docker en Windows, resaltando los problemas encontrados y sus soluciones.

Comenzando

1. Instalar Docker en Windows

Empezamos con la instalación de Docker Desktop en Windows, una plataforma esencial para ejecutar aplicaciones en contenedores.

Problema: Errores con WSL 2

Nos encontramos con errores relacionados con la configuración de WSL 2 (Windows Subsystem for Linux).

Solución:

Activamos la característica de Plataforma de Máquina Virtual de Windows y aseguramos que la virtualización estuviera habilitada en la BIOS.

2. Configuración de PHP y Composer

Para crear un proyecto Laravel, necesitamos PHP y Composer, un gestor de dependencias de PHP.

Problema: Extensiones de PHP no Cargan

PHP mostró errores por la falta de extensiones como curl, mbstring y zip.

Solución:

Revisamos y editamos el archivo php.ini para asegurarnos de que la extension_dir estuviera correctamente configurada y que las extensiones necesarias estuvieran habilitadas.

3. Creación del Proyecto Laravel

Con PHP y Composer listos, creamos un nuevo proyecto Laravel.

Dockerizando la Aplicación Laravel

1. Creación del Archivo Docker Compose

En el directorio del proyecto Laravel, creamos un docker-compose.yml. Este archivo define los servicios: PHP, Nginx y MySQL.

Este es un ejemplo del archivo que me propuso GPT4:

version: '3.8'

services:
  app:
    image: php:8.1-fpm
    container_name: laravel_app
    volumes:
      - ./:/var/www
    working_dir: /var/www
    networks:
      - laravel

  webserver:
    image: nginx:alpine
    container_name: laravel_webserver
    ports:
      - "8080:80"
    volumes:
      - ./:/var/www
      - ./docker/nginx:/etc/nginx/conf.d
    depends_on:
      - app
    networks:
      - laravel

  db:
    image: mysql:5.7
    container_name: laravel_db
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: rootpassword
    volumes:
      - dbdata:/var/lib/mysql
    networks:
      - laravel

networks:
  laravel:
    driver: bridge

volumes:
  dbdata:
    driver: local

2. Configuración de Nginx y MySQL

Establecimos Nginx como servidor web y MySQL para la base de datos.

  • Configuramos app.conf para Nginx, asegurándonos de que el servidor pueda manejar solicitudes para la aplicación Laravel.

Este es un ejemplo de como quedo configurado:

server {
    listen 80;
    server_name linter-windows-test.test;
    index index.php index.html;
    root /var/www/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

Problema: Conexión al Servidor Local

Inicialmente, hubo problemas para conectar con el servidor local a través del dominio personalizado http://linter-windows-test.test.

Solución:

Actualizamos el archivo de hosts de Windows (C:\Windows\System32\drivers\etc\hosts) agregando una entrada para redirigir linter-windows-test.test a 127.0.0.1. Esto permite que el navegador encuentre y cargue la aplicación desde el entorno Docker local.

Herramientas Adicionales

Para la gestión de bases de datos, recomendamos herramientas como MySQL Workbench (descarga aquí) y DBeaver (descarga aquí), ambas compatibles con Windows y capaces de conectarse a MySQL en Docker.

Conclusión

Al final, logramos configurar un entorno de desarrollo Laravel funcional en Windows usando Docker, superando los desafíos técnicos comunes en el camino. Este entorno nos permite desarrollar aplicaciones Laravel de manera eficiente, aprovechando las ventajas de Docker.

Herramientas del artesano
El camino del artesano

El Artesano y Su Caja de Herramientas

El trabajo de un artesano siempre ha dependido de la selección cuidadosa de sus herramientas. Desde los cinceles y martillos hasta las sierras y limas,...
Personalización de Extranets
Extranets

Personalización de Extranets

En el mundo empresarial, ninguna empresa es igual a otra. Cada negocio tiene sus propios procesos, clientes y objetivos. Por eso, cuando se trata de...
Extranets vs. Intranets
Extranets

Extranets vs. Intranets

En el mundo digital actual, los términos extranet e intranet suelen generar confusión, especialmente cuando se trata de determinar cuál es la mejor opción para...
Desafios y Beneficios de tener tu propia extranet
Extranets

Extranets: Beneficios y Desafíos

Extranets para Pequeñas Empresas: Beneficios y Desafíos En un mundo cada vez más digitalizado, las pequeñas empresas deben adaptarse rápidamente para mantenerse competitivas. Una herramienta...
Ver todos los artículos de Nuestro Blog.
¿Te ha parecido interesante este artículo?

Contacta con nosotros

Comparte con nosotros tus dudas, opiniones o sugerencias. Estamos aquí para ayudarte y para seguir aprendiendo juntos.
Empecemos. Rellena el siguiente formulario.

Usamos cookies de terceros con fines analíticos, en resumen solo usamos las cookies de Google Analytics para poder analizar nuetro tráfico.

Más información