~~NOTOC~~ =======Le serveur web======= Nous avons vu que le WEB, invention de Tim Berner Lee, permet le partage d'information à travers Internet en normalisant les procédures utilisées pour y accéder ainsi que la manière de les rédiger. Les informations sont récupérées et affichées grâce au navigateur web. Si une ressource web est un fichier électronique interprété par un navigateur et si le fichier peut être hébergé en local, l'intérêt est le partage en rendant le contenu accessible à tous à travers les protocoles web. C'est la raison d'être du serveur web. =====Le serveur web===== ====Le modèle client serveur==== Un poste client (celui de l'utilisateur) envoie une requête (demande d'information) à un serveur (poste informatique relié en permanence à Internet). Celui ci retourne les informations (textes, images ...) sous la forme d'un code (le HTML/CSS) ou de fichiers annexes associés (images, vidéo, ressources ...). Le protocole HTTP est utilisé pour cela. ====L'URL (Uniform Resource Locator)==== L'URL est l'adresse en trois parties de la ressource : {{ :cours:url.jpg?400|Cliquer pour agrandir}} * **Le protocole** qui doit être utilisé pour la communication * **Le serveur** qui comprend au moins les 2 dernières parties séparées par des points (sous-domaine/serveur, domaine de deuxième niveau (institution, marque, domaine personnel), domaine principal de rattachement défini par l'[[https://www.iana.org/|IANA]]. * **Le chemin** qui localise le document au sein de l'arborescence du serveur. Les différents nœuds sont séparés par des '/'. Le chemin se termine par le nom du fichier et son extension. ====Les requêtes HTTP==== Le client envoie une requête au serveur qui la traitera avant d'envoyer une réponse. Les requêtes et réponses HTTP sont composées d'un entête (informations de gestion) et d'un corps (données utiles). {{ :cours:requetehttp.jpg?400|}} ===La requête== * La requête GET demande une ressource. La requête POST permet de mettre à jour une ressource ... * L'entête contient des informations permettant au serveur de choisir la meilleure ressource disponible ou de l'adapter au mieux. * Pour une requête GET, le corps contient le chemin de la ressource. {{ :cours:reponsehttp.jpg?400|}} ===La réponse=== * L'entête indique le résultat du traitement de la requête (OK ou code d'erreur) et des informations sur le contenu de la réponse. * Le corps contient la ressource ou le message d'erreur. ====Autres fonctions du serveur web==== Le serveur gère des "log", journal des connexions et des ressources demandées par clients. Il est généralement associé avec d'autres serveurs tels : * les serveurs PHP qui permettent de générer des pages web dynamiques, * les serveurs de basse de données qui peuvent fournir des informations brutes (catalogue de données) pour les pages dynamiques. //Dans un site marchand, il n'est pas stocké une page par article à vendre. La page concernant l'article est généré dynamiquement à partir des informations en base de données et d'un squelette de page défini préalablement.// On parle de serveur WAMP ou LAMP : * Windows ou Linux comme système d'exploitation * Apache le plus utilisé des des serveurs Web * MySQL, Mandira ... le serveur de base de donnée utilisé * PHP, Perl, Python ... le serveur de page dynamique. =====ZMWS (ZazouMiniWebServer)===== ZMWS est un serveur web de type WAMP écrit par [[http://xgarreau.org/|Xavier Garreau]]. Il ne nécessite pas d'installation et fonctionne sur une clé USB. ([[https://framaclic.org/h/zmwsportable|Téléchargement]] sur [[https://framakey.org/|Framakey]]. Il fait fonctionner sous Windows un serveur web Apache, une base de données MySQL et un serveur PHP. Après l'avoir téléchargé et copié sur votre clé USB : * Cliquer sur l'exécutable ZMWS.exe pour le lancer * Entrer l'URL **%%http://localhost/ressource_demandée%%** dans le navigateur pour envoyer une requête * Placer vos ressources dans le dossier **"PortableZMWS\ZMWS\_web.zmwsc"** pour créer vos sites web. * Personnaliser le fichier **"index.php"** pour lister vos sites sur la page d'accueil (Connaissances nécessaires en PHP) * Arrêter le serveur (Lien sur la page d’accueil)