Les serveurs Web

Download Report

Transcript Les serveurs Web

Introduction aux
serveurs Web
Serveur 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
dynamiques
• 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
dynamiques
• 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 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 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 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 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 d’un
formulaire
Les données d’un formulaire sont transmises à 3
variables 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 get
<form method="get" action="nom_programme">
Nom :
<input type="text" name="nom">
Pr&eacute;nom :
<input type="text" name="prenom">
Age :
<input type="text" name="age">
<input type="submit" value="OK">
</form>
Mé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 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 post
<form method="post" action="nom_programme">
Nom :
<input type="text" name="nom">
Pr&eacute;nom :
<input type="text" name="prenom">
Age :
<input type="text" name="age">
<input type="submit" value="OK">
</form>
Mé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 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 ?
• 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 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 JakartaTomcat (qui cohabite avec Apache)
Situation comparative jusqu’en
2004 (Journal du Net)
Apache
• Pages HTML, scripts
divers), pages PHP
–
–
–
–
CGI
(langages
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é
MIIS
• 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 Server
• Pages HTML, pages JSP (langage java)
– propriété de SUN
– serveur
complet
entreprises
plutôt
destiné
aux
• 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
Scripts CGI
Introduction
• 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
Introduction
• 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
Introduction
• 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é)
Introduction
• 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 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 CGI
Content-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 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
paramè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
pages ASP
Introduction
• 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
paramètres-valeurs
• Dans formulaire1.html, on écrit :
<form action="reponse.asp" method="get">
• Réponse générée par la
reponse.asp
• Si method="post" au lieu de
method="get", on remplace
<%=Request.QueryString("nom")%> par :
<%=Request.Form("nom")%>
• Serveur MIIS installé à Assas
page
Technologie 3
pages JSP
Introduction
• 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
paramè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
pages PHP
Introduction
• 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
paramètres-valeurs
• Dans formulaire3.html, on écrit :
<form action="reponse.php" method="get">
• Réponse
générée
par
la
reponse.php
• Si la method est post, on écrit :
page
<?php echo $_POST['nom'] au lieu de
<?php echo $_GET['nom']
• Pages normalement
serveur Apache
destinées
au
Serveurs 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