Introduction : Pourquoi déployer une application JavaScript sur un VPS ?
Développer une application web moderne en JavaScript (Node.js) n'est que la première moitié du travail. La seconde partie, tout aussi importante, est le déploiement, c'est-à-dire la mise en ligne de votre projet sur un serveur réel accessible sur Internet. L'utilisation d'un serveur privé virtuel (VPS) vous donne un contrôle total sur l'environnement, contrairement à un hébergement mutualisé. Vous pouvez configurer le serveur selon vos besoins, installer toutes les dépendances nécessaires et garantir des performances élevées.
Dans ce guide, nous allons détailler étape par étape le processus de déploiement d'une application JavaScript (Node.js) typique sur un VPS. Nous aborderons toutes les étapes : de la configuration initiale du serveur au lancement de l'application en mode production en utilisant le gestionnaire de processus PM2 et le serveur proxy inverse Nginx. Cet article est destiné aux développeurs déjà familiers avec les bases de Node.js et la ligne de commande Linux.
1. Préparation du VPS et configuration initiale
La première étape consiste à louer un VPS auprès d'un fournisseur (DigitalOcean, Linode, Vultr ou leurs équivalents russes). L'offre minimale recommandée est : 1 vCPU, 1-2 Go de RAM. Le système d'exploitation est Ubuntu 22.04 LTS (ou plus récent).
1.1. Connexion au serveur via SSH
Après avoir obtenu l'adresse IP et le mot de passe root, connectez-vous au serveur depuis votre terminal :
ssh root@votre_adresse_IP_serveur
Si vous utilisez une clé SSH (recommandé), spécifiez le chemin vers la clé privée :
ssh -i ~/.ssh/id_rsa root@votre_adresse_IP_serveur
1.2. Création d'un utilisateur et sécurité de base
Ne travaillez jamais constamment en tant que root. Créez un nouvel utilisateur et accordez-lui les droits sudo :
adduser monutilisateurusermod -aG sudo monutilisateur
Ensuite, configurez la clé SSH pour le nouvel utilisateur (copiez la clé publique depuis votre machine locale) et désactivez la connexion par mot de passe dans le fichier /etc/ssh/sshd_config :
PasswordAuthentication no
Redémarrez le service SSH : sudo systemctl restart sshd.
1.3. Installation des logiciels nécessaires
Mettez à jour le gestionnaire de paquets et installez Node.js (nous recommandons la version LTS via NodeSource), Git et Nginx :
sudo apt update && sudo apt upgrade -ycurl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -sudo apt install -y nodejs git nginx
Vérifiez les versions : node -v et npm -v.
2. Clonage du dépôt et installation des dépendances
Maintenant que le serveur est prêt, transférons le code de votre application.
2.1. Clonage du projet
Accédez au répertoire personnel de l'utilisateur et clonez le dépôt depuis GitHub (ou un autre hébergeur Git) :
cd /home/monutilisateurgit clone https://github.com/votre_login/votre_depot.git monappcd monapp
2.2. Installation des dépendances et test de lancement
Installez tous les paquets npm listés dans package.json :
npm install
Si votre projet utilise des variables d'environnement (par exemple, pour la base de données ou les clés API), créez un fichier .env et remplissez-le :
nano .env
Exemple de contenu :
PORT=3000DATABASE_URL=mongodb://localhost:27017/mabdNODE_ENV=production
Lancez l'application manuellement pour vérifier qu'elle fonctionne :
node app.js
Vérifiez l'accessibilité via curl http://localhost:3000 ou ouvrez dans un navigateur http://votre_IP:3000 (après avoir autorisé le port dans le pare-feu). Si tout fonctionne, arrêtez le processus (Ctrl+C).
3. Configuration du gestionnaire de processus PM2
Une application lancée via node app.js s'arrêtera dès que vous fermerez la session SSH. Pour un fonctionnement permanent, on utilise PM2 — un gestionnaire de processus pour Node.js qui redémarre automatiquement l'application en cas de crash et gère