Introduction aux serveurs Web
description
Transcript of Introduction aux serveurs Web
Introduction aux serveurs Introduction aux serveurs WebWeb
Serveur web ou httpdServeur web ou httpd
• Serveur web ou serveur httpd (http daemon) : logiciel qui sert des pages Web aux clients
• Capable d'interpréter les requêtes http arrivant sur le port associé au protocole HTTP (port 80 par défaut) et de fournir une réponse avec ce même protocole
• Par extension, on appelle souvent la machine physique sur laquelle tourne le logiciel un « serveur web »
Pages statiques, pages Pages statiques, pages dynamiquesdynamiques
• Les pages renvoyées par les serveurs Web sont soit statiques soit dynamiques
• Pages statiques – ne comportent que du HTML, du
javaScript et des applets java– extension .htm ou .html – stockées telles quelles sur les
disques durs des serveurs
Pages statiques, pages Pages statiques, pages dynamiquesdynamiques
• Pages dynamiques – créées (entièrement ou partiellement)
au moment où elles sont demandées au serveur Web
– répondent à une demande spécifique transmise par un formulaire
– doivent récupérer les informations fournies par le client dans les éléments du formulaire
Eléments de formulaireEléments de formulaire• Page formulaire.html• Présente tous les types d’éléments visibles
dans une page HTML– éléments de type <input>– élément de type <select>– élément de type <textarea>
• <form> a deux attributs :– method : get ou post– action : programme à exécuter sur le serveur
Technologies actuellesTechnologies actuelles
• Scripts CGI :– norme, pas langage– génèrent des pages complètes– première technologie utilisée pour
générer des pages dynamiques, mais encore très employée (grand stock de scripts CGI existants)
– programmes complets qui peuvent être écrits en différents langages
Technologies actuellesTechnologies actuelles
• Pages ASP, JSP, PHP :– écrites partiellement en HTML (la structure
globale de la page est en HTML)– comportent des scripts « serveurs » (par
opposition aux scripts javaScript dits scripts « clients »)
• exécutés par le serveur Web au moment où la page est demandée
• interrogent généralement une base de données• résultats insérés dans la page à la place des scripts.
– La page résultante apparaît au client comme une page HTML statique (ce qu’elle n’est pas)
Choix de la technologieChoix de la technologie
• Le choix de la technologie serveur dépend :– du système d’exploitation de la
machine serveur– du type de bases de données à
interroger – de la charge que doit supporter le
serveur
Récupération des données Récupération des données d’un formulaired’un formulaire
Les données d’un formulaire sont transmises à 3variables d’environnement du serveur HTTP :
REQUEST_METHOD :POST ou GET
CONTENT_LENGTH :Taille en octets du corps de la requête
QUERY_STRING :Données transmises après le ? dans l'URL
Méthode getMéthode get
<form method="get" action="nom_programme">Nom : <input type="text" name="nom">Prénom : <input type="text" name="prenom">Age : <input type="text" name="age"><input type="submit" value="OK">
</form>
Méthode getMéthode get
• Au moment où l’utilisateur clique sur le bouton submit, la ligne de l’URL affiche par exemple :http://site/nom_programme?nom=dupont&prenom=antoine&age=25
• Tout ce qui suit le ? correspond aux différents couples variable=valeur provenant du formulaire
Méthode getMéthode get
• Lorsque le formulaire de la page HTML comporte l’instruction method="get" (ou ne comporte pas d’attribut method), alors :– REQUEST_METHOD prend la valeur get (valeur
par défaut)– QUERY_STRING prend comme valeur tout ce qui
suit le ? dans l’URL
• QUERY_STRING prend donc ici la valeur nom=dupont&prenom=antoine&age=25
• Les espaces éventuels sont remplacés par des +
Méthode postMéthode post
<form method="post" action="nom_programme">Nom : <input type="text" name="nom">Prénom : <input type="text" name="prenom">Age : <input type="text" name="age"><input type="submit" value="OK">
</form>
Méthode postMéthode post• Au moment où l’utilisateur clique sur le
bouton submit, la ligne de l’URL affiche seulement :
http://site/nom_programme• Lorsque le formulaire comporte l’instruction
method="post" : – REQUEST_METHOD prend la valeur post – le programme reçoit, sur son entrée standard,
d’abord la demande, ensuite le codage des paramètres
• La variable CONTENT_LENGTH permet de déterminer la longueur des données à lire
Méthode postMéthode post
• CONTENT-LENGTH aura donc ici la valeur 32 (nombre de caractères de la chaîne : nom=dupont&prenom=antoine&age=25)
• Puis le serveur recevra sur son entrée standard la chaîne :nom=dupont&prenom=antoine&age=25
get ou post ?get ou post ?
• Chaque technologie (CGI, ASP, JSP, PHP) dispose de fonctions permettant de décoder la chaîne de requête, donc de récupérer la valeur de chaque variable
• On emploie post si les valeurs des variables ne doivent pas être visibles (mot de passe) ou si les données sont longues (textarea). On emploie get dans la plupart des autres cas.
Principaux serveurs WebPrincipaux serveurs Web
• Apache (Unix / Linux)(67 % environ de parts de marché)
• MIIS (Windows) Microsoft Internet Information Server (21 % environ de parts de marché)
• Java Web Server (versions pour Unix/ Linux / Windows) et Jakarta-Tomcat (qui cohabite avec Apache)
Situation comparative jusqu’en Situation comparative jusqu’en 2004 (Journal du Net)2004 (Journal du Net)
ApacheApache
• Pages HTML, scripts CGI (langages divers), pages PHP – opérationnel à grande échelle, open source – TRES stable– demande peu de ressources matérielles– mais complexe à paramétrer et à administrer
• easyPHP (Apache pour Windows) – outil de développement open source – serveur mySQL intégré
MIISMIIS
• Microsoft Internet Information Server• Pages HTML, pages ASP (Visual Basic
ou JScript)– opérationnel à grande échelle– facile à installer et à administrer– performances moyennes– demande de grosses ressources
matérielles et logicielles
Java Web ServerJava Web Server
• Pages HTML, pages JSP (langage java) – propriété de SUN– serveur complet plutôt destiné aux
entreprises
• Jakarta-Tomcat (Unix/Linux/ Windows) – outil de développement open source– souvent associé à d’autres logiciels serveurs
pour en étendre les fonctionnalités
Technologie 1 Technologie 1 Scripts CGIScripts CGI
IntroductionIntroduction
• La programmation CGI (Common Gateway Interface) permet de faire construire dynamiquement des documents par un serveur HTTP
• Elle est la plupart du temps associée au serveur Apache, sous Unix et Linux
• Ce n’est PAS un langage, mais une norme permettant l’écriture de scripts CGI exécutables par Apache et générant des pages Web complètes
IntroductionIntroduction• Un script CGI peut être écrit dans de
nombreux langages • Mais le langage choisi :
– doit pouvoir être exécuté sur une ligne de commande sans faire appel à un autre programme
– doit avoir directement accès aux variables d'environnement du serveur
– doit permettre d'écrire sur la sortie standard
IntroductionIntroduction
• On peut utiliser des langages compilés ou interprétés
• Sous UNIX : PERL, C, C++, Fortran, Pascal, TCL, sh, csh, ksh ou n'importe quel autre shell
• Sous Windows : C, C++, Visual Basic• Sous MAC-OS, AppleScript (langage
spécifique dédié)
IntroductionIntroduction
• S’ils sont écrits dans un langage interprété (PERL, TCL, shell Unix, Applescript…)– le code doit préciser l’emplacement de
l’interpréteur– il faut leur donner les droits d'exécution
Résultat d’un script CGIRésultat d’un script CGI
• Un script CGI peut renvoyer une image, un document HTML, un clip audio, des références vers d’autres documents, etc.
• Le navigateur client doit savoir quel type de document lui est renvoyé afin de pouvoir le traiter correctement
• Le résultat de l’exécution d’un script CGI doit alors comporter un en-tête (header) qui précise la nature du document renvoyé
Résultat d’un script CGIRésultat d’un script CGIContent-type:text/html l’en-tête
ligne blanche de séparation obligatoire<html> le corps
<head> de la page HTML
<title>resultat du script CGI</title></head> <body> générée par
... le script CGI </body>
</html>
Types MIMETypes MIME
• La syntaxe utilisée pour indiquer le type de données (type MIME) est :Content-type:type/subtype
• Exemples :– text/html– image/jpeg– application/pdf– application/rtf
Récupération des couples Récupération des couples paramètres-valeursparamètres-valeurs
• On peut décoder les couples paramètres-valeurs sans utiliser de module spécifique en analysant les 3 variables d’environnement
• Mais le module CGI.pm, souvent installé avec Apache, automatise le décodage des données
• Voir fichier formulaire et reponse.cgi
Technologie 2 Technologie 2 pages ASPpages ASP
IntroductionIntroduction
• Technologie liée au serveur MIIS de Microsoft (25% des serveurs Web) donc uniquement sous Windows
• Des scripts (écrits en Visual Basic ou en JScript) sont insérés dans les pages ASP et exécutés au moment de la demande
• Les résultats de l’exécution des scripts se mettent à la place des scripts
Récupération des couples Récupération des couples paramètres-valeursparamètres-valeurs
• Dans formulaire1.html, on écrit :<form action="reponse.asp" method="get">
• Réponse générée par la page reponse.asp
• Si method="post" au lieu de method="get", on remplace<%=Request.QueryString("nom")%> par :<%=Request.Form("nom")%>
• Serveur MIIS installé à Assas
Technologie 3 Technologie 3 pages JSPpages JSP
IntroductionIntroduction
• Technologie liée au serveur Java Web Server de Sun (5% des serveurs) mais aussi aux serveurs JSWDK et Tomcat (ce dernier peut être couplé avec Apache)
• Des scripts (en langage java) sont insérés dans les pages JSP et exécutés au moment de la demande
• Le résultat d’un script remplace le script dans la page JSP
Récupération des couples Récupération des couples paramètres-valeursparamètres-valeurs
• Dans formulaire2.html, on écrit :<form action="reponse.jsp" method="get"/"post">
• Réponse générée par la page reponse.jsp, que la method soit get ou post
• Serveur JSWDK installé à Charcot• Serveur Tomcat installé à Assas
Technologie 4 Technologie 4 pages PHPpages PHP
IntroductionIntroduction
• Technologie la plus récente, destinée à remplacer à terme les scripts CGI sur les serveurs Apache
• Incontournable• Des scripts (en langage PHP) sont
insérés dans les pages PHP et exécutés au moment de la demande
• Le résultat d’un script remplace le script dans la page PHP
Récupération des couples Récupération des couples paramètres-valeursparamètres-valeurs
• Dans formulaire3.html, on écrit :<form action="reponse.php" method="get">
• Réponse générée par la page reponse.php
• Si la method est post, on écrit :<?php echo $_POST['nom'] au lieu de<?php echo $_GET['nom']
• Pages normalement destinées au serveur Apache
Serveurs de développement PHPServeurs de développement PHP
• Sous Windows, serveur easyPHP, couplage d’un serveur Apache et d’un serveur de bases de données mySQL
• Serveur de développement, pas serveur opérationnel à grande échelle
• Serveur easyPHP installé à Charcot• Serveur easyPHP installé à Assas