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 :
- API FastAPI (port 8000)
- 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.logetlogs/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 FastAPIlogs/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 :
- Frontend : http://localhost:4400
- API : http://localhost:8000
- Docs : http://localhost:8000/docs
Simple, robuste, complet ! đ