Siguiendo con el plan de revisar cada una de las funcionalidades de Magento2 en pro de encontrar cambios, hoy toca algo muy básico, pero que en más de una oportunidad vamos a necesitar usar si es que nos toca acompañar a una tienda en su día a día: poner la tienda en modo Mantenimiento.
Si bien no es que nos guste poner una tienda en esa situación, a veces, es realmente necesario.
En Magento 1, si queríamos poner la tienda en este modo, necesitábamos crear un archivo en la raíz de nuestro proyecto llamado maintenance.flag.
Si ese archivo existía, se pasaba de:
A:
Básicamente, se forzaba un error 503 y la tienda quedaba bloqueada (tanto en el frontend como en el backend).
En muchos proyectos hemos visto que cuando hacíamos esto, la tienda quedaba totalmente bloqueada y, si por algún motivo, necesitábamos poder acceder para ajustar alguna configuración o corregir algo, de forma nativa, no era posible. (De ahí que en muchos proyectos podíamos encontrar modificaciones de lo más variadas en el index.php para manejar los accesos a IPs específicas).
Con Magento2 esta pequeña y subestimada funcionalidad se pone los pantalones largos… bueno, no largos, pero por debajo de las rodillas al menos.
Con el reemplazo de los shell scripts por la consola, ya no tendremos la necesidad ni de crear un archivo ni de modificar código para controlar el acceso.
A través de la consola propia tenemos 4 comandos para manejar esta funcionalidad.
maintenance
maintenance:allow-ips Sets maintenance mode exempt IPs
maintenance:disable Disables maintenance mode
maintenance:enable Enables maintenance mode
maintenance:status Displays maintenance mode status
Lo primero sería revisar el estado con:
bin/magento maintenance:status
Lo cual nos responderá:
Status: maintenance mode is not active
List of exempt IP-addresses: none
Si queremos activar el modo, simplemente ejecutamos:
bin/magento maintenance:enable
Y recibiremos la confirmación.
Enabled maintenance mode
Ahora nuestra tienda pasará de:
A:
Con respecto a la restricción de IPs, aquí contamos con un comando que nos permitirá definir, sin modificar nada de código, qué IPs podrán seguir accediendo a la tienda. Para esto, usamos:
bin/magento maintenance:allow-ips
Para agregar IPs, simplemente las listamos luego del comando (la segunda línea será la respuesta):
bin/magento maintenance:allow-ips 192.168.0.10 192.168.0.11
Set exempt IP-addresses: 192.168.0.10, 192.168.0.11
Si volvemos a validar el estado del modo, veremos algo como esto:
Status: maintenance mode is active
List of exempt IP-addresses: 192.168.0.10, 192.168.0.11
Supongamos que terminamos de trabajar y queremos volver a poner la tienda online. Para eso ejecutamos:
bin/magento maintenance:disable
Cuya respuesta será:
Disabled maintenance mode
Y con esto la tienda vuelve a estar disponible, aunque debemos tener en cuenta un detalle. Si volvemos a consultar el estado con:
bin/magento maintenance:status
Veremos esto:
Status: maintenance mode is not active
List of exempt IP-addresses: 192.168.0.10, 192.168.0.11
Esto quiere decir que las IPs ingresadas anteriormente quedan en la lista como posibles excepciones. Salvo que tengamos total certeza que la IP no podrá ser usado por un tercero, deberemos limpiar la lista de IPs.
Para esto, ejecutamos:
maintenance:allow-ips --none
Y ahora si, si volvemos a chequear el status, el resultado será:
Status: maintenance mode is not active
List of exempt IP-addresses: none