# Guide Complet sur PM2

## Installation de PM2

Pour installer PM2 globalement sur votre système, utilisez la commande suivante :

```bash
npm install pm2 -g
```

Cela installera PM2 en tant que commande globale, accessible depuis n'importe quel répertoire dans votre terminal[1](https://pm2.keymetrics.io/).

## Lancement de Scripts ou de Sites NPM avec PM2

### Démarrer une Application

Pour démarrer une application Node.js avec PM2, utilisez la commande suivante dans le répertoire de votre projet :

```bash
pm2 start app.js
```

Remplacez `app.js` par le point d'entrée de votre application.

### Démarrer un Script NPM

Si votre projet utilise un script NPM défini dans le fichier `package.json`, vous pouvez le démarrer avec PM2 comme suit :

<div class="relative rounded-md border border-default bg-[#1e1e1e] dark:bg-subtle" id="bkmrk-"><div class="sticky top-0 mb-1 flex items-center justify-end gap-1 rounded-t-md bg-[#1e1e1e] px-2 font-sans dark:bg-subtle">  
</div><div class="rounded-b-md select-text dark:bg-subtle!" node="[object Object]"></div></div>```bash
pm2 start npm -- run <script-name>
```

Remplacez `<script-name>` par le nom du script défini dans votre `package.json`.

### Options de Démarrage

Vous pouvez également spécifier des options supplémentaires lors du démarrage, telles que le nombre d'instances, le mode cluster, et les variables d'environnement :

<div class="relative rounded-md border border-default bg-[#1e1e1e] dark:bg-subtle" id="bkmrk--1"><div class="sticky top-0 mb-1 flex items-center justify-end gap-1 rounded-t-md bg-[#1e1e1e] px-2 font-sans dark:bg-subtle">  
</div><div class="rounded-b-md select-text dark:bg-subtle!" node="[object Object]"></div></div>```bash
pm2 start app.js --name "my-app" -i 4 --watch
```

- `--name "my-app"` : Donne un nom à votre application.
- `-i 4` : Démarre 4 instances de l'application (mode cluster).
- `--watch` : Redémarre l'application automatiquement lorsque des modifications de fichiers sont détectées.

## Gestion des Logs

PM2 facilite la gestion des logs. Vous pouvez afficher les logs en temps réel avec la commande suivante :

```bash
pm2 logs
```

<div class="relative rounded-md border border-default bg-[#1e1e1e] dark:bg-subtle" id="bkmrk-pour-afficher-les-lo"><div class="sticky top-0 mb-1 flex items-center justify-end gap-1 rounded-t-md bg-[#1e1e1e] px-2 font-sans dark:bg-subtle"></div><div class="sticky top-0 mb-1 flex items-center justify-end gap-1 rounded-t-md bg-[#1e1e1e] px-2 font-sans dark:bg-subtle">Pour afficher les logs d'une application spécifique :</div></div>```bash
pm2 logs my-app
```

## Sauvegarde et Démarrage Automatique

### Sauvegarder la Liste des Processus

Pour sauvegarder la liste des processus gérés par PM2, utilisez :

```bash
pm2 save
```

Cela créera un fichier de sauvegarde qui peut être utilisé pour restaurer les processus plus tard.

### Générer un Script de Démarrage

Pour générer un script de démarrage qui redémarre automatiquement vos applications PM2 au démarrage du serveur, utilisez :

```bash
pm2 startup
```

Cette commande génère un script adapté à votre système d'exploitation et affiche les instructions pour l'activer.

### Restaurer les Processus

Pour restaurer les processus sauvegardés, utilisez :

```bash
pm2 resurrect
```

## Surveillance et Gestion

### Surveiller les Applications

PM2 offre une interface de surveillance en temps réel. Vous pouvez l'activer avec :

```bash
pm2 monit
```

### Arrêter et Redémarrer les Applications

Pour arrêter une application :

```bash
pm2 stop my-app
```

Pour redémarrer une application :

```bash
pm2 restart my-app
```

### Supprimer une Application

Pour supprimer une application de la liste PM2 :

```bash
pm2 delete my-app
```

## Conclusion

PM2 est un outil puissant pour gérer les applications Node.js en production. Avec ses fonctionnalités de gestion des processus, de surveillance, et de démarrage automatique, il simplifie grandement le déploiement et la maintenance des applications.