Bienvenue

Jalios Community

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

Module Horizon - Fiche d'installation - Installation du serveur Horizon sous Windows Server

  • Rédacteur :
  • Date de modification : 06/01/2022

Cette fiche détaille l'installaltion du composant serveur Horizon sous Windows Server.

Mise en garde

Cette installation a été testée sous Windows Server 2019, mais devrait également être compatible avec les versions 2012 R2 et 2016.

Prérequis

Windows

Disposé d'un compte avec les privilèges d'administration du serveur.

Avoir accès à une commande PowerShell en version 5.1 ou utlérieure.

Bas de données

Une base de données PostgreSQL doit exister, et être accessible par le serveur Windows sur lequel Horizon sera installé. Se reporter à la documentation suivante pour l'installation d'une base PostgreSQL sous Windows Server : Postgres sous Windows Server

Dans cette documentation, les propriétés suivantes seront utilisées pour la connexion à la base de données Horizon :

  • Serveur : vm-postgres
  • Nom de la base : horizondb
  • Utilisateur : horizondbuser
  • Mot de passe : horizondbpwd

Installation de Node.js

Ouvrir une commande PowerShell en tant qu'administrateur.

Définir la version de Node.js à installer :

$env:NODEJS_MAJOR_VERSION="14"
$env:NODEJS_MINOR_VERSION="18.1"
$env:NODEJS_VERSION="$env:NODEJS_MAJOR_VERSION.$env:NODEJS_MINOR_VERSION"

Créer les répertoires suivants :

md "D:\jalios\download\nodejs"
md "D:\jalios\bin\nodejs\$env:NODEJS_VERSION"

Créer le lien symbolique vers la dernière version :

New-Item -ItemType SymbolicLink -Path "D:\jalios\bin\nodejs\latest" -Value "D:\jalios\bin\nodejs\$env:NODEJS_VERSION"

Télécharger Node.js :

Invoke-WebRequest https://nodejs.org/dist/latest-v$env:NODEJS_MAJOR_VERSION.x/node-v$env:NODEJS_VERSION-x64.msi -OutFile "D:\jalios\download\nodejs\node-v$env:NODEJS_VERSION-x64.msi"

Lancer l'installation du msi, avec les options suivantes :

  • Destination Folder : D:\jalios\bin\nodejs\latest\
  • Custom Setup : laisser les valeurs par défaut
  • Tools for Native Modules : laisser la case Automatically install the necessary tools. décochée

Installation du serveur Horizon

Définir la version du serveur Horizon à installer :

$env:HORIZON_VERSION="1.3.1"

Créer les répertoires suivants :

md "D:\jalios\bin\horizon"
md "D:\jalios\app\horizon"
md "D:\jalios\download\horizon"

Télécharger la dernière version du serveur Horizon, et la déposer à l'emplacement suivant :

D:\jalios\download\horizon

Extraire l'archive du serveur Horizon :

Expand-Archive "D:\jalios\download\horizon\horizonserver-horizon-$env:HORIZON_VERSION.zip" -DestinationPath "D:\jalios\bin\horizon"
Rename-Item "D:\jalios\bin\horizon\horizonserver-horizon-$env:HORIZON_VERSION" "$env:HORIZON_VERSION"

Vérification :

ls "D:\jalios\bin\horizon\$env:HORIZON_VERSION"

Répertoire : D:\jalios\bin\horizon\1.3.1

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 24/11/2021 09:03 cypress
d----- 24/11/2021 09:03 src
-a---- 07/10/2021 16:45 2367 .gitignore
-a---- 07/10/2021 16:45 386 Dockerfile
-a---- 07/10/2021 16:45 2046 Jenkinsfile
-a---- 07/10/2021 16:45 419556 package-lock.json
-a---- 07/10/2021 16:45 1709 package.json

Créer le lien symbolique vers la dernière version :

New-Item -ItemType SymbolicLink -Path "D:\jalios\bin\horizon\latest" -Value "D:\jalios\bin\horizon\$env:HORIZON_VERSION"

Installer les packages npm nécessaires :

  • Ouvrir une invite de commande Node.js : Menu Démarrer > Node.js > Node.js command prompt
  • Lancer les commandes suivantes :
cd /D D:\jalios\bin\horizon\latest
npm install convert-hrtime

Configuration du serveur Horizon

Installation des dépendances

Afin d'exécuter le serveur Horizon en tant que service Windows, le package pm2-installer doit être installé. Il utilise le package pm2, permettant d'exécuter et surveiller des processus Node.js.

Invoke-WebRequest https://github.com/jessety/pm2-installer/archive/main.zip -OutFile "D:\jalios\download\nodejs\pm2-installer.zip"
  • Décompresser l'archive :
Expand-Archive D:\jalios\download\nodejs\pm2-installer.zip -DestinationPath D:\jalios\download\nodejs
  • Ouvrir une invite de commande Node.js : Menu Démarrer > Node.js > Node.js command prompt
  • Se positionner dans le répertoire d'installation de pm2-installer :
cd /D D:\jalios\download\nodejs\pm2-installer-main
  • Configurer et installer le package npm pm2-installer :
npm run configure
npm run configure-policy
npm run setup

A l'issue de cette installation, le service Windows PM2 est créé et démarré, et configuré pour s'exécuter avec l'utilisateur Local Service.

Configuration du service Horizon

Fermer Node.js command prompt et l'ouvrir à nouveau, afin de prendre en compte les nouvelles variables d'environnement.

  • Se positionner dans le répertoire applicatif d'Horizon :
cd /D D:\jalios\app\horizon
  • Exécuter la commande suivante, permettant d'initialiser le fichier de configuration :
pm2 init simple

Editer le fichier D:\jalios\app\horizon\ecosystem.config.js tout juste initialisé, avec le contenu suivant (à adapter suivant l'environnement) :

module.exports = {
apps : [{
name : "horizon",
script : "../../bin/horizon/latest/src/server.js",
    error_file : "logs/horizon-err.log",
    out_file : "logs/horizon-out.log",
   env : {
"NODE_ENV": "production",
"DB_CONNECTION_URI": "postgres://horizondbuser:horizondbpwd@vm-postgres:5432/horizondb",
"JPLATFORM_SERVER_URL": "https://intranet.fr",
"AUTH_SERVER_URL": "http://vm-jplatform:8080",
"AUTH_SERVER_JWT": "<JWT_TOKEN>"
}
}]
}

Liste des variables de paramétrage du serveur Horizon

  • NODE_ENV : environnement d'exécution de Node.js
  • 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é depuis JPlatform

Il est également possible de démarrer le serveur en HTTPS, en lui 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)

Configuration des droits

Le service Windows PM2 s'exécutant avec l'utilisateur Local Service, il faut que ce dernier ait les droits sur les différents répertoires créés précédemment :

  • D:\jalios\app\horizon
  • D:\jalios\bin\horizon
  • D:\jalios\bin\nodejs

Pour chacun de ces répertoires, définir l'utilisateur Local Service comme propriétaire :

  • Ouvrir les propriétés du répertoire, onglet Sécurité
  • Cliquer sur Avancé
  • Dans le champ Propriétaire, cliquer sur Modifier
  • Cliquer sur Avancé..., puis Rechercher, sélectionner l'utilisateur SERVICE LOCAL, puis OK
  • Cocher la case Remplacer le propriétaire des sous-conteneurs et des objets, puis OK

Démarrage du serveur Horizon

Cette étape permet de démarrer le serveur Horizon, et de configurer son redémarrage automatique avec Windows.

  • Ouvrir Node.js command prompt
  • Se positionner dans le répertoire applicatif d'Horizon :
cd /D D:\jalios\app\horizon
  • Exécuter la commande suivante, permettant de démarrer le serveur Horizon :
pm2 start ecosystem.config.js
  •  Exécuter la commande suivante, afin de configurer Horizon en démarrage automatiquement :
pm2 save

Consulter les logs Horizon pour s'assurer de son bon fonctionnement :

  • D:\jalios\app\horizon\logs\horizon-err.log
  • D:\jalios\app\horizon\logs\horizon-out.log

Surveillance du serveur Horizon

Le package pm2 permet de surveiller simplement le statut et la consommation des ressources du serveur Horizon.

  • Ouvrir Node.js command prompt
  • Exécuter la commande suivante :
pm2 monit

Les commandes suivantes permettent de gérer l'exécution du serveur Horizon (arrêt, démarrage, redémarrage) :

pm2 stop all
pm2 start all
pm2 restart all

Se reporter à la documentation de pm2 pour connaitre l'ensemble des commandes disponibles.

3 commentaires

Rémy BEZY

1 vote :

Bonjour,


Petites erreurs dans la procédure de déploiement :

La commande suivante ne dois pas être jouée à mon sens :

md "D:\jalios\bin\horizon\$env:HORIZON_VERSION"

En effet la commande de RENAME après extraction 

Rename-Item "D:\jalios\bin\horizon\horizonserver-horizon-$env:HORIZON_VERSION" "$env:HORIZON_VERSION"

Va tenter de créer un répertoire, étant déjà existant ça tombe en erreur.

 

+


Il semble que le module convert-hrtime ne s'installe pas correctement.

Pour l'installer :

cd /D D:\jalios\bin\horizon\1.3.1

npm install convert-hrtime

Cela doit être exécuté avant

pm2 start ecosystem.config.js

+

Les logs sont dans cette arborescence apparemment :

C:\ProgramData\pm2\home\logs\

Et non dans  D:\jalios\app\horizon\logs\

Je valide la bonne installation sinon.

 

Cordialement,

Rémy B.

Nicolas Turlay

Merci pour cette documentation !!

Rémy BEZY

1 vote :

Merci Hervé Mignone  pour les correctifs 😊 !

D'ailleurs, il manque ça également pour installer le nécessaire pour Prometheus sur la partie NPM :

npm install socket.io-prometheus-metrics jquery react react-dom prom-client