Files
formation-manager-itinova/GUIDE-GIT.md
Manus Sandbox dcb709b31b Checkpoint: Version finale avec guide Git complet et scripts de déploiement
Contenu de cette version :

1. Corrections de bugs (version précédente) :
   - Bug d'inscription (procédure publique createPublic)
   - Bug email de confirmation (variables {{prenomApprenant}} et {{datesHTML}})
   - Amélioration interface templates d'emails

2. Scripts de déploiement VPS :
   - deploy-update.sh : Script automatique de mise à jour
   - update-database.sql : Script SQL de mise à jour
   - INSTRUCTIONS-DEPLOIEMENT.md : Documentation de déploiement

3. Guide Git complet (NOUVEAU) :
   - GUIDE-GIT.md : Guide pas à pas pour débutants
   - Configuration GitHub
   - Création du dépôt
   - Premier push
   - Configuration du serveur VPS
   - Workflow de mise à jour

4. Configuration Git :
   - .gitignore mis à jour (exclusion backups)
   - README.md existant (complet)

Tout est prêt pour le premier déploiement Git + VPS.
2025-12-03 04:53:31 -05:00

404 lines
9.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Guide complet - Configuration Git et déploiement
Ce guide vous accompagne pas à pas pour mettre votre code sur Git et le déployer sur votre serveur VPS.
---
## 📋 Prérequis
- Un compte GitHub (gratuit) - https://github.com/signup
- Git installé sur votre machine locale
- Accès SSH à votre serveur VPS
---
## Étape 1⃣ : Créer un compte GitHub (si vous n'en avez pas)
1. Aller sur https://github.com/signup
2. Créer un compte avec votre email
3. Vérifier votre email
4. Se connecter à GitHub
---
## Étape 2⃣ : Créer un dépôt GitHub
1. **Se connecter à GitHub**
- Aller sur https://github.com
2. **Créer un nouveau dépôt**
- Cliquer sur le bouton **"+"** en haut à droite
- Sélectionner **"New repository"**
3. **Configurer le dépôt**
- **Repository name** : `formation-manager-itinova`
- **Description** : "Gestion des formations Manager Itinova"
- **Visibilité** :
-**Private** (recommandé - seul vous pouvez voir le code)
- ⚠️ Public (tout le monde peut voir le code)
- **NE PAS** cocher "Add a README file"
- **NE PAS** ajouter .gitignore (on l'a déjà)
- **NE PAS** choisir de licence
- Cliquer sur **"Create repository"**
4. **Noter l'URL du dépôt**
- GitHub vous montre une page avec des instructions
- Noter l'URL qui ressemble à : `https://github.com/VOTRE-USERNAME/formation-manager-itinova.git`
---
## Étape 3⃣ : Télécharger le code depuis Manus
1. **Dans l'interface Manus**
- Cliquer sur l'onglet **"Code"** (à droite)
- Cliquer sur le bouton **"Download all files"** (en haut)
- Un fichier ZIP sera téléchargé
2. **Extraire le ZIP**
- Extraire le contenu dans un dossier sur votre ordinateur
- Par exemple : `C:\Projets\formation-manager-itinova` (Windows)
- Ou : `~/Projets/formation-manager-itinova` (Mac/Linux)
---
## Étape 4⃣ : Configurer Git sur votre machine locale
### Sur Windows
1. **Installer Git**
- Télécharger depuis https://git-scm.com/download/win
- Installer avec les options par défaut
- Redémarrer votre ordinateur
2. **Ouvrir Git Bash**
- Chercher "Git Bash" dans le menu Démarrer
- Ouvrir Git Bash
### Sur Mac
1. **Installer Git**
- Ouvrir le Terminal (Applications > Utilitaires > Terminal)
- Taper : `git --version`
- Si Git n'est pas installé, suivre les instructions pour l'installer
### Sur Linux
1. **Installer Git**
```bash
sudo apt update
sudo apt install git
```
---
## Étape 5⃣ : Configurer votre identité Git
Dans le terminal (Git Bash sur Windows, Terminal sur Mac/Linux) :
```bash
# Configurer votre nom
git config --global user.name "Votre Nom"
# Configurer votre email (celui de votre compte GitHub)
git config --global user.email "votre.email@example.com"
# Vérifier la configuration
git config --list
```
---
## Étape 6⃣ : Initialiser Git dans votre projet
1. **Aller dans le dossier du projet**
```bash
cd /chemin/vers/formation-manager-itinova
```
Exemples :
- Windows : `cd C:\Projets\formation-manager-itinova`
- Mac/Linux : `cd ~/Projets/formation-manager-itinova`
2. **Initialiser Git**
```bash
git init
```
Vous devriez voir : `Initialized empty Git repository`
3. **Ajouter tous les fichiers**
```bash
git add .
```
4. **Créer le premier commit**
```bash
git commit -m "Initial commit - Formation Manager Itinova"
```
5. **Renommer la branche en 'main'**
```bash
git branch -M main
```
---
## Étape 7⃣ : Connecter votre projet à GitHub
1. **Ajouter le dépôt distant**
```bash
git remote add origin https://github.com/VOTRE-USERNAME/formation-manager-itinova.git
```
⚠️ **Remplacer** `VOTRE-USERNAME` par votre nom d'utilisateur GitHub
2. **Vérifier la connexion**
```bash
git remote -v
```
Vous devriez voir deux lignes avec l'URL de votre dépôt
---
## Étape 8⃣ : Pousser le code vers GitHub
1. **Pousser le code**
```bash
git push -u origin main
```
2. **S'authentifier**
- GitHub va vous demander de vous authentifier
- **Méthode recommandée** : Utiliser un Personal Access Token (PAT)
### Créer un Personal Access Token (PAT)
1. **Sur GitHub**
- Aller dans **Settings** (icône de profil en haut à droite)
- Cliquer sur **Developer settings** (tout en bas à gauche)
- Cliquer sur **Personal access tokens** > **Tokens (classic)**
- Cliquer sur **Generate new token** > **Generate new token (classic)**
2. **Configurer le token**
- **Note** : "Formation Manager Itinova - Déploiement"
- **Expiration** : 90 days (ou No expiration si vous êtes seul)
- **Cocher les permissions** :
- ✅ `repo` (tous les sous-éléments)
- Cliquer sur **Generate token**
3. **Copier le token**
- ⚠️ **IMPORTANT** : Copier le token et le sauvegarder dans un endroit sûr
- Vous ne pourrez plus le voir après avoir quitté la page
4. **Utiliser le token**
- Quand Git vous demande le mot de passe, coller le token (pas votre mot de passe GitHub)
- Le token remplace votre mot de passe
5. **Vérifier sur GitHub**
- Aller sur https://github.com/VOTRE-USERNAME/formation-manager-itinova
- Vous devriez voir tous vos fichiers
---
## Étape 9⃣ : Configurer Git sur le serveur VPS
Maintenant que le code est sur GitHub, configurons le serveur VPS pour récupérer le code.
### Se connecter au serveur VPS
```bash
ssh votre-utilisateur@votre-serveur.com
```
### Installer Git sur le serveur (si pas déjà installé)
```bash
# Vérifier si Git est installé
git --version
# Si pas installé, installer Git
sudo apt update
sudo apt install git -y
```
### Cloner le dépôt sur le serveur
```bash
# Aller dans le répertoire où vous voulez installer le projet
cd /var/www # ou un autre répertoire
# Cloner le dépôt
git clone https://github.com/VOTRE-USERNAME/formation-manager-itinova.git
# Entrer dans le dossier
cd formation-manager-itinova
```
### Configurer les variables d'environnement
```bash
# Créer le fichier .env
nano .env
```
Copier-coller vos variables d'environnement :
```env
DATABASE_URL=mysql://user:password@host:port/database
RESEND_API_KEY=votre_cle_resend
JWT_SECRET=votre_secret_jwt
# ... autres variables
```
Sauvegarder : `Ctrl+X`, puis `Y`, puis `Entrée`
### Installer les dépendances
```bash
# Installer pnpm si pas déjà installé
npm install -g pnpm
# Installer les dépendances du projet
pnpm install
```
### Appliquer les migrations de base de données
```bash
pnpm db:push
```
### Compiler le projet
```bash
pnpm build
```
### Démarrer le serveur avec PM2
```bash
# Installer PM2 si pas déjà installé
npm install -g pm2
# Démarrer le serveur
pm2 start npm --name "formation-manager" -- start
# Sauvegarder la configuration PM2
pm2 save
# Configurer PM2 pour démarrer au boot
pm2 startup
# Suivre les instructions affichées
```
---
## Étape 🔟 : Déployer les futures mises à jour
Maintenant que tout est configuré, pour les futures mises à jour :
### Sur votre machine locale
```bash
# 1. Télécharger le nouveau code depuis Manus
# 2. Remplacer les fichiers dans votre dossier local
# 3. Ajouter les modifications
git add .
# 4. Créer un commit
git commit -m "Description des modifications"
# 5. Pousser vers GitHub
git push origin main
```
### Sur le serveur VPS
```bash
# Se connecter au serveur
ssh votre-utilisateur@votre-serveur.com
# Aller dans le dossier du projet
cd /var/www/formation-manager-itinova
# Exécuter le script de mise à jour
./deploy-update.sh
```
Le script `deploy-update.sh` va automatiquement :
- ✅ Sauvegarder la base de données
- ✅ Arrêter le serveur
- ✅ Récupérer le nouveau code depuis GitHub (`git pull`)
- ✅ Installer les nouvelles dépendances
- ✅ Appliquer les migrations
- ✅ Recompiler le projet
- ✅ Redémarrer le serveur
---
## 🔒 Sécurité - Fichiers à ne PAS pousser sur Git
Le fichier `.gitignore` est déjà configuré pour exclure :
- ❌ `.env` (variables d'environnement sensibles)
- ❌ `node_modules/` (dépendances)
- ❌ `dist/` (fichiers compilés)
- ❌ Fichiers de backup de la base de données
**⚠️ IMPORTANT** : Ne JAMAIS pousser le fichier `.env` sur Git !
---
## 📞 Aide et dépannage
### Problème : "Permission denied (publickey)"
**Solution** : Utiliser HTTPS au lieu de SSH pour le dépôt
```bash
git remote set-url origin https://github.com/VOTRE-USERNAME/formation-manager-itinova.git
```
### Problème : "Authentication failed"
**Solution** : Utiliser un Personal Access Token au lieu du mot de passe (voir Étape 8)
### Problème : "git: command not found"
**Solution** : Installer Git (voir Étape 4)
### Problème : Le script deploy-update.sh ne fonctionne pas
**Solution** : Vérifier les permissions
```bash
chmod +x deploy-update.sh
```
---
## 📚 Ressources utiles
- Documentation Git : https://git-scm.com/doc
- Documentation GitHub : https://docs.github.com
- Tutoriel Git interactif : https://learngitbranching.js.org
---
## ✅ Checklist finale
Avant de déployer en production :
- [ ] Code poussé sur GitHub
- [ ] Serveur VPS configuré avec Git
- [ ] Dépôt cloné sur le serveur
- [ ] Variables d'environnement configurées (.env)
- [ ] Dépendances installées (pnpm install)
- [ ] Base de données migrée (pnpm db:push)
- [ ] Projet compilé (pnpm build)
- [ ] Serveur démarré avec PM2
- [ ] Script deploy-update.sh testé
- [ ] Backup de la base de données effectué
---
**Bon déploiement ! 🚀**