
Code-Garage #18 - Qu'est-ce qu'un serveur web exactement ?
Durée: 8m40s
Date de sortie: 29/03/2022
Un serveur web, est-ce une machine ou un logiciel ? Est-ce complexe et quel serait le serveur le plus basique possible ?
Notes de l'épisode :
Article d'origine : https://code-garage.fr/blog/qu-est-ce-qu-un-serveur-web/
Écrire un serveur web en PHP : http://station.clancats.com/writing-a-webserver-in-pure-php/
Écrire un serveur web en PHP : http://station.clancats.com/writing-a-webserver-in-pure-php/
Salut et bienvenue dans ce nouvel épisode de Code Garage.
Je m'appelle Nicolas Brandin-Bernard et aujourd'hui on va parler d'un sujet qui
peut paraître être un sujet très basique et que tout le monde connaît plus ou moins
sur le bout des doigts, mais en réalité on se trompe très souvent.
Ce sujet c'est tout simplement de découvrir ce qu'est un serveur web.
Alors je sais, vous vous dites sûrement, je sais déjà ce qu'est un serveur web et
c'est sûrement le cas, mais il y a évidemment des développeurs et des développeuses qui
débutent et qui ont une vision de ce qu'est un serveur web légèrement biaisé.
Donc le but c'est de rétablir un petit peu ça et de remettre dans le droit chemin.
J'aime pas trop cette expression mais en tout cas de bien faire comprendre ce qu'est
exactement un serveur web.
Donc un serveur c'est vrai que ça peut porter à confusion parce qu'on désigne
à la fois une machine et à la fois un logiciel et donc ça c'est pas évident à comprendre
puisqu'on utilise le même terme pour ces deux concepts qui sont en réalité différents.
Donc ici quand on parle d'un serveur web, en tout cas dans cet épisode là, je vais
parler de la partie software du logiciel et non pas de la machine parce qu'en réalité
un serveur, quand on parle de machine c'est une machine qui est connectée à un réseau
plus ou moins c'est tout.
Et donc là on va parler vraiment du côté logiciel.
Alors je vais pas rentrer très en profondeur de comment fonctionne le web etc.
Vous avez déjà un épisode sur comment fonctionne un navigateur web qui est plutôt exhaustif
en termes de toutes les étapes qu'il y a entre le moment où on tape dans son navigateur
web et même avant quand on lance son navigateur web jusqu'à ce que notre page s'affiche
avec le CSS, le JavaScript etc.
Donc je vous renvoie vers cet ancien épisode mais aujourd'hui je vais vous parler de simplement
deux technologies primaires.
Ok ? Ça va être le protocole HTTP dont vous avez déjà entendu parler et le langage HTML.
Le web il est construit sur ces deux technologies en plus évidemment du réseau internet et
des protocoles TCPIP mais ce n'est pas le sujet exact d'aujourd'hui.
Le web primaire on en a déjà parlé dans un épisode précédent comme je disais ça
fonctionne comme un utilisateur demande une ressource en envoyant une requête HTTP
gethttpsgoogle.com par exemple et reçoit en retour la ressource demandée sous la forme
d'un document HTML.
Et ben en définitive on appelle un serveur web n'importe quel logiciel capable de recevoir
et d'interpréter une requête HTTP et de retourner une réponse qui contiendra un document
HTML.
Alors évidemment aujourd'hui un serveur web est capable de plein de choses de renvoyer
des fichiers comme des images des vidéos du son, des données brutes, il peut y avoir
des fonctionnalités supplémentaires même dans plein de domaines mais il ne faut pas
confondre la fonction du serveur web et des scripts serveurs comme des scripts serveurs
écrits en PHP et la confusion souvent vient de là.
On utilise par exemple PHP pour scripter le comportement du serveur pour que les données
renvoyées soient dynamiques mais en fait la partie logicielle qui gère les requêtes
en 30 ça reste le serveur web, en serveur web on a Apache par exemple on a Nginx on
en a d'autres et qui ensuite ce serveur web les transfère à un processus PHP qui se
chargera d'exécuter les scripts voulus d'interpréter tout simplement ses requêtes et ensuite
de demander au serveur web on va dire de renvoyer tout simplement la réponse HTTP.
Alors en réalité il faut quelle langage pour développer un serveur web ? En fait on est en
capacité d'écrire un serveur web avec la majorité des langages de programmation pour ne pas dire
tous les langages de programmation. La seule contrainte c'est d'être en mesure d'ouvrir une
connexion d'écouter une connexion TCP IP donc le protocole sur lequel HTTP est basé est d'écouter
donc dessus. On peut même écrire un serveur web contrairement à ce que je disais avant on peut
écrire un serveur web entier entièrement PHP par exemple je vous mettrai un lien directement
dans les notes de l'épisode mais il y a quelqu'un qui a créé un article de blog pour tout simplement
montrer comment écrire un serveur web en PHP pur. Mais en général on privilégie plutôt des
langages banniveaux pour leur performance tout simplement c'est le cas d'Apache et
d'Enginex qui sont écrits en C mais on trouve alors après des serveurs écrits en Java comme
Tomcat on trouve des serveurs en go on trouve en plein de langages et on a même des serveurs web
qui sont écrits en JavaScript grâce à Node.js. Alors là je sais c'est toujours un petit peu
compliqué mais il faut il faut bien se rappeler la définition pure un serveur web il l'écoute sur
un port il est capable de traiter des requêtes HTTP et de renvoyer de renvoyer des réponses HTTP
dont du HTML parce que c'est la base du web et donc ça on peut le faire en Node.js en 5 à 6
lignes tout simplement on va utiliser la librairie fourni par Node qui s'appelle HTTP on va lui
demander de créer un petit serveur et dès qu'il reçoit une requête de renvoyer une réponse
prédéfinie et on a déjà un serveur web tout simplement vous avez le lien de l'article sur
lequel est basé cet épisode où vous aurez le petit bout de code pour écrire éventuellement un
serveur HTTP en Node.js mais en tout cas le message c'est juste de vous faire comprendre qu'il est
possible de monter un serveur web avec n'importe quel langage mais il faut pas confondre le serveur
web en lui même et les scripts côté serveur a noté que 80% des sites disponibles sur le web
sont émergés sur des serveurs Apache ou nginx et par exemple Node.js ça représente 0,1% des
sites web ça sera peut-être amené à changer dans les futurs années mais c'est actuellement
statistique alors je vais répondre à quelques questions qu'on peut se poser assez fréquemment
et qui vont pouvoir vous donner plus d'infos par rapport à ça alors est-ce qu'un serveur web doit
forcément être lié à internet ? Non en fait parler de serveur web c'est une déformation on devrait
plutôt parler de serveurs HTTP et la dénomination par exemple d'Apache c'est celle-là c'est
the Apache HTTP serve project ok donc si on traduit juste en français c'est le serveur le projet de
serveur HTTP Apache ok on parle même pas de serveur web c'est simplement une expression on va dire
qu'on utilise dans le vie tous les jours mais ça peut être l'ancien serveur web en lequel
sur votre machine bah ça reste un serveur web est-ce que un serveur qui renvoie toutes sortes
de fichiers après une requête HTTP c'est forcément un serveur web alors non on peut avoir
tout simplement un serveur de fichiers et des serveurs de fichiers comme Samba par exemple il y en a
plein d'autres en fait on attend d'un serveur web qu'il renvoie les fichiers avec les bonnes en
tête les types MIM qui permettront au navigateur donc au client web de les interpréter de la bonne
manière avec soit affiché ces fichiers dans au sein d'une page web soit les mettre en téléchargement
etc etc voilà on a la question aussi de des fois pourquoi est-ce qu'on parle d'un serveur
bah simplement parce que en anglais enfin même en français mais tout serve ça veut dire servir
et ça correspond pas simplement au serveur de café parce que serveur de café en anglais ça
se dit waiter donc c'est pas pareil mais c'est servir c'est il y a une corrélation entre le fait
bah qu'on envoie des demandes et qu'on doit attendre les retours de notre demande les unes
après les autres qui ne sont servi donc les unes après les autres voilà j'espère que cet épisode
vous arrêtez utile que vous aurez un petit peu éclairci le concept simplement de serveur web vous
voyez le concept en lui-même est très très simple et il faut simplement le décolorer les
entre serveur web et script serveur moi je vous donne rendez vous à la semaine prochaine pour
un nouvel épisode bonne journée
Episode suivant:
Les infos glanées
Code-Garage
Découvrons ensemble des sujets passionnants autour du métier de dev et de la programmation en général !
Tags
Code-Garage #19 - Qu'est-ce que la méthodologie agile ?