# Configuration du mode maintenance (nginx hote) Guide pour activer le support du mode maintenance pilote par Central. Ces etapes sont a faire **une seule fois** par application sur le serveur de production. Le principe : le nginx de l'hote (reverse proxy) verifie si un fichier `maintenance.on` existe dans le dossier de deploy. Si oui, il sert une page `maintenance.html` au lieu de proxifier vers le container Docker. Central pilote la creation/suppression de ce fichier via ses volumes Docker. ## Ce qui a ete fait pour Lesstime ### 1. Deployer pour extraire la page maintenance ```bash cd /var/www/lesstime sudo ./deploy.sh ``` Le `deploy.sh` extrait automatiquement `maintenance.html` du container vers `public/` : ``` mkdir -p public sudo docker compose cp app:/var/www/html/public/maintenance.html public/maintenance.html ``` ### 2. Mettre a jour la conf nginx de l'hote Remplacer le contenu de `/etc/nginx/sites-available/lesstime.conf` : ```nginx server { listen 80; listen [::]:80; server_name project.malio-dev.fr; root /var/www/lesstime/public; # Maintenance mode if (-f /var/www/lesstime/maintenance.on) { return 503; } error_page 503 @maintenance; location @maintenance { rewrite ^(.*)$ /maintenance.html break; } location = /maintenance.html { internal; } location / { proxy_pass http://127.0.0.1:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 55m; } } ``` ### 3. Recharger nginx ```bash sudo nginx -t && sudo systemctl reload nginx ``` ### 4. Verifier - Depuis Central, activer la maintenance sur Lesstime - Ouvrir `http://project.malio-dev.fr` → doit afficher la page "Maintenance en cours" - Desactiver la maintenance depuis Central → le site revient --- ## A faire pour Inventory Meme procedure : ### 1. Deployer pour extraire la page maintenance ```bash cd /var/www/inventory sudo ./deploy.sh ``` > Si le `deploy.sh` ne contient pas encore l'extraction, mettre a jour le fichier depuis le repo (`infra/prod/deploy.sh`) ou executer manuellement : > ```bash > mkdir -p public > sudo docker compose cp app:/var/www/html/public/maintenance.html public/maintenance.html > ``` ### 2. Mettre a jour la conf nginx de l'hote Remplacer le contenu de `/etc/nginx/sites-available/inventory.conf` : ```nginx server { listen 80; listen [::]:80; server_name inventory.malio-dev.fr; root /var/www/inventory/public; # Maintenance mode if (-f /var/www/inventory/maintenance.on) { return 503; } error_page 503 @maintenance; location @maintenance { rewrite ^(.*)$ /maintenance.html break; } location = /maintenance.html { internal; } location / { proxy_pass http://127.0.0.1:8082; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ### 3. Recharger nginx ```bash sudo nginx -t && sudo systemctl reload nginx ``` --- ## Fonctionnement ``` Central (container) └── touch /var/www/maintenance/lesstime/maintenance.on │ (volume Docker : /var/www/lesstime → /var/www/maintenance/lesstime) ▼ /var/www/lesstime/maintenance.on (hote) │ ▼ nginx hote : if (-f /var/www/lesstime/maintenance.on) → 503 │ ▼ maintenance.html servie depuis /var/www/lesstime/public/ ```