LINUX:Service WEB de géolocalisation
→ retour à la page du menu sur l'API de GéoLocalisation
But
Nous allons maintenant mettre en production l'API et sa base de données.
Base de données - MariaDB
Dans les articles précédents, nous avons constitué une base de données contenant les information de localisation. Il faut maintenant créer un utilisateur MariaDB aux droits limités.
Le script suivant permet de le créer. Il est composé de deux parties:
- Les commandes SQL à mettre dans un fichier nommé, par exemple, "user.localisation.sql" :
create user 'usergeo'@'localhost' identified by 'MOTDEPASSE' ; create user 'usergeo'@'127.0.0.1' identified by 'MOTDEPASSE' ; create user 'usergeo'@'::1' identified by 'MOTDEPASSE' ; grant select on dblocalisation.* to 'usergeo'@'localhost'; grant select on dblocalisation.* to 'usergeo'@'127.0.0.1'; grant select on dblocalisation.* to 'usergeo'@'::1';
Cet utilisateur ne peut travailler qu'à partir de la machine locale et n'a les droits que visionner les données ("SELECT").
Dans ce script, divers paramètres sont à adapter selon votre infrastructure et vos désirs:
- "dblocalisation" est le nom du schéma contenant les données de localisation.
- "usergeo" est le nom de cet utilisateur MariaDB.
- "MOTDEPASSE" est le mot de passe de cet utilisateur; il faut le modifier!!!
Pour exécuter ces commandes SQL, utilisez le script suivant suivant:
#!/bin/bash DBUSER=root DBPW=MOTDEPASSEROOT /usr/binmysql --user=$DBUSER --password=$DBPW < user.localisation.sql
Deux variables sont à adapter selon votre configuration:
- "root" est le nom par défaut de l'utilisateur MariaDB ayant tous les droits.
- "MOTDEPASSEROOT" est le mot de passe de cet utilisateur; il faut le modifier!!!
Mise en place de l'API
Les sources sont téléchargeables via le lien ci-dessous:
Télécharger le fichier ZIP contenant les scripts PHP de l'API
Il faut le dézipper avec la commande suivante:
unzip Localisation.zip
Le répertoire "localisation" est créé. Il contient des scripts PHP et le sous-répertoire "public". Ce sous-répertoire ne contient que le script "recherche.php". Au niveau du serveur WEB, seul ce script est accessible à partir d'Internet. C'est ce script qu'il faut appeler accompagné de paramètres.
Nous plaçons le répertoire "localisation", par exemple, dans le répertoire "/web".
Les droits de ce répertoire doit être précisé avec les commandes suivantes:
chmod -R 550 /web/localisation chown -R apache:apache /web/localisation
On donne les droits de lecture et exécution à l'utilisateur "apache" et son groupe qui est l'utilisateur par défaut du serveur WEB Apache.
Le fichier de configuration "/web/localisation/config.php" doit être adapté en fonction de la configuration de MariaDB faite ci-dessus.
<?php // SQL // Indiquez les paramètres de votre connexion SQL $conf['db_host'] = 'localhost'; $conf['db_nom'] = 'dblocalisation'; $conf['db_user'] = 'usergeo'; $conf['db_password'] = 'MOTDEPASSE'; ?>
Dans cet exemple:
- "localhost" est le nom de la machine qui héberge le serveur MariaDB
- "dblocalisation" est le nom du schéma de la base de données MariaDB
- "usergeo" est le nom d'utilisateur MariaDB.
- "MOTDEPASSE" est le mot de passe (à changer !!!) de l'utilisateur "usergeo"
Configuration du serveur WEB Apache
On crée un fichier de configuration pour cette application. Par défaut, ce fichier est placé dans le répertoire "/etc/httpd/conf.d". On nommera ce fichier "localisation.conf" dont voici le contenu minimum:
Alias /localisation /web/localisation/public <Directory /produc/localisation/public> DirectoryIndex recherche.php Options +FollowSymLinks -Indexes <IfModule mod_authz_core.c> Require all granted </IfModule> </Directory>
On remarque que les clients WEB n'ont accès qu'au sous-répertoire "/web/localisation/public", ce qui n'empêche pas PHP d'accéder aux autre sources PHP se trouvant en amont ("/web/localisation").
Il faut maintenant redémarrer le serveur WEB via la commande suivante:
systemctl restart httpd.service
et éventuellement le processus PHP:
systemctl restart php-fpm.service
Test
Il reste à tester ce nouveau services par exemple par l'appel avec l'utilitaire "curl":
curl "http://localhost/localisation/recherche.php?type=street&maximumResponses=5&terr=BE+90000&text=Baty:5070+Fosses"
Notons que nous faisons un appel local ("localhost") non sécurisé ("http").
→ retour à la page du menu sur l'API de GéoLocalisation