417 lines
8.9 KiB
Markdown
417 lines
8.9 KiB
Markdown
# đ 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
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```bash
|
|
# 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 :
|
|
|
|
```bash
|
|
# 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** :
|
|
```bash
|
|
chmod +x run.sh
|
|
./run.sh
|
|
```
|
|
|
|
### Python n'est pas trouvé
|
|
|
|
**ProblÚme** : `[ERROR] Python 3 n'est pas installé`
|
|
|
|
**Solution** :
|
|
```bash
|
|
# 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** :
|
|
```bash
|
|
# 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** :
|
|
```bash
|
|
# 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** :
|
|
```bash
|
|
# 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** :
|
|
```bash
|
|
# 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) :
|
|
```javascript
|
|
// frontend/vite.config.js
|
|
server: {
|
|
port: 4400, // Changer ici
|
|
...
|
|
}
|
|
```
|
|
|
|
**API** (port 8000) :
|
|
```python
|
|
# 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` :
|
|
```python
|
|
allow_origins=["http://localhost:4400", ...]
|
|
```
|
|
|
|
---
|
|
|
|
## Utilisation avancée
|
|
|
|
### Démarrer en mode debug
|
|
|
|
```bash
|
|
# Modifier run_api.py pour activer le debug
|
|
# Puis lancer
|
|
./run.sh
|
|
```
|
|
|
|
### Démarrer uniquement l'API
|
|
|
|
```bash
|
|
python3 run_api.py
|
|
```
|
|
|
|
### Démarrer uniquement le frontend
|
|
|
|
```bash
|
|
cd frontend
|
|
npm run dev
|
|
```
|
|
|
|
### Consulter les logs en temps réel
|
|
|
|
```bash
|
|
# 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 :
|
|
|
|
```yaml
|
|
# .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** :
|
|
```bash
|
|
./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 ! đ**
|