NODE.JS
+------------------+ | Utilisateurs | +---------+--------+ | v +---------+-------------+ | Nginx (proxy inverse) | +---------+-------------+ | v +----------------------+ | Node.js (JavaScript)| | (géré par pm2) | +---------+------------+
Installe
sudo apt update sudo apt install -y curl curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt install -y nodejs sudo yum update sudo yum install -y curl curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash - sudo yum install -y nodejs node -v npm -v
Pour configurer un VirtualHost avec un serveur Node.js sur Debian, vous devez utiliser un serveur web comme Apache ou Nginx comme proxy inverse (reverse proxy) pour gérer les requêtes HTTP et les rediriger vers votre application Node.js. Voici comment le faire avec Nginx, car c'est une méthode courante et performante.
avec Nginx
sudo nano /etc/nginx/sites-available/monapp.com
server {
listen 80;
server_name example.com;
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;
}
}
sudo ln -s /etc/nginx/sites-available/mon_site /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
/var/www/monapp/app.js<VirtualHost *:80> const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
node app.js& const express = require('express'); const app = express(); app.use((req, res, next) => { res.setHeader('Cache-Control', 'public'); res.setHeader('Strict-Transport-Security', 'max-age=63072000'); res.setHeader('X-Frame-Options', 'DENY'); next(); }); // vos routes ici app.listen(3000, () => { console.log('Serveur démarré sur le port 3000'); });
gestionnaire de processus
il est préférable d'utiliser un gestionnaire de processus comme PM2, qui permet de lancer des applications avec les privilèges appropriés tout en assurant une gestion robuste des processus.
Pour démarrer automatiquement votre application Node.js située dans /var/www/monapp au démarrage du système, vous pouvez utiliser un gestionnaire de processus
- Méthode 1: pm2
- Méthode 2 : créer un service systemd.
PM2
pm2 : Un gestionnaire de processus qui surveille et gère l'application Node.js.sudo npm install -g pm2 sudo pm2 start app.js --name "my-node-app" sudo pm2 startup sudo pm2 save sudo pm2 status pm2 logs my-node-app cd /var/www/monapp pm2 start app.js
démarre automatiquement votre application au démarrage pm2 startup systemd sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u votre_utilisateur --hp /home/monapp pm2 save