Blog › Linux

Comment déployer un site en Node.js sur un VPS ?

Couverture - Comment déployer un site en Node.js sur un VPS ?
Article créé par la communauté et vérifié par l'équipe Ce tutoriel a été rédigé par un membre de la communauté via AzurDOCS. Il a été relu et révisé par notre équipe, toutefois il peut comporter des imprécisions. Lisez-le avec discernement.
Ce tutoriel vous permet de déployer un site web créé en Node.js sur votre VPS Linux.

⚠️ ATTENTION ! Remplacez [domaine] par le nom de domaine utilisé, [PORT] par le port utilisé par Node.js et [server.js] par le fichier d’exécution du site ! Aussi, n'oubliez pas de pointer le nom de domaine vers l'IP du VPS avec un enregistrement A dans la zone DNS !


Étape 1 : Préparation du VPS

1. Connexion par SSH au VPS :

Logiciel PuTTY pour Windows

ssh user@ip_du_vps pour Linux et macOS

2. Mettre à jour le système

sudo apt update && sudo apt upgrade -y

3. Installer les outils nécessaires

sudo apt install curl wget nginx snapd -y

4. Installer Node.js et npm

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install nodejs -y

5. Installer PM2

sudo npm install pm2 -g

6. Installer Certbot

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot


Étape 2 : Configurer le site

1. Créer le dossier du projet

sudo mkdir -p /var/www/[domaine]

2. Transférer les fichiers

Utiliser FileZilla pour transférer tous les fichiers du site dans /var/www/[domaine].

3. Installer les dépendances

cd /var/www/[domaine]
npm install

4. Configurer PM2

pm2 start [server.js] --name [domaine]
pm2 save
pm2 startup

5. Configurer Nginx pour le site

sudo nano /etc/nginx/sites-available/[domaine].conf

Ajouter cette configuration :

server {
    listen 80;
    server_name [domaine];


    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

6. Activer la configuration Nginx

sudo ln -s /etc/nginx/sites-available/[domaine].conf \
           /etc/nginx/sites-enabled/[domaine].conf

7. Obtenir le certificat SSL

sudo certbot --nginx -d [domaine] -d www.[domaine]

Acceptez les Conditions d'Utilisation et renseignez votre email pour avoir une alerte en cas d'expiration de certificat.

8. Tester et redémarrer Nginx

sudo nginx -t
sudo systemctl restart nginx


Étape 3 : Configurer le renouvellement automatique des certificats SSL (optionnel)

1. Créer un script de renouvellement

sudo nano /usr/local/bin/renew_certificates.sh

Ajouter ce contenu :

#!/bin/bash
certbot renew --quiet --post-hook "systemctl reload nginx"

Rendre le script exécutable :

sudo chmod +x /usr/local/bin/renew_certificates.sh

2. Configurer un cron job pour un renouvellement mensuel

sudo crontab -e

Ajouter cette ligne :

0 0 1 * * /usr/local/bin/renew_certificates.sh
AzurHOSTS Logo