La opción recomendada para utilizar en vez de Laragon en el desarrollo de aplicaciones en MacOS y Windows es la de Laravel Herd que viene siendo el equivalente de Laragon pero para MacOS y Windows, con Laravel Herd tenemos disponibles un ambiente en el cual desarrollar en Laravel y podemos instalar y varias versiones de dependencias como una base de datos o PHP; la pagina oficial viene siendo esta:
Una vez instalado, tendremos un panel como el siguiente:
Ahora, vamos a instalar un módulo adicional para gestionar las base de datos:
Una vez instalado, tendremos una ventana como la siguiente:
También habilitados que se inicie al momento de iniciar secion y que se anexe a la barra:
Desde la ventanas anteriores, podemos dar click al icono de + y crear una base de datos:
En la cual, solamente tenemos que colocar el nombre de la base de datos y el servicio que quieras emplear, en este curso, emplearemos MySQL.
Una vez creada la base de datos, tenemos acceso directo al manejador que tengamos instalado, en este ejemplo, el de Table Plus.
Instala Extensiones Adicionales en Laravel Herd
Vamos a conocer como podemos agregar extensiones adicionales empleando Laravel Herd el cual es el nuevo ambiente de desarrollo de Laravel a partir de la versión 10 en MacOS y 11 de Laravel para Windows; es un entorno muy similar al que tenemos en Laragon con Windows, en donde podemos instalar y gestionar dependencias de Laravel como lo son PHP, Node, entre otros.
Extensiones Adicionales en Laravel Herd
Como es normal en el desarrollo de software, muchas veces es necesario instalar extensiones adicionales con el cual, poder emplear ciertas funcionalidades o instalar ciertos paquetes, así que, vamos a comenzar.
Instalación de Extensiones PHP Adicionales
Laravel Herd incluye las extensiones PHP necesarias para desarrollar en Laravel, pero, si queremos instalar dependencias adicionales, tienes que seguir los siguientes pasos:
Una vez descargado el DLL de la página la cual quieres instalar la extensión, simplemente debes de copiar la extensión en la carpeta dll de php en Windows.
En MacOS, podemos usar Homebrew:
$ brew install phpPara instalar una extensión:
$ pecl install [extension-name]Luego, en ambos casos, ya sea Windows o MacOS, debes de activar la extensión desde el php.ini:
Herd/config/php/<version>/php.ini
Y esto es todo lo que necesitas saber para agregar extensiones a tu Herd; como puedes apreciar, los pasos son similares a cualquier otro ambiente como Laragon
Laravel Herd - Reparar errores 504 - 503 PHP y Nginx
Estaba haciendo unas operaciones en una aplicación en Laravel en modo producción. Como es habitual, en este entorno tengo ocultos los errores, y cualquier problema debería guardarse en un log.
Al realizar cierta operación, siempre se producía un error. Al principio era un 503, y luego se convirtió en un 504, lo cual era extraño porque no se generaba un log asociado.
Y eso es lo primero que debes revisar: si no se genera un log, puede ser que el problema no sea Laravel, sino otro componente, como PHP o el servidor web (Apache o Nginx, dependiendo de tu stack).
En mi caso, estoy utilizando Nginx. Ya más o menos sabía por dónde venía el problema: falta de recursos. A continuación, te explico cómo lo abordé.
Reproducción del error en desarrollo
Decidí replicar la operación en el entorno de desarrollo, donde tengo la ventaja de ver los errores directamente en pantalla.
Mi sorpresa fue que tampoco se generaba ningún log en desarrollo, lo cual reforzaba la hipótesis de que el problema no estaba en Laravel, sino en el servidor o en PHP.
Detectar el problema: operación + Error NO en pantalla/log
Con esa información, lo siguiente era analizar qué operación estaba ejecutando.
En mi caso, estaba generando un libro (como el que estás viendo en pantalla). Todos los libros los genero directamente en producción, donde tengo la data ya saneada.
Normalmente, esos libros tienen entre 400 y 500 páginas. Pero este en particular es un monstruo de 813 páginas, es decir, el doble del tamaño habitual.
Naturaleza del problema: recursos insuficientes
Esto implica dos cosas:
- La operación va a tardar bastante tiempo.
- Es mucho más pesada que las demás y demanda más recursos.
Por lo tanto, ya teníamos una idea más clara de cuál era el problema: una operación intensiva que excede los límites configurados por defecto.
Subir recursos de tiempo y memoria a PHP y nginx
Dado que no había logs generados por Laravel, pero sí un comportamiento anómalo (error 504), el siguiente paso fue revisar los límites configurados en PHP.
En mi caso, uso Laravel Herd, que emplea Nginx, así que el enfoque era un poco distinto a usar Apache.
Lo primero que hice fue aumentar los recursos en el archivo php.ini. Esto es lo típico que se intenta cuando tienes operaciones pesadas:
C:\Users\<user>\.config\herd\bin\php8X
max_execution_time = 600
memory_limit = 1024M
post_max_size = 256M
upload_max_filesize = 256M¿Cómo accedí al archivo php.ini en Laravel Herd?
En Laravel Herd es muy fácil:
- Vas al icono de PHP en la interfaz.
- Clic derecho sobre la versión activa.
- Seleccionas la opción: "Open php.ini in directory".
Una vez abierto, buscas las líneas correspondientes y las modificas.
Después de hacer esos cambios... no funcionó.
Subir recursos de tiempo y memoria a Nginx
Como PHP no resolvió el problema, era momento de mirar más profundo en el servidor.
Pasé a revisar el archivo de configuración de Nginx. En Laravel Herd, esto se encuentra dentro de:
C:\Users\<user>\.config\herd\config\nginx\herd.conf
location / {
rewrite ^ "C:/Program Files/Herd/resources/app.asar.unpacked/resources/valet/server.php" last;
#MIAS
proxy_read_timeout 3000;
proxy_connect_timeout 3000;
proxy_send_timeout 3000;
}Sin embargo, tampoco funcionó.
Logs de Nginx
Entonces me fui al log del servidor Nginx, que está en:
C:\Users\<user>\.config\herd\Log
Al revisar el log, indicaba claramente que era un timeout, lo cual no aparecía en los logs de Laravel:
[error] 616#35124: *1 upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while reading response header from upstream, client: 127.0.0.1, server: , request: "POST /livewire/update HTTP/1.1", upstream: "fastcgi://127.0.0.1:9084", host: "xx.test", referrer: "http://xx.test/dashboard/books/edit/1"Copié el mensaje del error y se lo pasé a ChatGPT (aunque también podrías buscarlo en Google).
Esto me ayudó a confirmar que el problema era un timeout, y que los parámetros a modificar no eran solo los del php.ini, sino también los del archivo de configuración de Nginx.
Ajusté las siguientes líneas en Nginx:
C:\Users\<user>\.config\herd\config\nginx\herd.conf
location ~ [^/]\.php(/|$) {
***
#MIAS
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
send_timeout 600;
}Instalar y Configurar Redis
Veremos como instalar Redis para desarrollar en Laravel, ya sea que quieras emplearlo para el sistema de caches, para el sistema de colas y trabajos, etc.
Windows, MacOS con Dbngin y Laravel herd
Si estás usando Laravel Dbngin en MacOS/Windows junto con Laravel Herd, puedes crear una base de datos preservando la configuración por defecto:
Laragon en Windows
Si empleas Laragon hay que configurar una DLL según la versión que estés empleando; más información en el foro oficial de Laragon:
https://dev.to/dendihandian/installing-php-redis-extension-on-laragon-2mp3
Debes de descargar la DLL en Windows según la versión que tengas ejecutando, NTS o TS y tu versión de PHP, en mi caso es NTS:
Descargas la DLL desde:
https://pecl.php.net/package/redis
Luego copias la DLL en la versión de PHP que estés ejecutando en Laragon; por ejemplo:
- C:\laragon\bin\php\php-8.XX-nts-Win32-vs16-x64\ext
Y activas la extensión:
En Laragon, ya viene instalado por defecto Redis, anteriormente configuramos la DLL o conector a la base de datos para ejecutar la base de datos de Redis:
C:\laragon\bin\redis\redis-x6XX\redis-server.exe
Y verás una ventana como la siguiente:
Que indica que Redis se está ejecutando y está lista para emplear; de igual forma, puedes probar el estado de redis ejecutando:
$ redis-cliSi ver un mensaje como el siguiente:
Could not connect to Redis at 127.0.0.1:6379: No se puede establecer una conexi¾n ya que el equipo de destino deneg¾ expresamente dicha conexi¾n.
not connected>Significa que tienes problemas con la ejecución del motor de base de datos.
También puedes ejecutar:
$ redis-cli$ 127.0.0.1:6379> pingY debes de ver como salida:
PONGEn Linux:
$ sudo apt-get install redis php8.3-redis
$ sudo systemctl restart php8.3-fpm.serviceConfiguraciones adicionales
Puede que sea necesario instalar el paquete de Predis a tu proyecto Laravel mediante Composer:
$ composer require predis/predisEl cual es el cliente o conector para que pueda emplear Redis en Laravel, para emplear Redis para la base de datos, no debería ser necesario, así que solamente instalarlo en caso de que sea necesario.
En caso de que quieras cambiar algun parametro d configuracion de redis, puedes especificarlo de la siguiente manera:
.env
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379Indicas las opciones de conexion a Redis (al igual que con cualquier otra base de datos):
config/database.php
'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'),
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
'cache' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD'),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 1),
],
];config\cache.php
'redis' => [
'driver' => 'redis',
'connection' => env('REDIS_CACHE_CONNECTION', 'cache'),
'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'),
],Finalmente, configuramos el conector para que sea Redis ya sea en el .env:
.env
CACHE_STORE=redisY/o archivo de configuración:
config\cache.php
'default' => env('CACHE_STORE', 'redis')Y eso sería todo, al cambiar de sistema de caché, es independiente a la implementación que vayamos a realizar.
Mi Kit de Desarrollo para Laravel 2026 - Windows y MacOS

Debido a que Laragon ya no es gratuito, ya no te recomiendo que lo utilices para desarrollar. Tenemos otras herramientas que podrías emplear, como Docker directamente. Aunque sinceramente, para desarrollar con Laravel, Docker nunca me ha gustado demasiado, ya que es un poco más laborioso el asunto. Sin embargo, es completamente utilizable.
Si te va bien trabajar con Docker, recuerda que puedes usarlo junto con Laravel Sail, que funciona perfectamente tanto en Windows como en Mac (y creo que también en Linux, ya que Docker es multiplataforma). Pero como te digo, ya no te recomiendo usar Larragon bajo ningún concepto, a menos que quieras pagar o necesites alguna característica específica que realmente valga la pena. De lo contrario, para trabajar con Laravel, no hace falta.
Alternativa recomendada: Laravel Herd
El enfoque que te recomiendo ahora es Laravel Herd. Recuerda que está disponible tanto para Windows como para Mac. Incluso, inicialmente salió para Mac y luego fue lanzado para Windows. Así que tienes soporte en ambos sistemas.
¿Y la base de datos?
Esta es el "talón de Aquiles" con Herd, ya que Laragon incluía automáticamente MySQL o MariaDB. Para suplir eso, puedes usar DBngin, que es otra herramienta que, si mal no recuerdo, al principio solo estaba disponible para Mac, pero ahora también está en Windows.
Es por eso que quise grabar este video: para mostrarte el kit de desarrollo que te recomiendo para Laravel.
Kit de desarrollo Laravel
Ya sea que estés usando Mac o Windows, puedes emplear ambas herramientas perfectamente. Aquí puedes ver que me funcionan sin problema: tengo Laravel Herd con mis proyectos y, por otro lado, DBngin funcionando sin inconvenientes.
Ojo: también podemos trabajar con Laravel sin necesidad de una base de datos como MySQL, ya que por defecto viene con SQLite, que me parece excelente. De hecho, es la que usualmente utilizo en los cursos.
¿Por qué prefiero MySQL en proyectos reales?
Personalmente, cuando trabajo en proyectos reales, que sé que van a crecer en tablas, migraciones y modelos, prefiero usar MySQL porque me permite editar, personalizar o cambiar la base de datos de una manera más sencilla.
Con SQLite, cambiar una base de datos puede ser un dolor de cabeza. Me ha pasado en cursos donde, por ejemplo, olvidé una letra en una tabla, y tengo que modificarla o agregar una nueva columna. Sí, eso se puede hacer con migraciones, y de hecho, ese es el enfoque recomendado con cualquier framework moderno.
Pero cuando estoy con un proyecto real, y tengo la necesidad de modificar o crear migraciones constantemente para simplemente cambiar una tabla, prefiero hacerlo de forma manual.
El problema es que para reflejar esos cambios con migraciones, muchas veces hay que hacer un migrate:refresh, lo cual elimina todas las tablas y las recrea. Esto no es viable en un proyecto en producción.
Por eso, prefiero aplicar los cambios manualmente en la base de datos y, si es necesario, generar el SQL correspondiente para ejecutarlo directamente en el entorno de producción. Algo que con SQLite sería un poco más complicado.
Conclusión: Mi entorno ideal
Entonces, el objetivo de este video era mostrarte mi entorno de desarrollo recomendado para Laravel:
- Laravel Herd
- DBngin
- (Opcional) TablePlus como gestor visual de bases de datos, el cual también puedes instalar. Aunque puedes usar cualquier otro, con DBngin ya viene con acceso directo configurado.
Resumen
- Identifica la operación que causa el error.
- Si no hay logs en Laravel, puede ser problema de PHP o del servidor.
- Ajusta primero los parámetros de php.ini: max_execution_time y memory_limit.
- Si no funciona, pasa a revisar los archivos de configuración de Nginx.
- Usa el log del servidor para obtener más pistas.
- Ajusta los timeouts en Nginx si es necesario.
- Siempre comenta tus cambios y haz copias de respaldo antes de modificar archivos críticos.