Nuestro Blog.

Desarrollo Laravel en Windows

By anfibic / 08 December 2023
Desarrollo Laravel en Windows
  1. Home »
  2. Blog »
  3. Desarrollo 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.

Integración de APIs en extranets
Extranets

Integración de APIs en extranets

En el dinámico mundo del desarrollo web y las soluciones empresariales, las APIs (Interfaces de Programación de Aplicaciones) se han convertido en un componente esencial,...
TailwindCSS para Principiantes
Programación

TailwindCSS para Principiantes

En el emocionante y siempre evolutivo mundo del desarrollo web, los frameworks de CSS juegan un papel crucial en la creación de sitios web visualmente...
Optimizando la gestión de pedidos
Extranets

Optimizando la gestión de pedidos

En el ámbito empresarial B2B, la eficiencia y precisión en la gestión de pedidos son fundamentales para el éxito y la satisfacción del cliente. En...
Introducción a las Extranets
Extranets

Introducción a las Extranets

Empezamos con este post una nueva serie que espero conseguir sea tan interesante como lo es en la vida real. Hablaremos en diferentes post de...
Ver todos los artículos de Nuestro Blog.

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

Configuración de cookies

Solo tenemos una cookie! Utilizamos cookies de terceros con fines analíticos.
Tienes la información de como las utilizamos aqui: https://anfibic.com/es/ley-de-cookies