Tryb utrzymania w Magento 2 (Maintenance Mode)
Opublikowano: 17 lipca 2026
Tryb utrzymania (maintenance mode) to mechanizm Magento, który pokazuje klientom stronę informacyjną zamiast sklepu, gdy musisz wykonać operację wymagającą chwilowej niedostępności - wdrożenie nowej wersji, restore bazy, krytyczna aktualizacja.
Kiedy używać maintenance mode
| Sytuacja | Maintenance? |
|---|---|
| Deploy nowej wersji kodu / nowego modułu | Tak |
setup:upgrade po dodaniu modułu |
Tak |
| Migracja / restore bazy | Tak |
| Aktualizacja PHP / MySQL | Tak |
| Zmiany w konfiguracji w panelu admina | Nie (klienci nie zauważają) |
| Import produktów / qty / klientów | Nie (import jest async) |
| Reindex w trybie schedule | Nie |
| Zmiana ceny pojedynczego produktu | Nie |
| Awarie SSL / DNS | Nie (maintenance i tak niedostępny) |
Generalna zasada: maintenance mode tylko, gdy klient mógłby zobaczyć błędy serwera (500) lub niespójne dane podczas wdrożenia.
Krok 1. Włącz / wyłącz przez CLI
# Włącz
bin/magento maintenance:enable
# Wyłącz
bin/magento maintenance:disable
# Sprawdź status
bin/magento maintenance:status
Po włączeniu Magento tworzy plik flag:
var/.maintenance.flag
Obecność tego pliku sprawia, że wszyscy klienci widzą stronę "Service Temporarily Unavailable".
Krok 2. IP whitelist - wpuszczanie devów i adminów
Podczas wdrożenia chcesz testować sklep z biurowego IP, ale klienci nie powinni mieć dostępu. Dlatego maintenance mode wspiera whitelist IP:
# Włącz maintenance + dodaj IP do whitelist
bin/magento maintenance:enable --ip=203.0.113.10 --ip=198.51.100.20
# Tylko dodaj IP (bez włączania)
bin/magento maintenance:allow-ips 203.0.113.10
# Wyczyść whitelist
bin/magento maintenance:allow-ips --none
IP w whitelist trafiają do pliku var/.maintenance.ip:
203.0.113.10
198.51.100.20
Klienci z tych IP widzą normalny sklep, reszta - stronę maintenance.
Cały zespół wdrożeniowy: Przed dużym deployem zbierz IP całego zespołu (devs, QA, PM) i wpisz je hurtem:
bin/magento maintenance:allow-ips 203.0.113.10 203.0.113.11 203.0.113.12Lub: użyj VPN firmowy i dodaj tylko IP serwera VPN - wszyscy zdalni zobaczą sklep przez VPN.
Krok 3. Custom maintenance page
Domyślna strona Magento jest brzydka i techniczna. Możesz nadpisać:
pub/errors/default/503.phtml
albo, dla custom maintenance:
pub/errors/default/503.phtml.original (stwórz kopię i edytuj 503.phtml)
Wskazówki dla custom maintenance page
- Logo sklepu - żeby klient nie myślał że trafił na phishing.
- Komunikat po polsku - "Trwa konserwacja sklepu. Wracamy o 14:00." (z konkretną godziną).
- Email / kontakt - gdyby ktoś pilnie potrzebował kontaktu.
- Status page - link do statusu (np. status.sklep.pl).
- Social media links - informacja na FB / Twitter, gdzie aktualnie wisi info "wracamy o ...".
Przykład minimalnej custom page
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Sklep XYZ - Konserwacja</title>
<style>
body { font-family: sans-serif; text-align: center; padding: 100px 20px; }
h1 { color: #f26322; }
</style>
</head>
<body>
<img src="/media/logo.png" alt="Sklep XYZ">
<h1>Trwa konserwacja sklepu</h1>
<p>Wracamy o <strong>14:00</strong>. Przepraszamy za niedogodności.</p>
<p>W razie pilnych spraw: <a href="mailto:[email protected]">[email protected]</a></p>
<p><a href="https://facebook.com/sklep">Facebook</a> | <a href="https://twitter.com/sklep">Twitter</a></p>
</body>
</html>
503 HTTP status code: Strona maintenance zwraca HTTP 503 Service Unavailable - to dobrze:
- Google wie, że to chwilowa niedostępność, nie wyrzuca strony z indeksu.
- Po wyłączeniu maintenance crawler szybko wraca.
Jeśli zwróciłbyś 200 OK z treścią "we'll be back" - Google zindeksuje stronę maintenance zamiast właściwej treści. Strata SEO.
Krok 4. Skript wdrożeniowy z maintenance
Typowy flow deploya z maintenance:
#!/bin/bash
# deploy.sh
set -e
cd /var/www/magento
# 1. Włącz maintenance (whitelist office IP)
bin/magento maintenance:enable --ip=203.0.113.10
# 2. Update kodu
git pull origin main
# 3. Update composer
composer install --no-dev --optimize-autoloader
# 4. Setup
bin/magento setup:upgrade --keep-generated
bin/magento setup:di:compile
bin/magento setup:static-content:deploy -f pl_PL en_US
# 5. Cache
bin/magento cache:flush
# 6. Permissions
sudo chown -R www-data:www-data var generated pub/static pub/media
# 7. Wyłącz maintenance
bin/magento maintenance:disable
# 8. Powiadomienie
echo "Deploy successful at $(date)" | mail -s "Magento Deploy" [email protected]
Maintenance mode + Varnish
Jeśli używasz Varnish jako Full Page Cache, klient może widzieć wycached'owaną stronę nawet w trybie maintenance. Aby tego uniknąć:
Wariant 1: Wyczyść Varnish przed maintenance
bin/magento cache:flush
sudo varnishadm "ban req.url ~ ."
Wariant 2: Konfiguracja Varnish, by respektował HTTP 503
W VCL Varnisha:
sub vcl_backend_response {
if (beresp.status == 503) {
set beresp.uncacheable = true;
return (deliver);
}
}
Najczęstsze problemy
Włączyłem maintenance i nie mogę się dostać do panelu
Twoje IP nie jest w whitelist:
# Sprawdź swoje publiczne IP (z poziomu serwera)
curl ifconfig.me
# Dodaj IP do whitelist
bin/magento maintenance:allow-ips $(curl -s ifconfig.me)
Lub: usuń var/.maintenance.flag ręcznie (bez maintenance całkowicie):
rm var/.maintenance.flag
Maintenance page się nie pokazuje, klient widzi błąd 500
Plik pub/errors/default/503.phtml ma błąd PHP lub brakuje pliku. Sprawdź:
ls -la pub/errors/default/
Jeśli brak - przywróć z pub/errors/default.sample:
cp pub/errors/default.sample pub/errors/default
Po wyłączeniu maintenance klienci nadal widzą starą wersję
To cache (Varnish, Cloudflare, browser):
bin/magento cache:flush
# Varnish:
sudo varnishadm "ban req.url ~ ."
# Cloudflare: cleanup z poziomu dashboardu Cloudflare.
Nie da się włączyć maintenance - "command not found"
Najczęściej brak uprawnień:
sudo -u www-data php bin/magento maintenance:enable
Maintenance włączony, ale strona nadal działa dla wszystkich
Sprawdź konfigurację serwera:
- Nginx - czy
pub/errors/jest properly mapowany. - Apache - czy
RewriteRulehonoruje.maintenance.flag.
Skontaktuj się z developerem / devops, jeśli sklep ma nietypową konfigurację serwera.
Powiązane
- Backup i restore - maintenance często towarzyszy restore
- Cache i indeksery - cache cleanup po deployu
- Logi i diagnostyka - co sprawdzić, gdy deploy się nie powiedzie