Bienvenue

Jalios Community

Tout ce que vous souhaitez savoir sur l'écosystème Jalios

Module Horizon - Fiche d'installation - Installation du serveur Horizon sous Linux

  • Rédacteur :
  • Date de modification : 31/05/2022

Cette fiche détaille l'installaltion du composant Horizon sous Linux

Préparation du serveur

Créer les répertoires:

sudo mkdir -p /opt/jalios/bin/horizon/2.0
sudo mkdir -p /opt/jalios/app/horizon

 

Création de l'utilisateur horizon dédié à l’exécution du runtime node.js
Debian

sudo useradd --user-group --no-create-home --home-dir /opt/jalios/app/horizon horizon

RedHat/CentsOs

sudo useradd --user-group -M --home /opt/jalios/app/horizon horizon

Définition de l'utilisateur horizon comme propriétaire des répertoires de l'application

sudo chown -Rf horizon: horizon /opt/jalios/bin/horizon /opt/jalios/app/horizon

Extraire

sudo -u horizon tar -xf horizonserver-2.0.tar -C /opt/jalios/bin/horizon/2.0 --strip-components=1

Vérification:

$ ls -la /opt/jalios/bin/horizon/2.0/
total 380
drwxr-xr-x 3 horizon horizon 4096 Sep 27 11:18 .
drwxr-xr-x 3 horizon horizon 4096 Sep 27 11:09 ..
-rw-r--r-- 1 horizon horizon 385 Sep 26 13:22 Dockerfile
-rw-r--r-- 1 horizon horizon 1216 Sep 26 13:22 package.json
-rw-r--r-- 1 horizon horizon 356560 Sep 26 13:22 package-lock.json
drwxr-xr-x 9 horizon horizon 4096 Sep 26 13:22 src

 

Créer un lien symbolique

sudo -u horizon ln -s /opt/jalios/bin/horizon/2.0 /opt/jalios/bin/horizon/latest

 

Installation de node.js via NodeSource 

Voir le site de NodeSource: https://github.com/nodesource/distributions/blob/master/README.md

Ubuntu/Debian

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

CentOS/RHEL

curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum install -y nodejs

 

Installation des packages (npm)

Se placer dans le répertoire des binaires puis lancer :

Debian

cd /opt/jalios/bin/horizon/2.0
sudo apt install build-essential
sudo -u horizon npm ci --only=production

CentOS

cd /opt/jalios/bin/horizon/2.0
sudo yum install -y make gcc*
sudo -u horizon npm ci --only=production

 

Déplacement des sources

sudo -u horizon mv src/* .
sudo -u horizon rmdir src

 

Paramétrer Horizon avec JPlatform

Créer le fichier de configuration 

sudo -u horizon nano /opt/jalios/app/horizon/jplatform.env


Avec le contenu suivant:

NODE_ENV=production
DB_CONNECTION_URI=postgres://horizondbuser:horizondbpwd@vm-hrzdb-prod:5432/horizondb
JPLATFORM_SERVER_URL=https://intranet.fr
AUTH_SERVER_URL=http://vm-jpfm-prod:8080
AUTH_SERVER_JWT=<le_token_jwt>

Liste des variables de paramétrage du serveur Horizon

  • DB_CONNECTION_URI : paramètre de connexion à la BDD
  • JPLATFORM_SERVER_URL : lien vers le site JPlatform (url d'accès vue des utilisateurs)
  • AUTH_SERVER_URL : url d'accès au serveur JPlatform (réseau interne, accès serveur à serveur)
  • AUTH_SERVER_JWT le token JWT généré auparavant

Il est également maintenant possible de démarrer le serveur en HTTPS en fournissant le chemin du certificat et la clef en variable d'environnement:

  • HTTPS_KEY : lien absolu vers key.pem
  • HTTPS_CERT : lien absolu vers cert.pem

Activation des métriques Prometheus

  • PROMETHEUS : true (/metrics)

 

Création d'un service Systemd

Nous allons créer un service systemd afin de lancer le serveur Horizon. En fonction de la version de systemd disponible, la configuration diffère légèrement.

Pour connaitre la versionde systemd (exemple avec Debian 10)

systemd --version
systemd 241 (241)

 

Ensuite, créer un répertoire pour les logs

sudo -u horizon mkdir -p /opt/jalios/app/horizon/logs

Ajout de la configuration suivante dans le fichier /etc/systemd/system/horizon.service

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

 

Avec le contenu suivant pour des versions de systemd supérieures ou égales à 241:

[Unit]
Description=Node.js pour l'application Horizon
After=network.target

[Service]
EnvironmentFile=/opt/jalios/app/horizon/jplatform.env
WorkingDirectory=/opt/jalios/bin/horizon/latest
ExecStart=node server.js
StandardOutput=file:/opt/jalios/app/horizon/logs/stdout.log
StandardError=file:/opt/jalios/app/horizon/logs/stderr.log
Type=simple
Restart=on-failure
User=horizon
Group=horizon

[Install]
WantedBy=multi-user.target

 

et le contenu suivant pour des versions antérieures à 241:

[Unit]
Description=Node.js pour l'application Horizon
After=network.target

[Service]
EnvironmentFile=/opt/jalios/app/horizon/jplatform.env
WorkingDirectory=/opt/jalios/bin/horizon/latest
ExecStart=/bin/sh -c 'exec /usr/bin/node server.js >>/opt/jalios/app/horizon/logs/stdout.log 2>>/opt/jalios/app/horizon/logs/stderr.log'
Type=simple
Restart=on-failure
User=horizon
Group=horizon

[Install]
WantedBy=multi-user.target

 

Nous devons informer systemd que nous avons ajouté un nouveau fichier de configuration

sudo systemctl daemon-reload

Activation du service au démarrage du système

sudo systemctl enable horizon.service

Lancement du service

sudo systemctl start horizon.service

Vérification du statut du service

sudo journalctl -f -u horizon.service
sudo systemctl status horizon.service

 

Logs applicatives

sudo -u horizon tail -f /opt/jalios/app/horizon/logs/stdout.log
sudo -u horizon tail -f /opt/jalios/app/horizon/logs/stderr.log

1 commentaire

Gedeon Rodrigue Poudjoum Leutcho

Bonjour j'exécute cette procedure et j'ai une erreur à l'éxection de cette commande:

sudo -u horizon npm ci --only=production

@nstalljod:/opt/jalios/bin/horizon/2.0/horizonserver-horizon-2.0$ sudo -u h                                                                                                                                                             orizon npm ci --only=production
npm WARN config only Use `--omit=dev` to omit dev dependencies from the install.
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: socket.io-prometheus@0.2.1
npm ERR! Found: prom-client@14.0.1
npm ERR! node_modules/prom-client
npm ERR!   prom-client@"^14.0.1" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer prom-client@">=10 <12" from socket.io-prometheus@0.2.1
npm ERR! node_modules/socket.io-prometheus
npm ERR!   socket.io-prometheus@"^0.2.1" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: prom-client@11.5.3
npm ERR! node_modules/prom-client
npm ERR!   peer prom-client@">=10 <12" from socket.io-prometheus@0.2.1
npm ERR!   node_modules/socket.io-prometheus
npm ERR!     socket.io-prometheus@"^0.2.1" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See /opt/jalios/app/horizon/.npm/eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR!     /opt/jalios/app/horizon/.npm/_logs/2022-07-20T13_31_57_039Z-debug-0                                                                                                                                                             .log