Quelques graphiques!
Quelques graphiques!

Si ce n’est pas encore fait, je vous propose de commencer par lire la présentation générale de ce projet ici

Nous verrons d’abord l’application qui gère le back de notre site web, puis nous traiterons la partie front.

Nous traiterons ici de l’installation du serveur web qui permettra d’accéder à partir du web aux mesures de notre station météo.

Les sources sont disponibles ici, et il y aurait bien des choses à améliorer dans ce code!

Matériel nécessaire

Un serveur capable d’éxécuter:

  • Un serveur web tel que Apache ou Nginx
  • Une JRE 8 ou supérieure

La machine qui héberge votre base de donnée devrait être suffisante!

Installation de l’environnement

Les instructions suivantes sont valables pour debian 10, mais facilement adaptables!

Installation de la JRE

sudo apt install openjdk-11-jre

Installation de Nginx

sudo apt install nginx

Configuration de l’application back

Tout d’abord, procurez vous l’application!

Transférez l’archive sur votre serveur, et extrayez la ou vous le souhaitez.

  • Le fichier jar correspond à l’application en tant que telle
  • Le dossier conf contient deux fichiers que nous allons configurer

logback.xml

Remplacez les deux occurrences de « MODIFIER »

  • La première correspond au chemin du fichier de log courant
    • /home/user/log.log par exemple pour logger dans votre dossier personnel
  • La deuxième correspond au dossier ou seront stockés les logs archivés
    • /home/user par exemple

application.properties

Plus de choses à modifier dans ce fichier!

  • server.port: Le port utilisé par le serveur. Modifiez à votre convenance
  • server.ssl.key-store: Commentez cette ligne si vous ne souhaitez pas utiliser SSL plus de détail sur l’acitvation de SSL ci dessous
  • server.ssl.key-store-password: Idem
  • server.ssl.keyAlias: Idem
  • db.url: Adaptez si votre base n’est pas locale, ou si vous avez changé le nom de la BDD
  • db.username: Adaptez si vous avez changé l’utilisateur de la BDD
  • db.password: Renseignez ici le mot de passe de connexion à la BDD

Précisions si vous souhaitez activer SSL

Si vous souhaitez activer SSL, il vous faudra un certificat. Vous pouvez utiliser Let’s Encrypt.

Une fois votre certificat obtenu, il vous faudra le convertir pour qu’il soit utilisable avec l’application. Cette page explique ce que vous devez faire

En résumé, vous devrez exécuter la commande suivante dans le répertoire qui contient vos certificats en modifiant « NAME » par ce que vous souhaitez

openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name NAME -CAfile chain.pem -caname root

Un mot de passe vous sera demandé et vous obtiendrez alors un fichier keystore.p12

Il faut ensuite modifier la configuration de notre application :

  • server.ssl.key-store: Chemin vers le fichier keystore.p12
  • server.ssl.key-store-password: Le mot de passe que vous avez choisi
  • server.ssl.keyAlias: ce que vous avez mis à la place de « NAME »

Lancement de l’application

L’application se lance avec la commande suivante

java -jar /home/manudomo/manudomo/manudomo.jar

Vous pouvez surveiller les logs, situés dans le dossier que vous avez paramétré précédemment pour voir si tout se déroule bien

Si tout c’est déroulé comme prévu, alors votre serveur doit maintenant être en route!

Création d’un utilisateur en base de données

Pour pouvoir utiliser l’application, vous allez devoir vous connecter. Pour cela, nous allons devoir ajouter un utilisateur directement en base de données

Hashage du mot de passe

Les mots de passes doivent être hashés avec bcrypt 2a, sur 10 rounds.

Des sites internet proposent de hasher des chaînes de caractères. Soyons précautionneux, installons un paquet et faisons le nous même

sudo apt install apache2-utils

Hashons notre mot de passe, en remplacant bien sur password par votre mot de passe réel

htpasswd -bnBC 10 "" password | tr -d ':\n' | tr "$2y$" "$2a$"

Vous obtenez donc une chaîne de caractère qui devra être insérée en base de données

Insertion en base de l’utilisateur

Il va falloir insérer une ligne dans la table user, contenant votre nom d’utilisateur ainsi que votre mot de passe hashé.

Voici les commandes à exécuter pour le faire via psql, remplacez bien sur USER et HASHED PASSWORD par les valeurs adéquates!

sudo su postgres
psql
\connect manudomo
insert into "user" (username, password) values ('USER', 'HASHED PASSWORD');
\q
exit

Installation du front

Pour commencez, téléchargez l’archive!

Transférez la sur votre serveur et décompressez la à la racine de votre serveur web : /var/www/html.

Le ficher index.html doit se situer dans /var/www/html

Il nous reste à adapter la configuration en modifiant le fichier static/conf/Conf.js

Une seule variable à renseigner ici, ROOT_API. Vous devez y renseigner l’adresse de l’application back que nous avons précédemment installé.

Attention! Même si le serveur web est sur la même machine que l’application back, gardez en tête que l’adresse que vous renseignez ici sera utilisée par le navigateur de l’utilisateur. C’est à dire bien loin du serveur. Il faut donc renseigner, soit votre nom de domaine soit votre adresse IP.

Par exemple:

  • https://li212.fr:8443
  • http://12.34.56.789:8443

Si tout c’est bien passé, vous devriez être apte à accéder à l’application à partir d’internet!

Rendez vous sur votre nouvelle interface, appuyez sur le bouton « Login » et renseignez l’utilisateur et le mot de passe que vous avez précédemment choisi!

Ecran d’accueil du site web

Conclusion

Le chemin a été long! Mais nous avons enfin rallié notre destination! D’un côté un arduino qui effectue des mesures de températures, et de l’autre, un site web qui les affiche!

Si vous rencontrez un soucis, n’hésitez pas à en parler en commentaire, ce sera l’occasion pour moi d’apporter des précisions ou des corrections!

Pour les parties suivantes, fini le web, et retour à l’électronique! Il ne nous reste qu’à ajouter des modules à notre système pour le compléter!

Le chapitre suivant, c’est par ici!

Dernière modification: 16 octobre 2019

Auteur

Commentaires

Écrire une réponse ou un commentaire

Votre adresse email ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.