# Guide d'Installation — ERP Rayhan sur Windows **PFE Ali Guennari — SUARL Rayhan** --- ## Prérequis Avant de commencer, assure-toi d'avoir : - Windows 10 version 1903+ ou Windows 11 - Un compte administrateur sur le PC - Une connexion Internet --- ## Étape 1 — Installer Docker Desktop ### 1.1 Télécharger Docker Desktop Rends-toi sur le site officiel de Docker et télécharge **Docker Desktop for Windows** : ``` https://www.docker.com/products/docker-desktop/ ``` Clique sur **"Download for Windows"**. ### 1.2 Activer la virtualisation dans le BIOS Docker nécessite la virtualisation matérielle. Pour vérifier qu'elle est activée : 1. Ouvre le **Gestionnaire des tâches** (Ctrl + Shift + Échap) 2. Onglet **Performance** → **CPU** 3. Vérifie que **Virtualisation : Activée** apparaît en bas Si elle est désactivée, il faut l'activer dans le BIOS (redémarrer → appuyer sur F2/F12/Suppr selon le PC). ### 1.3 Activer WSL 2 (Windows Subsystem for Linux) Ouvre **PowerShell en tant qu'administrateur** et exécute : ```powershell wsl --install ``` Redémarre le PC si demandé. ### 1.4 Installer Docker Desktop 1. Lance le fichier `Docker Desktop Installer.exe` téléchargé 2. Laisse les options par défaut (WSL 2 coché) 3. Clique **OK** puis **Close and restart** 4. Après redémarrage, Docker Desktop se lance automatiquement 5. Accepte les conditions d'utilisation si demandé **Vérification :** Ouvre un terminal (PowerShell ou CMD) et tape : ```cmd docker --version docker compose version ``` Tu dois voir quelque chose comme : `Docker version 26.x.x` --- ## Étape 2 — Récupérer le Projet ### Option A — Télécharger depuis Gitea (recommandé) Ouvre PowerShell et exécute : ```powershell # Créer un dossier de travail mkdir C:\rayhan-erp cd C:\rayhan-erp # Télécharger l'archive du projet Invoke-WebRequest -Uri "https://gitea.bolbol.tn/bolbol/rayhan-erp/archive/main.zip" -OutFile "rayhan-erp.zip" # Extraire l'archive Expand-Archive -Path "rayhan-erp.zip" -DestinationPath "." # Se placer dans le dossier cd rayhan-erp ``` ### Option B — Cloner avec Git (si Git est installé) ```cmd git clone https://gitea.bolbol.tn/bolbol/rayhan-erp.git cd rayhan-erp ``` > Git pour Windows : https://git-scm.com/download/win --- ## Étape 3 — Lancer l'Application ### 3.1 Démarrer Docker Desktop Vérifie que Docker Desktop est lancé (icône de baleine dans la barre des tâches en bas à droite). ### 3.2 Lancer les conteneurs Dans PowerShell, depuis le dossier `rayhan-erp` : ```powershell docker compose up -d --build ``` > La première fois, cette commande prend **5 à 10 minutes** car elle : > - Télécharge l'image MySQL 8 > - Télécharge l'image Maven + Java 17 > - Compile le projet Spring Boot > - Crée les conteneurs ### 3.3 Vérifier que les conteneurs tournent ```powershell docker ps ``` Tu dois voir deux conteneurs en état `Up` : ``` CONTAINER ID IMAGE STATUS xxxxx rayhan-erp-backend Up X seconds xxxxx mysql:8.0 Up X seconds (healthy) ``` --- ## Étape 4 — Tester l'API ### 4.1 Vérifier que l'API répond Ouvre un navigateur et va sur : ``` http://localhost:8090/api/auth/signin ``` Tu verras une erreur 401 (normal, une connexion est requise). ### 4.2 Se connecter (obtenir un token JWT) Ouvre PowerShell et exécute : ```powershell $body = '{"username":"admin","password":"Rayhan2024!"}' Invoke-RestMethod -Uri "http://localhost:8090/api/auth/signin" -Method POST -Body $body -ContentType "application/json" ``` **Réponse attendue :** ```json { "token": "eyJhbGciOiJIUzUxMiJ9...", "type": "Bearer", "username": "admin", "roles": ["ROLE_PDG"] } ``` ### 4.3 Tester avec Postman (recommandé) Télécharge Postman : https://www.postman.com/downloads/ Configure l'environnement : - `baseUrl` = `http://localhost:8090` - Consulte le fichier `Livrables/docs/Guide-Tests-Postman.md` pour tous les scénarios de test --- ## Étape 5 — Accès à la Base de Données (optionnel) Pour accéder directement à MySQL depuis le PC Windows, utilise **MySQL Workbench** ou **DBeaver** : ``` Host : localhost Port : 3307 Database : rayhan_erp_db Username : root Password : rayhan_erp_2024 ``` > MySQL Workbench : https://dev.mysql.com/downloads/workbench/ **Note :** Sur le serveur de production (localhost), le port MySQL n'est pas exposé à l'extérieur par mesure de sécurité. --- ## Commandes Docker Utiles ```powershell # Démarrer les conteneurs (sans rebuild) docker compose up -d # Arrêter les conteneurs docker compose down # Rebuild après modification du code docker compose up -d --build # Voir les logs de l'API en temps réel docker logs rayhan-backend -f # Voir les logs MySQL docker logs rayhan-mysql -f # Redémarrer uniquement le backend docker restart rayhan-backend # Accéder au shell MySQL docker exec -it rayhan-mysql mysql -u root -prayhan_erp_2024 rayhan_erp_db ``` --- ## Résolution des Problèmes Fréquents ### Problème : "Port already in use" (port 8090 occupé) Un autre programme utilise le port 8090. Solutions : ```powershell # Trouver ce qui utilise le port netstat -ano | findstr :8090 # Modifier le port dans docker-compose.yml # Changer "8090:8080" par "8091:8080" par exemple ``` ### Problème : Docker ne démarre pas (WSL 2 non activé) ```powershell # En PowerShell administrateur wsl --install wsl --set-default-version 2 ``` Puis redémarre et relance Docker Desktop. ### Problème : "Cannot connect to the Docker daemon" Docker Desktop n'est pas lancé. Cherche "Docker Desktop" dans le menu Démarrer et lance-le. Attends que l'icône de baleine apparaisse dans la barre des tâches. ### Problème : Build échoue (erreur Maven) ```powershell # Nettoyer le cache Docker et reconstruire docker compose down docker system prune -f docker compose up -d --build ``` --- ## Architecture du Déploiement ``` PC Windows │ ├── Docker Desktop (moteur de conteneurs) │ ├── rayhan-mysql (conteneur MySQL 8) │ │ └── Base de données : rayhan_erp_db │ │ Port interne : 3306 → Port Windows : 3307 │ │ │ └── rayhan-backend (conteneur Spring Boot) │ └── API REST Java │ Port interne : 8080 → Port Windows : 8090 │ └── Application Flutter (client) └── Se connecte à http://localhost:8090 ``` --- ## Informations de Connexion par Défaut | Paramètre | Valeur | |-----------|--------| | URL API | `http://localhost:8090` | | Utilisateur admin | `admin` | | Mot de passe admin | `Rayhan2024!` | | Rôle | `ROLE_PDG` (accès complet) | | DB Host | `localhost:3307` | | DB Name | `rayhan_erp_db` | | DB Password | `rayhan_erp_2024` |