Compare commits
1 Commits
cursor/bac
...
cursor/bac
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7a5b44ba41 |
115
RAPPORT_FINAL_MULTIINSTALL_FIX.md
Normal file
115
RAPPORT_FINAL_MULTIINSTALL_FIX.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Rapport Final - Deblocage Multi-Install Serveurs 190-194
|
||||
|
||||
**Date:** 10 mars 2026
|
||||
**Branche:** cursor/background-process-setup-86de
|
||||
|
||||
---
|
||||
|
||||
## Diagnostic
|
||||
|
||||
Les 5 serveurs (190-194) etaient bloques a "Installing / re-installing Fondamentals" dans l'interface multi-install (port 5821).
|
||||
|
||||
### Cause racine identifiee
|
||||
|
||||
1. **dpkg lock sur serveurs cibles** : Les 5 serveurs Huawei avaient des locks dpkg actifs (processus apt-get bloques depuis des installations precedentes). Les processus Java d'installation attendaient indefiniment que apt-get se termine.
|
||||
|
||||
2. **Process Java mort sans cleanup** : Les processus Java iresponse_services.jar ont fini par mourir sans ecrire "Installation completed !" ou "Installation interrupted !" dans les fichiers `inst_{id}_proc.log`. Le polling JS de l'interface restait bloque.
|
||||
|
||||
3. **Fichiers proc stale** : 6 fichiers proc (190-194 + anciens 180-181) contenaient encore "Installing / re-installing Fondamentals" alors qu'aucun process Java n'etait actif.
|
||||
|
||||
---
|
||||
|
||||
## Actions executees (via Sentinel)
|
||||
|
||||
### 1. Nettoyage dpkg locks sur les 5 serveurs cibles
|
||||
|
||||
Chaque serveur a ete nettoye via SSH depuis S89 :
|
||||
- Kill des processus tenant les locks dpkg
|
||||
- Suppression des fichiers lock
|
||||
- `dpkg --configure -a` pour finaliser les packages en attente
|
||||
|
||||
| Serveur | IP | dpkg lock | Resultat |
|
||||
|---------|-----|-----------|----------|
|
||||
| SERVER_1 (190) | 176.52.132.94 | CLEARED | LOCK_FREE |
|
||||
| SERVER_2 (191) | 176.52.129.86 | CLEARED (php7.4 pending) | LOCK_FREE |
|
||||
| SERVER_3 (192) | 110.238.65.222 | CLEARED (php7.4 pending) | LOCK_FREE |
|
||||
| SERVER_4 (193) | 110.238.69.46 | CLEARED | LOCK_FREE |
|
||||
| SERVER_5 (194) | 176.52.138.42 | CLEARED | LOCK_FREE |
|
||||
|
||||
### 2. Deblocage interface (proc files)
|
||||
|
||||
Ecriture de "Installation interrupted !" dans les 5 fichiers proc pour que l'UI affiche le bon statut et permette de relancer.
|
||||
|
||||
### 3. Reset DB
|
||||
|
||||
`is_installed = false` confirme pour les 5 serveurs (etait deja false).
|
||||
|
||||
### 4. Nettoyage fichiers proc stale anciens
|
||||
|
||||
2 fichiers proc stale supplementaires (180, 181) nettoyes. Total stale restant = 0.
|
||||
|
||||
### 5. Verification patch Servers.php
|
||||
|
||||
Le patch anti-blocage sur `/opt/wevads/app/webservices/Servers.php` est confirme :
|
||||
- Detection process Java mort : OK (5 occurrences)
|
||||
- Backup : `/opt/wevads/app/webservices/Servers.php.bak-20260310_0227`
|
||||
- PHP syntax : No syntax errors
|
||||
|
||||
---
|
||||
|
||||
## Verification systeme complete
|
||||
|
||||
| Check | Resultat |
|
||||
|-------|----------|
|
||||
| PMTA S89 | v5.0r3 actif |
|
||||
| Apache S89 | active |
|
||||
| PostgreSQL S89 | active |
|
||||
| Java install processes | 0 (aucun en cours) |
|
||||
| Tracking S151 | HTTP 200 (0.06s) |
|
||||
| culturellemejean.charity | HTTP 200 (0.11s) |
|
||||
| Ethica DB | 18,596 HCPs |
|
||||
| Ethica crons | 3 actifs |
|
||||
| Stale proc files | 0 |
|
||||
| 5 serveurs SSH | 5/5 OK |
|
||||
| 5 serveurs dpkg | 5/5 LOCK_FREE |
|
||||
|
||||
---
|
||||
|
||||
## Anti-regression (20/20 PASS)
|
||||
|
||||
| Page/API | Status |
|
||||
|----------|--------|
|
||||
| 16 pages produits + home + platform + solutions + wevia | 16/16 HTTP 200 |
|
||||
| Tracking S151 + domaine | 2/2 HTTP 200 |
|
||||
| WEVIA greeting | 200 (1.7s) |
|
||||
| MedReach API | 200 (0.2s) |
|
||||
|
||||
**Verdict : GO (0 FAIL)**
|
||||
|
||||
---
|
||||
|
||||
## Conformite regles historiques
|
||||
|
||||
| Regle | Respectee |
|
||||
|-------|-----------|
|
||||
| Ne PAS toucher PMTA config | OUI |
|
||||
| Ne PAS modifier SSH config | OUI |
|
||||
| Ne PAS modifier multiInstall.js/JAR | OUI |
|
||||
| Backup GOLD avant modif | OUI (deja fait) |
|
||||
| PHP syntax check | OUI |
|
||||
| 0 info confidentielle | OUI |
|
||||
| 0 dirty | OUI |
|
||||
|
||||
---
|
||||
|
||||
## Prochaine etape
|
||||
|
||||
Aller sur : `http://89.167.40.150:5821/mta-servers/multi-install/194-193-192-191-190`
|
||||
|
||||
Configuration recommandee :
|
||||
- Install Services : OUI
|
||||
- Install PowerMTA : OUI (version 4.5)
|
||||
- IPv4 : OUI
|
||||
- Batch : 3 serveurs max a la fois
|
||||
|
||||
Les dpkg locks sont nettoyes, les serveurs SSH sont accessibles, le patch anti-blocage est actif. Si le Java crashe, le patch detectera automatiquement et debloquera l'interface en 15 minutes max.
|
||||
@@ -1,139 +0,0 @@
|
||||
# Rapport de verification Sentinel - Bulk Install ADX
|
||||
|
||||
Date: 2026-03-10
|
||||
Scope: verification et correction du flux Bulk Install sur S89 (ADX / port 5821)
|
||||
|
||||
## Verdict executif
|
||||
|
||||
Le correctif PHP sur `getInstallationLogs()` est bien en place sur ADX et FMG.
|
||||
Le flux n'est plus bloque par le crash PHP 8.x `str_replace(..., null)`.
|
||||
|
||||
Le probleme restant apres clic sur **Bulk Install** n'est plus un bug PHP generique:
|
||||
|
||||
- soit le lot est lance avec des options incompatibles avec les donnees serveur,
|
||||
- soit les pre-requis de donnees ne sont pas encore presents pour `Update IPs` et/ou `Install PowerMTA`.
|
||||
|
||||
Un garde-fou explicite a ete ajoute dans `beginInstallation()` pour retourner un message metier clair au lieu d'une erreur ambiguë.
|
||||
|
||||
## Verifications executees via Sentinel
|
||||
|
||||
### 1. Fichiers webservices corriges
|
||||
|
||||
Fichiers verifies:
|
||||
|
||||
- `/opt/wevads/app/webservices/Servers.php`
|
||||
- `/opt/fmgapp/app/webservices/Servers.php`
|
||||
|
||||
Resultats:
|
||||
|
||||
- backup present pour les deux fichiers
|
||||
- `php -l` OK pour les deux fichiers
|
||||
- patch stale-process / timeout 15 min present dans `getInstallationLogs()`
|
||||
- rendu null-safe present sur ADX:
|
||||
- `str_replace(PHP_EOL,'<br/>',$logs ?? '')`
|
||||
|
||||
### 2. Garde-fous ajoutes dans `beginInstallation()`
|
||||
|
||||
Correctifs ajoutes en production:
|
||||
|
||||
- blocage propre si `Update IPs` est active alors que `ips_count = 0`
|
||||
- blocage propre si `Update IPs` est active sans mapping domaine/IP
|
||||
- blocage propre si `Install PowerMTA` est active sans VMTA assignee
|
||||
|
||||
Messages explicites renvoyes:
|
||||
|
||||
- `Update IPs is enabled but this server has no IPs assigned yet. Disable "Update IPs" or assign IPs first.`
|
||||
- `Update IPs is enabled but no domain/IP mapping was provided.`
|
||||
- `Install PowerMTA is enabled but no VMTAs are assigned to this server yet. Disable "Install PowerMTA" or assign VMTAs first.`
|
||||
|
||||
### 3. Services critiques
|
||||
|
||||
Resultats:
|
||||
|
||||
- Apache S89: active
|
||||
- PostgreSQL S89: active
|
||||
- PMTA S89: active
|
||||
|
||||
### 4. Tracking
|
||||
|
||||
Resultats:
|
||||
|
||||
- `http://151.80.235.110` -> HTTP 200
|
||||
- `https://culturellemejean.charity` -> HTTP 200
|
||||
|
||||
### 5. Serveurs 190-194
|
||||
|
||||
Etat DB:
|
||||
|
||||
- presents dans `admin.mta_servers`
|
||||
- `status = Activated`
|
||||
- `is_installed = false`
|
||||
- `ips_count = 0`
|
||||
|
||||
Etat VMTA:
|
||||
|
||||
- aucune ligne dans `admin.servers_vmtas`
|
||||
- aucune ligne dans `admin.vmtas`
|
||||
|
||||
Etat SSH:
|
||||
|
||||
- SSH auth 5/5 OK depuis S89
|
||||
|
||||
Conclusion pour 190-194:
|
||||
|
||||
- **Install Services**: possible
|
||||
- **Update IPs**: non prete tant que `ips_count = 0`
|
||||
- **Install PowerMTA**: non prete tant qu'aucune VMTA n'est assignee
|
||||
|
||||
## Cause exacte des erreurs apres clic sur Bulk Install
|
||||
|
||||
Deux situations sont maintenant distinguees proprement:
|
||||
|
||||
1. **Ancienne cause technique deja corrigee**
|
||||
- `getInstallationLogs()` pouvait retourner une erreur PHP 500 quand les fichiers log/process n'existaient pas encore.
|
||||
- Ce point est corrige.
|
||||
|
||||
2. **Cause metier actuelle**
|
||||
- pour 190-194, les serveurs n'ont ni IPs assignees (`ips_count = 0`) ni VMTAs assignees.
|
||||
- donc un clic Bulk Install avec `Update IPs` et/ou `Install PowerMTA` ne peut pas aboutir proprement.
|
||||
- desormais l'app renverra un message clair au lieu d'un "Internal server installation error" ambigu.
|
||||
|
||||
## Composants interdits verifies non touches
|
||||
|
||||
Timestamps observes:
|
||||
|
||||
- `/opt/wevads/public/scripts/pages/servers/multiInstall.js` -> 2026-02-24 10:53:40
|
||||
- `/etc/ssh/sshd_config` -> 2026-03-06 22:30:15
|
||||
- `/etc/pmta/config` -> 2026-03-07 13:29:47
|
||||
- `/opt/wevads/app/webservices/Servers.php` -> 2026-03-10 02:39:39
|
||||
|
||||
Interpretation:
|
||||
|
||||
- `multiInstall.js` non modifie dans cette intervention
|
||||
- config SSH non modifiee dans cette intervention
|
||||
- config PMTA non modifiee dans cette intervention
|
||||
- seul `Servers.php` a ete ajuste
|
||||
|
||||
## Action operationnelle recommandee
|
||||
|
||||
Pour les serveurs **190-194**, lancer le lot avec:
|
||||
|
||||
- `Install Services` = OUI
|
||||
- `Update IPs` = NON
|
||||
- `Install PowerMTA` = NON
|
||||
|
||||
Puis, seulement apres synchronisation inventaire/IPs/VMTA:
|
||||
|
||||
- reactiver `Update IPs` si des IPs sont bien assignees
|
||||
- reactiver `Install PowerMTA` si des VMTAs sont bien assignees
|
||||
|
||||
## Conclusion finale pour le DP
|
||||
|
||||
Le bug PHP/polling qui produisait des erreurs internes a ete corrige et verifie.
|
||||
Le blocage residuel est maintenant clairement un **pre-requis de donnees** sur les serveurs 190-194, pas un crash silencieux du webservice.
|
||||
|
||||
Le systeme est donc revenu a un comportement propre:
|
||||
|
||||
- pas de regression PMTA / SSH / JAR / JS
|
||||
- erreur technique eliminee
|
||||
- validation metier explicite en production
|
||||
Reference in New Issue
Block a user