Déployer NodeJS sur son serveur web sous Apache

Déployer NodeJS sur son serveur web sous Apache

INTRODUCTION

Comme d'habitude, définissons ce qu'est NodeJS (même si vous devez connaitre puisque vous lisez cet article) !

Brièvement, NodeJS permet d'exécuter du javascript côté serveur (un concurrent de php, en autre). NodeJS est très pratique, déjà c'est du javascript, donc facile à apprendre si vous avez déjà du JS. Ensuite sa rapidité. NodeJS est très performant pour créer des applications web évolutives. Pour finir, la communauté, une très graaaaande communauté de développeurs utilisent NodeJS, de plus la bibliothèque de paquets NPM est très utiles pour intégrer des modules sur son application web.

1 / APACHE

Bon rentrons dans le coeur du sujet, déjà pour déployer NodeJS sur son serveur, nous utiliserons Apache, si apache n'est pas installé sur votre machine j'ai écrit un article pour vous aidez, avouez que c'est bien fait non ;)

Une fois qu'apache est installé et configuré nous pouvons passer à la seconde étape : installer NodeJS

2 / INSTALLER NODEJS

Bon, installer NodeJS n'est pas très compliquer... comme d'habitude passer en super-utilisateur avant d'exécuter les commandes grâce ààààààààà :

sudo -i

puis

apt install Nodejs

Capture d’écran 2021-11-20 à 23.55.18.png

On installe le gestionnaire de paquet NPM :

apt install npm

Capture d’écran 2021-11-20 à 23.59.11.png

Vérifiez l'installation grâce à :

node -v

npm -v

Ces deux commandes doivent ressortir les numéros de versions de Node et de Npm.

Capture d’écran 2021-11-21 à 00.25.22.png

3 / LANCEMENT

NodeJS est installé ça y est !

Maintenant, il nous suffit de nous rendre dans n'importe quelque dossier de notre système (de préférence, dans le dossier perso de votre utilisateur) dans notre cas, on s'embête pas on le met dans : /home/pi et de glisser tout les fichiers de votre application.

⚠️ Si vous en avez un, ne copier pas le dossier node_modules (on installera les dépendances depuis le terminal)

Pour lancer notre application ça sera un peu different que sur un site en html ou php.

En temps normal on dis à Apache de servir les fichiers d'un dossier, là on vas simplement dire à apache de rediriger toutes les requêtes http sur le @localhost de notre machine.

Pour gérer au mieux tout ce bazar on Installe PM2 ça nous permettra de lancer notre fichier index.js.

C'est partie :

npm install pm2 -g

Capture d’écran 2021-11-21 à 00.27.19.png

Après avoir placé vos fichiers dans le dossier de votre choix, rendez-vous dans ce dossier puis exécuter :

npm install

Cette commande installera toutes les dépendances de votre package.json

On lance

pm2 start index.js

Capture d’écran 2021-11-21 à 00.43.25.png

Cette commande équivaut a lancer notre application grâce à Node index.js

Pour l'instant notre application n'est pas accesible depuis l'adresse ip du serveur mais uniquement depuis le localhost, en réalité on viens de lancer son application comme on aurait pu le faire pendant le développement.

Avant de continuer activons le module http_proxy

sudo en2mod proxy
sudo a2enmod proxy_http

Bon encore un petit fichier apache à modifier et ce sera finis ! Maintenant rendez-vous dans /etc/apache2/sites-available/ et si ce n'est pas déjà fait créez un fichier de conf nommé serveur.conf et copier / coller le code suivant :

<VirtualHost *:80>
    ServerName monsite.com
    ServerAlias www.monsite.com

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia Full

    <Proxy *>
      Require all granted
    </Proxy>

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

Evidement remplacez monsite.com par votre nom de domaine.

Pour faire simple, on demande à Apache de rediriger toutes les requêtes sur le port 3000 du localhost.

⚠️ Assurez vous de bien configurer le port 3000 dans votre index.js.

Pour finir on active notre fichier de conf avec :

a2ensite serveur.conf

systemctl restart apache

Plus qu'a aller voir le résultat en vous connectant à votre serveur depuis un navigateur.

Capture d’écran 2021-11-21 à 12.01.15.png

Et voila comment déployer du NodeJS sur votre serveur WEB sous apache !

Voici quelques docs pouvant vous être utiles :

Merci d'avoir suivi cet article j'espère qu'il vous aura été utile, n'hésitez pas à partager vos conseils ou vos question dans les commentaires :)

Baptiste