400 likes | 525 Views
Introduction aux serveurs Web. Serveur web ou httpd. Serveur web ou serveur httpd (http daemon) : logiciel qui sert des pages Web aux clients
E N D
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é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_STRINGprend donc ici la valeurnom=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é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 Jakarta-Tomcat (qui cohabite avec Apache)
Apache • 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é
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 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
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 savoirquel 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
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 page reponse.asp • Si method="post" au lieu de method="get", on remplace <%=Request.QueryString("nom")%> par : <%=Request.Form("nom")%> • Serveur MIIS installé à Assas
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
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 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 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