# Mise en place de Node.js

### Étape 1 : Installation de Node.js

Copie et colle ces commandes l'une après l'autre :

1. **Récupérer le script d'installation officiel :**
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-897 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQvA4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3625717275-897 ng-star-inserted"><span class="ng-tns-c3625717275-897">Bash</span><div _ngcontent-ng-c3625717275="" class="buttons ng-tns-c3625717275-897 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3625717275-897 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-897"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-897"></div></div></div>```
    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    
    ```
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-897 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQvA4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-897"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-897"></div></div></div>*(Tu vas voir beaucoup de lignes défiler, c'est normal, il prépare les dépôts).*
2. **Installer Node.js :**
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-898 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQvQ4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3625717275-898 ng-star-inserted"><span class="ng-tns-c3625717275-898">Bash</span><div _ngcontent-ng-c3625717275="" class="buttons ng-tns-c3625717275-898 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3625717275-898 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-898"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-898"></div></div></div>```
    sudo apt install -y nodejs
    
    ```
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-898 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQvQ4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-898"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-898"></div></div></div>
3. **Installer les outils de compilation (par sécurité pour certains modules) :**
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-899 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQvg4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3625717275-899 ng-star-inserted"><span class="ng-tns-c3625717275-899">Bash</span><div _ngcontent-ng-c3625717275="" class="buttons ng-tns-c3625717275-899 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3625717275-899 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-899"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-899"></div></div></div>```
    sudo apt install -y build-essential
    
    ```
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-899 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQvg4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-899"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-899"></div></div></div>
4. **Vérification :** Vérifions que tout est là.
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-900 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQvw4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3625717275-900 ng-star-inserted"><span class="ng-tns-c3625717275-900">Bash</span><div _ngcontent-ng-c3625717275="" class="buttons ng-tns-c3625717275-900 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3625717275-900 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-900"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-900"></div></div></div>```
    node -v
    npm -v
    
    ```
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-900 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQvw4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-900"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-900"></div></div></div>*Si tu vois `v20.x.x` s'afficher, c'est parfait.*

---

### Étape 2 : Préparation du dossier du projet

Maintenant que Node est là, nous pouvons créer l'environnement pour le projet Alteris.

1. **Créer le dossier (si ce n'est pas déjà fait) et entrer dedans :**
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-901 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQwA4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3625717275-901 ng-star-inserted"><span class="ng-tns-c3625717275-901">Bash</span><div _ngcontent-ng-c3625717275="" class="buttons ng-tns-c3625717275-901 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3625717275-901 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-901"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-901"></div></div></div>```
    sudo mkdir -p /var/www/alteris-geomatic
    
    # On donne les droits à ton utilisateur (debian) pour pouvoir modifier les fichiers sans 'sudo' à chaque fois
    sudo chown -R $USER:$USER /var/www/alteris-geomatic
    
    cd /var/www/alteris-geomatic
    
    ```
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-901 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQwA4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-901"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-901"></div></div></div>
2. **Initialiser le projet Node.js :** Cette commande crée un fichier `package.json` qui sert de carte d'identité au projet.
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-902 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQwQ4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3625717275-902 ng-star-inserted"><span class="ng-tns-c3625717275-902">Bash</span><div _ngcontent-ng-c3625717275="" class="buttons ng-tns-c3625717275-902 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3625717275-902 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-902"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-902"></div></div></div>```
    npm init -y
    
    ```
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-902 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQwQ4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-902"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-902"></div></div></div>
3. **Installer les librairies nécessaires :** C'est ici qu'on installe les outils dont on a parlé :
    
    
    - `express` : Pour créer le serveur web.
    - `pg` : Pour que Node.js puisse parler à PostgreSQL.
    - `body-parser` : Pour lire les JSON envoyés.
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-903 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQwg4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3625717275-903 ng-star-inserted"><span class="ng-tns-c3625717275-903">Bash</span><div _ngcontent-ng-c3625717275="" class="buttons ng-tns-c3625717275-903 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3625717275-903 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-903"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-903"></div></div></div>```
    npm install express pg body-parser
    
    ```
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-903 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQwg4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-903"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-903"></div></div></div>
4. **Installer PM2 (Le gestionnaire de processus) :** C'est l'outil qui gardera ton serveur allumé même si tu te déconnectes.
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-904 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQww4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="code-block-decoration header-formatted gds-title-s ng-tns-c3625717275-904 ng-star-inserted"><span class="ng-tns-c3625717275-904">Bash</span><div _ngcontent-ng-c3625717275="" class="buttons ng-tns-c3625717275-904 ng-star-inserted"><button aria-label="Copier le code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-mdc-tooltip-trigger copy-button ng-tns-c3625717275-904 mat-unthemed ng-star-inserted"></button></div></div><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-904"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-904"></div></div></div>```
    sudo npm install -g pm2
    
    ```
    
    <div _ngcontent-ng-c3625717275="" class="code-block ng-tns-c3625717275-904 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjgnPPZhruSAxUAAAAAHQAAAAAQww4" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_1b2e1f39003bec08","c_5b7951c496f77574",null,"rc_806858b1fd246b5f",null,null,"fr",null,1,null,null,1,0]]" style="display: block;"><div _ngcontent-ng-c3625717275="" class="formatted-code-block-internal-container ng-tns-c3625717275-904"><div _ngcontent-ng-c3625717275="" class="animated-opacity ng-tns-c3625717275-904"></div></div></div>

---

### Résumé de la situation

Maintenant, nous sommes vraiment prêts :

- \[x\] Base de données PostGIS installée.
- \[x\] Données test (Carré Paris) insérées dans la base.
- \[x\] Node.js installé.
- \[x\] Dossier projet créé et librairies installées.

Dis-moi quand c'est fait (vérifie juste avec `node -v` que tu as bien une version), et je te redonne le code des fichiers `db.js` et `server.js` pour qu'on finalise !