From 19c3d267fad7a29d779dda810ca5801de9e5312c Mon Sep 17 00:00:00 2001 From: ertopogo Date: Sat, 24 Jan 2026 14:23:03 +0100 Subject: corrections du backend --- app-management.md | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 app-management.md (limited to 'app-management.md') diff --git a/app-management.md b/app-management.md new file mode 100644 index 0000000..b979018 --- /dev/null +++ b/app-management.md @@ -0,0 +1,214 @@ +# App management - Lucien-sens-bon + +Ce document explique comment diagnostiquer les conteneurs, la base de donnees +et le reverse proxy (Apache). + +## 1) Diagnostic Docker + +Statut des services : +``` +docker compose ps +``` + +Logs temps reel : +``` +docker compose logs -f +docker compose logs -f backend +docker compose logs -f storefront +``` + +Redemarrer un service : +``` +docker compose restart backend +``` + +Rebuild force d'un service : +``` +docker compose build --no-cache backend +docker compose up -d --build backend +``` + +Entrer dans un conteneur : +``` +docker exec -it medusa-backend sh +``` + +## 2) Verifier la connexion PostgreSQL + +La connexion est definie dans `.env` : +``` +DATABASE_URL=postgres://user:password@host:5432/nom_db +``` + +### 2.1 Tester depuis le serveur (si psql est installe) +``` +psql "$DATABASE_URL" -c "select 1;" +``` + +### 2.2 Tester depuis un conteneur temporaire +``` +docker run --rm -it postgres:16-alpine psql "$DATABASE_URL" -c "select 1;" +``` + +### 2.3 Tester le port (reseau) +``` +nc -vz 5432 +``` + +Si la DB est sur la machine hote : +- eviter `localhost` dans `DATABASE_URL` +- utiliser l'IP de la machine hote + +Documentation PostgreSQL : +https://www.postgresql.org/docs/current/app-psql.html +https://www.postgresql.org/docs/current/app-pg-isready.html + +## 3) Tests applicatifs rapides + +Storefront : +``` +curl http://localhost:8000 +``` + +API Medusa : +``` +curl http://localhost:9000/store/products +``` + +## 3.1) Depannage avance: backend 9000 ne repond pas + +Cette section documente les commandes utilisees en incident et explique +ce qu'elles permettent de verifier. + +### A) Etre dans le bon dossier compose + +``` +cd /var/www/lucien-sens-bon +ls -l docker-compose.yml +``` + +- `cd ...` : se place dans le dossier ou se trouve `docker-compose.yml`. +- `ls -l docker-compose.yml` : confirme que le fichier compose existe + (sinon `docker compose` renvoie "no configuration file provided"). + +### B) Etat et logs du backend + +``` +sudo docker compose ps +sudo docker compose logs -f backend +``` + +- `docker compose ps` : liste les conteneurs, leur statut et les ports publies. +- `docker compose logs -f backend` : suit les logs du backend en temps reel + pour identifier l'erreur exacte. + +### C) Test HTTP local (depuis le serveur) + +``` +curl -v http://localhost:9000/store/products +``` + +- `curl -v` : verifie que l'API repond et montre les details de connexion. +- Si "connection reset by peer" -> le backend crash apres accept. + +### D) Verifier la base (depuis un conteneur temporaire) + +``` +sudo docker compose run --rm backend node -e "const { Client }=require('pg'); const c=new Client({connectionString: process.env.DATABASE_URL}); c.connect().then(()=>console.log('DB OK')).catch(e=>{console.error('DB ERROR:', e.message); process.exit(1)})" +``` + +- `docker compose run --rm backend` : lance un conteneur temporaire base sur + l'image backend (meme environnement que le service). +- `node -e ...` : teste la connexion a PostgreSQL via `DATABASE_URL`. + +### E) Tester droits et extension PostgreSQL + +``` +sudo docker compose run --rm backend node -e "const {Client}=require('pg'); const c=new Client({connectionString: process.env.DATABASE_URL}); c.connect().then(async()=>{const p=await c.query(\"select has_database_privilege(current_user, current_database(), 'CREATE') as can_create\"); console.log(p.rows); try{await c.query('CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\"'); console.log('EXT OK');}catch(e){console.error('EXT ERROR:', e.message);} await c.end();}).catch(e=>{console.error('DB ERROR:', e.message); process.exit(1);});" +``` + +- Verifie que l'utilisateur a le droit de creer dans la base. +- Cree l'extension `uuid-ossp` si elle manque (souvent requise par Medusa). + +### F) Migrations Medusa (creation des tables) + +``` +sudo docker compose run --rm backend npx medusa migrations run +``` + +- Applique les migrations en base. Sans ca, le backend peut echouer a demarrer. + +### G) Seed de donnees (optionnel) + +``` +sudo docker compose run --rm backend npm run seed +``` + +- Ajoute des donnees de demo si un fichier seed existe. +- Si le fichier `data/seed.json` manque, cette commande echoue sans impact + sur le demarrage de l'API. + +### H) Redemarrage et rebuild + +``` +sudo docker compose restart backend +sudo docker compose up -d --build backend +``` + +- `restart` : redemarre seulement le backend. +- `up -d --build` : reconstruit l'image puis redemarre le service. + +### I) Cas erreur PaymentProviderService (crash apres init) + +``` +sudo docker compose run --rm backend node -e "const {Client}=require('pg'); const c=new Client({connectionString: process.env.DATABASE_URL}); c.connect().then(async()=>{const rows=await c.query('select * from payment_provider'); console.log(rows.rows); await c.end();}).catch(e=>{console.error('DB ERROR:', e.message); process.exit(1);});" +``` + +- Controle le contenu de `payment_provider` si le backend plante au demarrage + dans le service des providers de paiement. + +## 4) Apache / Reverse proxy + +Verifier les services Apache : +``` +sudo systemctl status apache2 +``` + +Logs Apache : +``` +sudo journalctl -u apache2 -f +sudo tail -f /var/log/apache2/error.log +sudo tail -f /var/log/apache2/access.log +``` + +Modules proxy : +``` +sudo a2enmod proxy +sudo a2enmod proxy_http +``` + +Reload Apache : +``` +sudo systemctl reload apache2 +``` + +Documentation Apache reverse proxy : +https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html + +## 5) Ports a verifier + +- `8000` : storefront +- `9000` : backend +- `5432` : PostgreSQL +- `6379` : Redis + +Verifier l'ouverture locale : +``` +ss -lntp | egrep '8000|9000|5432|6379' +``` + +Verifier le firewall (UFW) : +``` +sudo ufw status +``` + -- cgit v1.2.3