123 lines
3.3 KiB
Markdown
123 lines
3.3 KiB
Markdown
# Guide de Déploiement en Production — TER Ferrovia Régional
|
|
|
|
Ce guide détaille la procédure complète pour déployer et maintenir l'application Next.js avec **PM2** et **Nginx** sur le nom de domaine **`ter-ferrovia.mrpatator.fr`**.
|
|
|
|
---
|
|
|
|
## 1. Prérequis sur le serveur (Ubuntu / Debian / Linux)
|
|
|
|
Installez Node.js (v20+), PM2, Nginx et Certbot :
|
|
|
|
```bash
|
|
# Mise à jour du système
|
|
sudo apt update && sudo apt upgrade -y
|
|
|
|
# Installation de Node.js 20 LTS
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
|
sudo apt install -y nodejs nginx certbot python3-certbot-nginx
|
|
|
|
# Installation globale de PM2
|
|
sudo npm install -g pm2
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Configuration du projet et des variables d'environnement
|
|
|
|
1. Clonez ou transférez le dossier de l'application sur le serveur :
|
|
```bash
|
|
cd /var/www/
|
|
git clone <URL_DU_DEPOT> ferrovia-regional
|
|
cd ferrovia-regional
|
|
```
|
|
|
|
2. Créez le fichier de variables d'environnement `.env.local` (ou `.env.production`) :
|
|
```bash
|
|
nano .env.local
|
|
```
|
|
*Renseignez vos identifiants Supabase :*
|
|
```env
|
|
NEXT_PUBLIC_SUPABASE_URL=https://votre-projet.supabase.co
|
|
NEXT_PUBLIC_SUPABASE_ANON_KEY=votre-cle-anon-supabase
|
|
PORT=3000
|
|
NODE_ENV=production
|
|
```
|
|
> ⚠️ **Important :** Les variables `NEXT_PUBLIC_*` sont intégrées par Next.js au moment de la commande `npm run build`. Assurez-vous que `.env.local` est bien présent **avant** d'exécuter le build.
|
|
|
|
---
|
|
|
|
## 3. Premier démarrage avec PM2
|
|
|
|
Exécutez les commandes suivantes :
|
|
|
|
```bash
|
|
# 1. Installation des dépendances
|
|
npm ci --prefer-offline || npm install
|
|
|
|
# 2. Compilation de production Next.js
|
|
npm run build
|
|
|
|
# 3. Démarrage de l'application via le fichier ecosystem
|
|
pm2 start ecosystem.config.cjs --env production
|
|
|
|
# 4. Sauvegarde de l'état PM2 et configuration du démarrage automatique au reboot
|
|
pm2 save
|
|
pm2 startup
|
|
```
|
|
*(Suivez l'instruction affichée par `pm2 startup` si une commande sudo vous est demandée).*
|
|
|
|
### Commandes utiles PM2 :
|
|
- Voir le statut : `pm2 status`
|
|
- Consulter les logs en temps réel : `pm2 logs ter-ferrovia`
|
|
- Redémarrer l'application sans coupure : `pm2 reload ter-ferrovia`
|
|
- Arrêter : `pm2 stop ter-ferrovia`
|
|
|
|
---
|
|
|
|
## 4. Configuration de Nginx (Reverse Proxy)
|
|
|
|
1. Copiez la configuration Nginx fournie :
|
|
```bash
|
|
sudo cp nginx/ter-ferrovia.mrpatator.fr.conf /etc/nginx/sites-available/ter-ferrovia.mrpatator.fr
|
|
```
|
|
|
|
2. Activez le site :
|
|
```bash
|
|
sudo ln -s /etc/nginx/sites-available/ter-ferrovia.mrpatator.fr /etc/nginx/sites-enabled/
|
|
```
|
|
|
|
3. Vérifiez la syntaxe Nginx et rechargez :
|
|
```bash
|
|
sudo nginx -t
|
|
sudo systemctl reload nginx
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Activation du certificat HTTPS / SSL avec Certbot
|
|
|
|
Assurez-vous que l'enregistrement DNS **A** pour `ter-ferrovia.mrpatator.fr` pointe bien vers l'adresse IP de votre serveur, puis lancez :
|
|
|
|
```bash
|
|
sudo certbot --nginx -d ter-ferrovia.mrpatator.fr
|
|
```
|
|
|
|
Certbot configurera automatiquement le certificat SSL Let's Encrypt et activera le renouvellement automatique.
|
|
|
|
---
|
|
|
|
## 6. Mises à jour ultérieures (Déploiement Continu)
|
|
|
|
Pour appliquer de futures mises à jour sur le serveur :
|
|
|
|
```bash
|
|
# Option 1 : Via le script automatisé
|
|
bash deploy.sh
|
|
|
|
# Option 2 : Manuellement
|
|
git pull
|
|
npm install
|
|
npm run build
|
|
pm2 reload ecosystem.config.cjs --update-env
|
|
```
|