Project

General

Profile

Download (7.47 KB) Statistics
| Branch: | Revision:
1e5d32f0 eigenfunction
b8ad0125 chrisker85
---
1e5d32f0 eigenfunction
b8ad0125 chrisker85
# 🚀 Projet Vue.js : Guide Complet
1e5d32f0 eigenfunction
b8ad0125 chrisker85
Ce guide détaille les étapes pour installer, configurer, optimiser et déployer l'application sur un serveur de production.
1e5d32f0 eigenfunction
b8ad0125 chrisker85
## 📁 Structure du Projet
1e5d32f0 eigenfunction
b8ad0125 chrisker85
* `src/` : Code source de l'application (Composants, Vuex/Pinia, Router).
* `public/` : Fichiers statiques (favicon, index.html).
* `dist/` : Dossier généré après le build pour la production.
* `.env` : Variables d'environnement (API keys, URLs).
1e5d32f0 eigenfunction
b8ad0125 chrisker85
---
1e5d32f0 eigenfunction
b8ad0125 chrisker85
## ⚙️ 1. Installation et Configuration

### Prérequis

* **Node.js** : v16+ recommandé.
* **Gestionnaire de paquets** : npm (inclus avec Node).

### Installation

```bash
# Installation des dépendances
npm install

```

### Variables d'environnement

Créez un fichier `.env.local` à la racine pour vos configurations locales :

```env
VUE_APP_API_URL=https://api.monsite.com

```

---

## 💻 2. Développement Local

Pour lancer l'application en mode développement (avec rafraîchissement automatique) :

```bash
npm run serve

```

> **Note :** Par défaut, le projet tourne sur `http://localhost:8080`.

---

## 🏗️ 3. Préparation pour la Production (Build)

Avant de déployer, vous devez transformer le code source en fichiers optimisés pour le web.

```bash
npm run build
1e5d32f0 eigenfunction
```
b8ad0125 chrisker85
Cette commande crée un dossier `/dist` contenant :

* Un fichier `index.html` unique.
* Des fichiers JS et CSS minifiés (pour un chargement rapide).
* Les assets (images, polices) optimisés.

---

## 🌐 4. Déploiement sur Hébergement Mutualisé (Apache)

Lorsque vous déployez une **Single Page Application (SPA)**, le serveur doit être configuré pour rediriger toutes les requêtes vers `index.html`. Sans cela, si un utilisateur rafraîchit une page comme `/contact`, il obtiendra une erreur 404.

### Étapes de déploiement :

1. Connectez-vous à votre serveur via **FTP** (FileZilla) ou via le gestionnaire de fichiers de votre hébergeur (Hostinger, OVH, etc.).
2. Transférez le contenu du dossier `/dist` (et non le dossier lui-même) vers le répertoire racine de votre site (souvent `public_html` ou `www`).
3. Créez un fichier nommé `.htaccess` à la racine de votre hébergement.

### Configuration du fichier `.htaccess` :

Copiez et collez le code suivant pour gérer le routage Vue Router :

```apache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Si le fichier ou le répertoire demandé existe, on l'affiche normalement
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Sinon, on redirige tout vers index.html pour que Vue Router prenne le relais
RewriteRule . /index.html [L]
</IfModule>

1e5d32f0 eigenfunction
```

b8ad0125 chrisker85
---
1e5d32f0 eigenfunction
b8ad0125 chrisker85
## 🧪 Maintenance et Qualité
1e5d32f0 eigenfunction
b8ad0125 chrisker85
| Action | Commande |
| --- | --- |
| **Linter** | `npm run lint` (Nettoyage automatique du code) |
| **Tests** | `npm run test:unit` (Vérification des composants) |
1e5d32f0 eigenfunction
b8ad0125 chrisker85
---
1e5d32f0 eigenfunction
b8ad0125 chrisker85
Parfait, l'automatisation via **GitLab CI/CD** va te simplifier la vie : à chaque fois que tu feras un `git push`, GitLab va compiler ton projet et l'envoyer directement sur ton serveur via FTP (ou SSH).
1e5d32f0 eigenfunction
b8ad0125 chrisker85
Voici comment configurer cela.
1e5d32f0 eigenfunction
b8ad0125 chrisker85
---
1e5d32f0 eigenfunction
b8ad0125 chrisker85
## 🤖 5. Automatisation avec GitLab CI/CD
1e5d32f0 eigenfunction
b8ad0125 chrisker85
Pour mettre cela en place, tu dois créer un fichier nommé `.gitlab-ci.yml` à la racine de ton projet.
1e5d32f0 eigenfunction
b8ad0125 chrisker85
### Étape A : Préparer les variables secrètes
1e5d32f0 eigenfunction
b8ad0125 chrisker85
Ne mets jamais tes identifiants FTP dans ton code. Va dans ton projet GitLab :
1e5d32f0 eigenfunction
b8ad0125 chrisker85
1. **Settings** > **CI/CD** > **Variables**.
2. Ajoute les variables suivantes :
* `FTP_USER` : Ton nom d'utilisateur FTP.
* `FTP_PASSWORD` : Ton mot de passe FTP.
* `FTP_HOST` : L'adresse de ton serveur (ex: `ftp.monsite.com`).
1e5d32f0 eigenfunction


b8ad0125 chrisker85
### Étape B : Le fichier `.gitlab-ci.yml`
1e5d32f0 eigenfunction
b8ad0125 chrisker85
Copie ce contenu dans ton fichier :
1e5d32f0 eigenfunction
b8ad0125 chrisker85
```yaml
stages:
- build
- deploy
1e5d32f0 eigenfunction
b8ad0125 chrisker85
# 1. Étape de compilation
build_project:
stage: build
image: node:18
script:
- npm install
- npm run build
artifacts:
paths:
- dist/
expire_in: 1 hour
only:
- main # Ne se lance que sur la branche principale
1e5d32f0 eigenfunction
b8ad0125 chrisker85
# 2. Étape de déploiement via FTP
deploy_ftp:
stage: deploy
image: mwolff/lftp # Image légère contenant un client FTP
script:
# Connexion et synchronisation du dossier dist vers le serveur
- lftp -e "set ftp:ssl-allow no; open $FTP_HOST; user $FTP_USER $FTP_PASSWORD; mirror -X .* -X .git* -R dist/ ./; quit"
only:
- main
1e5d32f0 eigenfunction
b8ad0125 chrisker85
```
1e5d32f0 eigenfunction
b8ad0125 chrisker85
---
1e5d32f0 eigenfunction
b8ad0125 chrisker85
## 📝 Mise à jour du README.md (Section CI/CD)
1e5d32f0 eigenfunction
b8ad0125 chrisker85
Ajoute cette section à ton fichier `README.md` pour que tes collaborateurs (ou ton futur toi) sachent comment le déploiement fonctionne :
1e5d32f0 eigenfunction
b8ad0125 chrisker85
```markdown
## 🤖 Automatisation (CI/CD)

Ce projet utilise **GitLab CI/CD** pour le déploiement automatique.

### Workflow :
1. **Build** : À chaque push sur la branche `main`, GitLab installe les dépendances et génère le dossier `/dist`.
2. **Deploy** : Les fichiers compilés sont automatiquement transférés par FTP sur le serveur de production.

### Configuration :
Les variables de connexion sont stockées de manière sécurisée dans les paramètres CI/CD de GitLab (`FTP_USER`, `FTP_PASSWORD`, `FTP_HOST`).

```

---

C'est une excellente idée. Tester un pipeline permet d'éviter de casser la production à cause d'une petite erreur de frappe dans une variable secrète.

Voici comment procéder pour vérifier et déboguer ton déploiement GitLab CI/CD.

---

## 🔍 1. Vérifier l'état du Pipeline

Dès que tu fais un `git push`, rends-toi dans GitLab :

1. Dans le menu de gauche, va dans **Build > Pipelines**.
2. Tu verras une ligne avec un badge **Running** (bleu), **Passed** (vert) ou **Failed** (rouge).
3. Clique sur le badge de statut pour voir les deux étapes : `build_project` et `deploy_ftp`.

---

## 🛠️ 2. Analyser les erreurs courantes

Si l'étape **deploy_ftp** échoue (badge rouge), clique sur le job pour lire les logs de la console. Voici les erreurs classiques :

### A. Erreur de connexion (Login failed)

* **Symptôme :** `lftp: Login failed: 530 Incorrect password`.
* **Solution :** Vérifie tes variables dans *Settings > CI/CD > Variables*. Attention aux espaces en trop au début ou à la fin du mot de passe.

### B. Problème de certificat SSL

* **Symptôme :** Le job tourne en boucle ou affiche `Fatal error: Certificate verification: Not trusted`.
* **Solution :** Dans le fichier `.gitlab-ci.yml`, j'ai ajouté `set ftp:ssl-allow no;`. C'est souvent nécessaire sur les hébergements mutualisés classiques qui n'acceptent pas le FTPS sécurisé par défaut via script.

### C. Dossier cible incorrect

* **Symptôme :** Le pipeline réussit, mais le site n'est pas mis à jour.
* **Solution :** Dans la commande `mirror`, le dernier argument est `./`. Si ton site est dans un sous-dossier (ex: `/www`), change-le en `mirror ... dist/ /www/`.

---

## 🧪 3. Test local (Avant de push)

tester si tes identifiants FTP fonctionnent sans attendre GitLab, tu peux utiliser un client FTP comme **FileZilla**, ou mieux, tester la commande `lftp` si tu es sous Linux/Mac :

```bash
# Test de connexion rapide
lftp -u mon_user,mon_password -e "ls; quit" ftp.mon-serveur.com

```

---

## 📝 Mise à jour finale du README.md

Ajoute cette petite section "Dépannage" pour garder une trace de comment fixer le pipeline :

```markdown
### 🔧 Dépannage du déploiement
Si le déploiement échoue dans GitLab :
1. Vérifiez que les variables `FTP_HOST`, `FTP_USER` et `FTP_PASSWORD` sont bien configurées dans GitLab CI/CD.
2. Assurez-vous que le serveur accepte les connexions passives (configuré par défaut dans le script lftp).
3. En cas d'erreur 404 après déploiement, vérifiez que le fichier `.htaccess` est bien présent à la racine du serveur.

```
1e5d32f0 eigenfunction
51d53065 chrisker85
---