0% ont trouvé ce document utile (0 vote)
4 vues13 pages

TPAdmin

Ce document technique décrit le déploiement d'un service web SOAP pour la gestion des étudiants, filières et nationalités, utilisant une architecture LEMP sur une machine virtuelle Ubuntu. Il couvre l'installation, la configuration, les services SOAP implémentés, ainsi que des guides de test et de résolution d'incidents. Le service est accessible via SoapUI et permet diverses opérations sur les données des étudiants.

Transféré par

ignaciomarvel40
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues13 pages

TPAdmin

Ce document technique décrit le déploiement d'un service web SOAP pour la gestion des étudiants, filières et nationalités, utilisant une architecture LEMP sur une machine virtuelle Ubuntu. Il couvre l'installation, la configuration, les services SOAP implémentés, ainsi que des guides de test et de résolution d'incidents. Le service est accessible via SoapUI et permet diverses opérations sur les données des étudiants.

Transféré par

ignaciomarvel40
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Documentation Technique : Web Service SOAP –

Gestion des Étudiants, Filières et Nationalités

Table des matières

1. Introduction
2. Architecture du système
3. Structure des données
4. Services SOAP implémentés
5. Installation et configuration de l’infrastructure
6. Déploiement du web service
7. Guide de test avec SoapUI
8. Résolution des incidents
9. Commandes utiles
10. Conclusion

1. Introduction

Ce document décrit l’ensemble du processus de déploiement d’un serveur web exposant


un service SOAP permettant de consulter et gérer des données relatives aux étudiants,
filières et nationalités. Le service a été développé dans le cadre du projet
webservISISUPTECH et déployé sur une machine virtuelle Ubuntu 24.04 LTS,
accessible depuis un poste Windows via SoapUI.

Le document intègre :

• l’architecture matérielle et logicielle,


• les choix techniques (LEMP vs LAMP, redirection de ports, etc.),
• la structure de la base de données,
• la description des méthodes SOAP,
• la procédure d’installation et de configuration,
• les tests de validation,
• les problèmes rencontrés et leurs solutions.
2. Architecture du système

Élément Description

Hôte Windows 10/11 avec SoapUI et VirtualBox

Machine virtuelle Ubuntu 24.04 LTS (kernel 6.8.0-106)

Serveur web Nginx (port 80)

Interpréteur PHP PHP 8.3-FPM (écoute sur [Link]:9000)

Base de données MySQL 8.0

Communication Redirection de ports VirtualBox : [Link]:2020 → [Link]:80

Protocole SOAP via WSDL

3. Structure des données

La base de données utilisée s’appelle demol32026. Les tables suivantes ont été créées :

3.1 Table Nationalite

Champ Type Description

id INT Clé primaire

nom VARCHAR(100) Nom de la nationalité


3.2 Table Niveau

Champ Type Description

id INT Clé primaire

nom VARCHAR(50) Niveau d’étude (L1, L2, …)

3.3 Table Filiere

Champ Type Description

id INT Clé primaire

nom VARCHAR(100) Nom de la filière

date DATE Date de création / session

3.4 Table Classe

Champ Type Description

id INT Clé primaire

nom VARCHAR(100) Nom de la classe

filiere_id INT Clé étrangère vers Filiere

niveau_id INT Clé étrangère vers Niveau


3.5 Table Etudiant

Champ Type Description

id INT Clé primaire

nom VARCHAR(100) Nom de l’étudiant

image VARCHAR(255) Chemin ou URL de l’image

adresse TEXT Adresse postale

latitude DECIMAL(10,8) Latitude géographique

longitude DECIMAL(11,8) Longitude géographique

nationalite_id INT Clé étrangère vers Nationalite

classe_id INT Clé étrangère vers Classe

4. Services SOAP implémentés

Le web service expose cinq méthodes via le fichier WSDL [Link]. Toutes les méthodes
retournent des objets ou des listes d’objets au format XML.

4.1 getEtudiantByNom($nom)

• Description : Recherche un étudiant par son nom (correspondance exacte).


• Entrée : $nom (string)
• Sortie : Un objet Etudiant contenant tous les champs de la table, avec les
informations de nationalité et de classe associées.
4.2 getEtudiantById($id)

• Description : Récupère un étudiant à partir de son identifiant.


• Entrée : $id (int)
• Sortie : Un objet Etudiant (complet).

4.3 getListeStr()

• Description : Retourne la liste des noms des étudiants (simples chaînes).


• Entrée : Aucune.
• Sortie : Un tableau de chaînes de caractères.

4.4 getListeEtudiant()

• Description : Retourne la liste complète de tous les étudiants avec tous leurs
attributs.
• Entrée : Aucune.
• Sortie : Un tableau d’objets Etudiant.

4.5 getListeFiliere()

• Description : Retourne la liste de toutes les filières.


• Entrée : Aucune.
• Sortie : Un tableau d’objets Filiere (id, nom, date).

4.6 getListeNationalite()

• Description : Retourne la liste des nationalités.


• Entrée : Aucune (les paramètres $id, $nom, $codePays mentionnés dans
l’énoncé ne sont pas utilisés dans la version déployée).
• Sortie : Un tableau d’objets Nationalite (id, nom).
5. Installation et configuration de l’infrastructure

5.1 Mise en place de la machine virtuelle

• Ubuntu 24.04 LTS installée sous VirtualBox.


• Configuration réseau : NAT avec redirection de ports.
• Ports redirigés : hôte [Link]:2020 → invité [Link]:80.
• Accès SSH : ssh -p 2020 kola_kola@[Link]

5.2 Conflit initial : Apache vs Nginx

Lors de l’installation initiale d’Apache2 (dans une approche LAMP), le port 80 était déjà
utilisé par Nginx. Pour simplifier et optimiser, nous avons choisi de désinstaller
Apache2 et de basculer sur une pile LEMP (Nginx + PHP-FPM).

bash

sudo apt purge apache2 apache2-* -y


sudo apt autoremove -y

5.3 Installation des composants LEMP

bash

sudo apt update


sudo apt install nginx mysql-server php8.3-fpm php8.3-mysql php-xml php-soap -y

5.4 Configuration de Nginx

Fichier de site : /etc/nginx/sites-available/webservISISUPTECH

nginx

server {
listen 80;
server_name _;
root /var/www/html;
index [Link] [Link] [Link];
location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/[Link];
fastcgi_pass [Link]:9000; # important : port TCP
}
}

Activation :

bash

sudo ln -s /etc/nginx/sites-available/webservISISUPTECH /etc/nginx/sites-enabled/


sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx

5.5 Configuration de PHP-FPM

Le fichier /etc/php/8.3/fpm/pool.d/[Link] a été modifié pour que PHP écoute


sur le port 9000 au lieu d’un socket Unix :

ini

; listen = /run/php/[Link]
listen = [Link]:9000
listen.allowed_clients = [Link]

Redémarrage :

bash

sudo systemctl restart php8.3-fpm

Vérification de l’écoute :

bash

ss -ant | grep 9000

5.6 Configuration de MySQL

Problème : PHP ne parvenait pas à se connecter à MySQL en raison du plugin


auth_socket et de la politique validate_password.
Solutions appliquées :

1. Désactivation temporaire du composant validate_password (en


développement) :

sql

UNINSTALL COMPONENT '[Link]

2. Modification du compte root pour utiliser mysql_native_password avec un


mot de passe vide (à adapter en production) :

sql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';


FLUSH PRIVILEGES;

3. Création de la base de données :

sql

CREATE DATABASE demol32026;


USE demol32026;
-- Exécution du script SQL de création des tables et insertion des données

5.7 Redirection de ports VirtualBox

Pour que l’hôte Windows puisse joindre le serveur web de la VM, une redirection de
ports a été configurée dans VirtualBox :

• Nom : SOAP
• Protocole : TCP
• IP hôte : [Link]
• Port hôte : 2020
• IP invité : [Link]
• Port invité : 80
6. Déploiement du web service

6.1 Fichiers du projet

Les fichiers suivants ont été placés dans /var/www/html :

• [Link] : point d’entrée du service SOAP.


• [Link] : définition du service (WSDL).
• [Link] : classe de connexion à MySQL.
• [Link], [Link], [Link] : classes métier.
• [Link] : implémentation des méthodes SOAP.

6.2 Adaptation du WSDL pour la redirection de ports

Le fichier [Link] a été modifié pour que l’adresse de l’endpoint pointe sur l’URL
accessible depuis Windows :

xml

<soap:address location="[Link]

Sans cette modification, SoapUI tentait d’accéder à [Link]


(inaccessible depuis l’hôte) ou à une adresse interne non routée.

6.3 Vérification locale

• Accès depuis la VM : curl [Link]


retourne le WSDL.
• Test simple PHP : curl [Link] avec un <?php
phpinfo(); ?> retourne la page PHPInfo.
7. Guide de test avec SoapUI

7.1 Création d’un projet

1. Ouvrir SoapUI.
2. File > New SOAP Project.
3. Nom du projet : Projet_WebService.
4. URL du WSDL : [Link]
5. Cliquer sur OK. Le client génère automatiquement les requêtes pour chaque
méthode.

7.2 Exécution d’une méthode

• Double-cliquer sur une requête (ex : getEtudiantById).


• Dans le volet Request, modifier la valeur de l’élément id (par défaut ?).
• Cliquer sur l’icône Envoyer (flèche verte).
• La réponse XML apparaît dans le volet Response.

Exemple de requête pour getEtudiantById :

xml

<soapenv:Envelope xmlns:soapenv="[Link]
xmlns:web="[Link]
<soapenv:Header/>
<soapenv:Body>
<web:getEtudiantById>
<web:id>1</web:id>
</web:getEtudiantById>
</soapenv:Body>
</soapenv:Envelope>

La réponse doit contenir les informations de l’étudiant correspondant.

7.3 Vérification des autres méthodes

• getEtudiantByNom : fournir un nom.


• getListeStr : retourne une liste de noms.
• getListeEtudiant : retourne tous les étudiants.
• getListeFiliere : liste des filières.
• getListeNationalite : liste des nationalités.

8. Résolution des incidents

Incident Cause Solution

Apache ne démarre pas (port Désinstallation d’Apache,


Nginx déjà présent
80 occupé) conservation de Nginx

PHP-FPM écoutait
sur socket alors que Modification de [Link] pour
ERR_INVALID_HTTP_RESPONSE
Nginx envoyait sur écouter sur [Link]:9000
port 9000

WSDL pointait sur


Redirection de port VirtualBox +
SoapUI ne peut pas joindre le localhost:80,
modification de l’adresse dans le
service inaccessible depuis
WSDL
Windows

Plugin auth_socket Passer à mysql_native_password


Access denied MySQL ou mot de passe et désactiver temporairement
trop complexe validate_password

Consulter
Erreur PHP dans les /var/log/nginx/[Link] et
Réponse vide ou erreur 500
logs /var/log/[Link] pour

corriger le code
9. Commandes utiles

Tâche Commande

Tester la syntaxe Nginx sudo nginx -t

Recharger Nginx sudo systemctl reload nginx

Redémarrer PHP-FPM sudo systemctl restart php8.3-fpm

Voir les ports en écoute ss -tlnp

Vérifier les logs Nginx sudo tail -f /var/log/nginx/[Link]

Vérifier les logs PHP-FPM sudo tail -f /var/log/[Link]

Se connecter à MySQL sudo mysql -u root -p

Vérifier la base de données SHOW DATABASES;

10. Conclusion

Le web service SOAP a été déployé avec succès sur une infrastructure LEMP (Nginx +
PHP-FPM + MySQL), rendu accessible depuis l’extérieur grâce à une redirection de ports
VirtualBox. Les six méthodes demandées ont été implémentées et testées avec SoapUI.
L’architecture choisie permet une séparation efficace des rôles (serveur web, traitement
PHP, base de données) et offre une base solide pour une éventuelle évolution (HTTPS,
authentification, etc.).

Prochaines améliorations possibles :

• Activer HTTPS via Let’s Encrypt.


• Remplacer l’utilisateur root de MySQL par un utilisateur dédié avec des droits
limités.
• Mettre en place un mécanisme de logging des appels SOAP.
Rédacteur : kola_kola
Date : 23 mars 2026
Version : 1.0

Vous aimerez peut-être aussi