GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment déployer des applications Node.js avec pm2 et Nginx sur Ubuntu

pm2 est un gestionnaire de processus pour les applications Node.js, il vous permet de garder vos applications en vie et dispose d'un équilibreur de charge intégré. C'est simple et puissant, vous pouvez toujours redémarrer ou recharger votre application de nœud sans aucun temps d'arrêt et cela vous permet de créer un cluster de votre application de nœud.

Dans ce didacticiel, je vais vous montrer comment installer et configurer pm2 pour l'application simple "Express", puis configurer Nginx en tant que proxy inverse pour l'application de nœud qui s'exécute sous pm2.

Prérequis

  • Ubuntu 16.04 - 64 bits
  • Privilèges racine

Étape 1 - Installer Node.js LTS

Dans ce tutoriel, nous allons commencer notre projet à partir de zéro. Tout d'abord, nous avons besoin de Nodejs installé sur le serveur. J'utiliserai la version 6.x de Nodejs LTS qui peut être installée à partir du référentiel nodesource.

Installez le package 'python-software-properties ' du référentiel Ubuntu, puis ajoutez le référentiel Nodejs 'nodesource'.

sudo apt-get install -y python-software-properties
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

Installez la dernière version de Nodejs LTS.

sudo apt-get install -y nodejs

Une fois l'installation réussie, vérifiez la version du nœud et de npm.

node -v
npm -v

Étape 2 - Générer un exemple d'application Express

J'utiliserai un squelette d'application Web simple généré avec un package nommé 'express-generator ' pour cet exemple d'installation. Express-generator peut être installé avec la commande npm.

Installez 'express-generator ' avec npm :

npm install express-generator -g

-g : installer le paquet à l'intérieur du système

Nous exécuterons l'application en tant qu'utilisateur normal, et non en tant qu'utilisateur racine ou super utilisateur. Nous devons donc d'abord créer un nouvel utilisateur.

Créez un nouvel utilisateur, je nomme le mien "yume ' :

useradd -m -s /bin/bash yume
passwd yume

Connectez-vous au nouvel utilisateur en utilisant su :

su - yume

Ensuite, générez une nouvelle application Web simple avec la commande express :

express hakase-app

La commande créera un nouveau répertoire de projet 'hakase-app '.

Accédez au répertoire du projet et installez toutes les dépendances nécessaires à l'application.

cd hakase-app
npm install

Puis testez et démarrez une nouvelle application simple avec la commande ci-dessous :

DEBUG=myapp:* npm start

Par défaut, notre application express fonctionnera sur le port 3000 . Visitez maintenant l'adresse IP du serveur :192.168.33.10:3000

Le squelette de l'application Web simple s'exécute sur le port 3000, sous l'utilisateur 'yume'.

Étape 3 - Installer pm2

pm2 est un package de nœud et peut être installé avec la commande npm. Alors installons-le avec npm (avec les privilèges root, lorsque vous êtes toujours connecté en tant qu'utilisateur hakase, puis exécutez la commande "exit" pour redevenir root) :

npm install pm2 -g

Nous pouvons maintenant utiliser pm2 pour notre application Web.

Allez dans le répertoire de l'application 'hakase-app ' :

su - hakase
cd ~/hakase-app/

Vous y trouverez un fichier nommé 'package.json ', affichez son contenu avec la commande cat.

cat package.json

Vous pouvez voir le 'démarrer ' contient une commande utilisée par Nodejs pour démarrer l'application express. Nous utiliserons cette commande avec le gestionnaire de processus pm2.

Exécutez l'application express avec la commande pm2 ci-dessous :

pm2 start ./bin/www

Vous pouvez maintenant voir les résultats ci-dessous :

Notre application express fonctionne sous pm2 avec le nom 'www ', identifiant '0 '. Vous pouvez obtenir plus de détails sur l'application exécutée sous pm2 avec l'option show 'show nodeid|name '.

pm2 show www

Si vous souhaitez voir le journal de notre application, vous pouvez utiliser l'option journaux. C'est juste un journal d'accès et d'erreurs et vous pouvez voir le statut HTTP de l'application.

pm2 logs www

Vous pouvez voir que notre processus est en cours d'exécution. Maintenant, permettons-lui de démarrer au démarrage.

pm2 startup systemd

systemd :Ubuntu 16 utilise systemd.

Vous recevrez un message pour exécuter une commande en tant que root. Revenez aux privilèges root avec "exit", puis exécutez cette commande.

sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u yume --hp /home/yume

Il générera le fichier de configuration systemd pour le démarrage de l'application. Lorsque vous redémarrez votre serveur, l'application s'exécutera automatiquement au démarrage.

Étape 4 - Installer et configurer Nginx en tant que proxy inverse

Dans ce didacticiel, nous utiliserons Nginx comme proxy inverse pour l'application de nœud. Nginx est disponible dans le dépôt Ubuntu, installez-le avec la commande apt :

sudo apt-get install -y nginx

Ensuite, allez dans les 'sites-disponibles ' et créez un nouveau fichier de configuration d'hôte virtuel.

cd /etc/nginx/sites-available/
vim hakase-app

Collez la configuration ci-dessous :

upstream hakase-app {
    # Nodejs app upstream
    server 127.0.0.1:3000;
    keepalive 64;
}

# Server on port 80
server {
    listen 80;
    server_name hakase-node.co;
    root /home/yume/hakase-app;

    location / {
        # Proxy_pass configuration
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_max_temp_file_size 0;
        proxy_pass http://hakase-app/;
        proxy_redirect off;
        proxy_read_timeout 240s;
    }
}

Enregistrez le fichier et quittez vim.

Sur le paramétrage :

  • L'application de nœud est en cours d'exécution avec le nom de domaine 'hakase-node.co '.
  • Tout le trafic de nginx sera transféré vers l'application de nœud qui s'exécute sur le port 3000 .

Activez la configuration en créant un lien symbolique dans le répertoire sites-enabled.

ln -s /etc/nginx/sites-available/hakase-app /etc/nginx/sites-enabled/

Testez la configuration de Nginx et assurez-vous qu'il n'y a pas d'erreur.

nginx -t

Démarrez Nginx et activez-le au démarrage :

systemctl start nginx
systemctl enable nginx

Étape 5 - Tester

Ouvrez votre navigateur Web et visitez le nom de domaine (le mien est) :

http://hakase-app.co

Vous verrez que l'application express s'exécute sous le serveur Web nginx.

Ensuite, redémarrez votre serveur et assurez-vous que l'application de nœud est en cours d'exécution au moment du démarrage :

pm2 save
sudo reboot

Si vous vous êtes reconnecté à votre serveur, vérifiez le processus d'application du nœud. Exécutez la commande ci-dessous en tant que 'yume ' utilisateur.

su - yume
pm2 status www

L'application Node s'exécute sous pm2 et Nginx en tant que proxy inverse.

  • Ubuntu
  • Node.js
  • Nginx

Ubuntu
  1. Comment installer Node.js et NPM sur Ubuntu 18.04 et 20.04

  2. Comment installer Nginx avec PHP5 et MySQL sur Ubuntu 11.10

  3. Comment déployer Modsecurity avec Nginx sur Ubuntu 20.04 LTS

  4. Comment déployer l'application Flask avec Nginx et Gunicorn sur Ubuntu 20.04

  5. Comment installer Node.js avec NVM et Nginx sur Ubuntu 22.04

Comment installer Drupal 8 avec Nginx, PHP-FPM et SSL sur Ubuntu 15.10

Comment installer Mailpile avec Nginx sur Ubuntu 15.10

Comment installer OpenCart 2 avec Nginx et SSL sur Ubuntu 15.10

Comment installer Django avec PostgreSQL et Nginx sur Ubuntu 16.04

Comment installer Wordpress avec Nginx, MariaDB et HHVM dans Ubuntu 15.04

Comment déployer l'application Laravel avec Nginx sur Ubuntu ?