Files
aivanov_database/omop/RUN_SCRIPT_GUIDE.md
2026-03-05 01:20:15 +01:00

8.9 KiB

🚀 Guide du Script run.sh

Vue d'ensemble

Le script run.sh est un script complet qui démarre toute la stack OMOP Pipeline avec vérifications et gestion d'erreurs.


Utilisation

Démarrage simple

cd omop
./run.sh

C'est tout ! Le script s'occupe de tout.


Ce que fait le script

1. VĂ©rifications prĂ©alables ✅

Le script vérifie automatiquement :

  • ✅ Python 3 est installĂ©
  • ✅ Node.js est installĂ©
  • ✅ npm est installĂ©
  • ✅ PostgreSQL est accessible
  • ✅ DĂ©pendances Python installĂ©es
  • ✅ DĂ©pendances npm installĂ©es
  • ✅ Connexion Ă  la base de donnĂ©es

2. Installation automatique 📩

Si des dépendances manquent, le script les installe automatiquement :

  • DĂ©pendances Python (requirements.txt + requirements-api.txt)
  • DĂ©pendances npm (frontend/node_modules)

3. DĂ©marrage de la stack 🚀

Le script démarre dans l'ordre :

  1. API FastAPI (port 8000)
  2. Frontend React (port 4400)

4. Monitoring 📊

Le script :

  • VĂ©rifie que chaque service dĂ©marre correctement
  • Affiche les PIDs des processus
  • CrĂ©e des logs dans logs/api.log et logs/frontend.log
  • Attend les signaux d'arrĂȘt (Ctrl+C)

5. ArrĂȘt propre 🛑

Quand tu appuies sur Ctrl+C :

  • Le script arrĂȘte proprement l'API
  • Le script arrĂȘte proprement le frontend
  • Les processus sont nettoyĂ©s

Ports utilisés

Service Port URL
Frontend 4400 http://localhost:4400
API 8000 http://localhost:8000
Docs API 8000 http://localhost:8000/docs

Logs

Les logs sont automatiquement créés dans :

  • logs/api.log - Logs de l'API FastAPI
  • logs/frontend.log - Logs du frontend React

Pour consulter les logs en temps réel :

# Logs API
tail -f logs/api.log

# Logs Frontend
tail -f logs/frontend.log

Messages du script

Messages d'information (bleu)

[INFO] Vérification de Python...
[INFO] Démarrage de l'API FastAPI...

Messages de succĂšs (vert)

[SUCCESS] Python trouvé: Python 3.12.3
[SUCCESS] API démarrée (PID: 12345)

Messages d'avertissement (jaune)

[WARNING] Dépendances Python manquantes, installation...
[WARNING] Impossible de se connecter à la base de données

Messages d'erreur (rouge)

[ERROR] Python 3 n'est pas installé
[ERROR] Échec du dĂ©marrage de l'API

Exemple de sortie

╔═══════════════════════════════════════════════════════════╗
║                                                           ║
║           🚀 OMOP PIPELINE - STACK COMPLÈTE 🚀            ║
║                                                           ║
╚═══════════════════════════════════════════════════════════╝

[INFO] Vérification de Python...
[SUCCESS] Python trouvé: Python 3.12.3
[INFO] Vérification de Node.js...
[SUCCESS] Node.js trouvé: v20.11.0
[INFO] Vérification de npm...
[SUCCESS] npm trouvé: v10.2.4
[INFO] Vérification de PostgreSQL...
[SUCCESS] PostgreSQL trouvé: psql (PostgreSQL) 16.11
[INFO] Vérification des dépendances Python...
[SUCCESS] Dépendances Python OK
[INFO] Vérification des dépendances frontend...
[SUCCESS] Dépendances frontend OK
[INFO] Vérification de la connexion PostgreSQL...
[SUCCESS] Connexion à la base de données OK

[INFO] ═══════════════════════════════════════════════════════════
[INFO]               DÉMARRAGE DE LA STACK
[INFO] ═══════════════════════════════════════════════════════════

[INFO] Démarrage de l'API FastAPI...
[SUCCESS] API démarrée (PID: 12345)
[SUCCESS] API disponible sur: http://localhost:8000
[SUCCESS] Documentation API: http://localhost:8000/docs
[INFO] Démarrage du frontend React...
[SUCCESS] Frontend démarré (PID: 12346)
[SUCCESS] Frontend disponible sur: http://localhost:4400

[SUCCESS] ═══════════════════════════════════════════════════════════
[SUCCESS]            ✅ STACK OMOP PIPELINE DÉMARRÉE ✅
[SUCCESS] ═══════════════════════════════════════════════════════════

  📊 Frontend:        http://localhost:4400
  🔌 API:             http://localhost:8000
  📚 Documentation:   http://localhost:8000/docs

  📝 Logs API:        logs/api.log
  📝 Logs Frontend:   logs/frontend.log

[INFO] Appuyez sur Ctrl+C pour arrĂȘter la stack

ArrĂȘt de la stack

ArrĂȘt normal

Appuie sur Ctrl+C dans le terminal oĂč le script tourne :

^C
[WARNING] ArrĂȘt de la stack OMOP Pipeline...
[INFO] ArrĂȘt de l'API (PID: 12345)
[INFO] ArrĂȘt du frontend (PID: 12346)
[SUCCESS] Stack arrĂȘtĂ©e proprement

ArrĂȘt forcĂ©

Si le script ne rĂ©pond pas, tu peux forcer l'arrĂȘt :

# Trouver les processus
ps aux | grep "run_api.py\|vite"

# Tuer les processus
kill -9 <PID_API> <PID_FRONTEND>

Troubleshooting

Le script ne démarre pas

ProblĂšme : Permission denied

Solution :

chmod +x run.sh
./run.sh

Python n'est pas trouvé

ProblÚme : [ERROR] Python 3 n'est pas installé

Solution :

# Vérifier Python
python3 --version

# Installer Python si nécessaire
sudo apt install python3  # Ubuntu/Debian

Node.js n'est pas trouvé

ProblÚme : [ERROR] Node.js n'est pas installé

Solution :

# Vérifier Node.js
node --version

# Installer Node.js si nécessaire
# Voir: https://nodejs.org/

PostgreSQL n'est pas accessible

ProblÚme : [WARNING] Impossible de se connecter à la base de données

Solution :

# Vérifier que PostgreSQL tourne
sudo systemctl status postgresql

# Démarrer PostgreSQL si nécessaire
sudo systemctl start postgresql

# Tester la connexion
psql -U dom -d omop_cdm

L'API ne démarre pas

ProblĂšme : [ERROR] Échec du dĂ©marrage de l'API

Solution :

# Consulter les logs
cat logs/api.log

# Vérifier que le port 8000 est libre
lsof -i :8000

# Tester manuellement
python3 run_api.py

Le frontend ne démarre pas

ProblĂšme : [ERROR] Échec du dĂ©marrage du frontend

Solution :

# Consulter les logs
cat logs/frontend.log

# Vérifier que le port 4400 est libre
lsof -i :4400

# Réinstaller les dépendances
cd frontend
rm -rf node_modules package-lock.json
npm install

Comparaison avec start_web.sh

Fonctionnalité run.sh start_web.sh
VĂ©rifications prĂ©alables ✅ ComplĂštes ❌ Basiques
Messages colorĂ©s ✅ Oui ❌ Non
Logs dans fichiers ✅ Oui ❌ Non
Gestion d'erreurs ✅ AvancĂ©e ⚠ Basique
ArrĂȘt propre ✅ Oui ✅ Oui
Installation auto ✅ Oui ✅ Oui
VĂ©rification BDD ✅ Oui ❌ Non

Recommandation : Utilise run.sh pour un démarrage complet et robuste.


Configuration

Changer les ports

Pour changer les ports, modifie :

Frontend (port 4400) :

// frontend/vite.config.js
server: {
  port: 4400,  // Changer ici
  ...
}

API (port 8000) :

# run_api.py
uvicorn.run(
    "src.api.main:app",
    host="0.0.0.0",
    port=8000,  # Changer ici
    ...
)

N'oublie pas de mettre Ă  jour le CORS dans src/api/main.py :

allow_origins=["http://localhost:4400", ...]

Utilisation avancée

Démarrer en mode debug

# Modifier run_api.py pour activer le debug
# Puis lancer
./run.sh

Démarrer uniquement l'API

python3 run_api.py

Démarrer uniquement le frontend

cd frontend
npm run dev

Consulter les logs en temps réel

# Terminal 1 - Logs API
tail -f logs/api.log

# Terminal 2 - Logs Frontend
tail -f logs/frontend.log

# Terminal 3 - Lancer la stack
./run.sh

Intégration CI/CD

Le script peut ĂȘtre utilisĂ© dans un pipeline CI/CD :

# .github/workflows/deploy.yml
- name: Start OMOP Stack
  run: |
    cd omop
    ./run.sh &
    sleep 10
    
- name: Run tests
  run: |
    curl http://localhost:8000/health
    curl http://localhost:4400

Résumé

Commande unique :

./run.sh

Résultat :

  • ✅ VĂ©rifications complĂštes
  • ✅ Installation automatique
  • ✅ DĂ©marrage de la stack
  • ✅ Logs dans fichiers
  • ✅ ArrĂȘt propre

AccĂšs :

Simple, robuste, complet ! 🚀