Serveur Debian

Administration con centré . com !

Serveur Debian

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

service systemd

sudo nano /etc/systemd/system/monapp.service


[Unit]
Description=Mon Application Node.js
After=network.target

[Service]
ExecStart=/usr/bin/node /var/www/monapp/app.js
WorkingDirectory=/var/www/monapp
Restart=always
User=votre_utilisateur
Group=votre_utilisateur
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target



sudo systemctl daemon-reload
sudo systemctl start monapp
sudo systemctl enable monapp


sudo systemctl status monapp