Les serveurs de développement, le protocole HTTP et les codes d'erreur

2. Serveurs et protocoles

Les serveurs

Pour développer et faire vivre un projet sur le Web, plusieurs ordinateurs seront utilisés.

D'abord les postes de travail de chacun des équipiers dont l'intégratrice ou intégrateur qui a besoin de prévisualiser son travail dans un navigateur sous le protocole http ou https. Ensuite, il faut considérer les différents serveurs.

Le serveur d'archivage / de versionnage

C'est le serveur sur lequel chaque équipier doit sauvegarder son travail. En fait, il doit sauvegarder toutes les étapes d'avancement de son travail… on parle donc de serveur de versionnage comme : GitHub.

Le système de versionnage avec GIT permet de conserver l'historique d'un projet, donc toutes ses étapes d'élaboration. Conçu pour la gestion des codes de programmation il est utile pour l'ensemble d'un projet et peut être utiliser sur tous les systèmes d'opération : Mac, Windows ou Linux. Il facilite la collaboration avec une équipe ou le monde entier !

Le serveur de développement

Local comme avec LiveServer dans VSCode ou externe comme Timunix3

Le serveur de développement local

Les éditeurs de code et les environnements de développement (IDE comme PHPStorm) génèrent un serveur local qui utilise le protocole http plutôt que file.

Observer la différence d'URL si vous glissez un fichier html dans la fenêtre d'un navigateur :

file:///C:/Users/usager/Documents/Sites/exercice_1-1/index.html

Tandis que si vous utilisez l'extension Live Server de VSCode (bouton GoLive) :

http://127.0.0.1:5500/index.html

Ou le mode Aperçu en direct de Brackets :

http://127.0.0.1:58179/index.html

En effet, l'adresse IP 127.0.0.1 est le localhost de votre propre ordinateur.

Par ailleurs, si on souhaite développer localement un site Web en PHP, on devra d'abord configurer le poste de travail en client-serveur. Cette configuration implique l'activation du langage serveur PHP et d'un SGBD comme MySQL. Le plus simple est d'utiliser un outil comme MAMP qui est au programme de la session 3.

Le serveur de développement externe

Un serveur de développement externe comme timunix3 est utilisé pour le rodage d'un projet ou en contexte pédagogique, pour la mise en ligne d'exercices et de projets.

Le serveur de production ou hébergeur

Il est souhaitable que les environnements de développement aient les mêmes configurations et versions d'outils et de langages que l'hébergeur. Il faut donc vérifier les configurations de chaque environnement pour prévenir les difficultés de migration et prévoir un temps de rodage avant de connecter le nom de domaine du projet à son hébergement.

Une stratégie souvent adoptée dans les miliers professionnels est d'installer sur le poste de travail une boîte (box) préconfigurée avec la même pile (stack) que l'hébergeur. Cela se fait avec des outils comme Virtual Box, Vagrant et Docker.

Dans le cours Intégration II, nous expérimenterons un hébergeur gratuit : GitHub Pages.

Le protocole HTTP

Source : Wikipedia

HTTP a été inventé par Tim Berners-Lee avec les adresses Web (URL : Uniform Ressource Locator) et le langage HTML pour créer le World Wide Web.

À cette époque, le File Transfer Protocol (FTP) était déjà disponible pour transférer des fichiers, mais il ne supportait pas la notion de format de données telle qu'introduite par Multipurpose Internet Mail Extensions (MIME).

Dans le protocole HTTP, une méthode est une commande spécifiant un type de requête, c'est-à-dire qu'elle demande au serveur d'effectuer une action. En général l'action concerne une ressource identifiée par l'URL qui suit le nom de la méthode.

Dans l'illustration ci-contre, une requête GET est envoyée pour récupérer la page d'accueil du site web www.perdu.com :

GET / HTTP/1.1
Host: www.perdu.com

Les codes d'erreur de HTTP

Remarquez dans l'illustration précédente le code qui apparaît en première ligne de la réponse du serveur : headers.

HTTP / 1.1 200 OK

Le code HTTP permet de déterminer le résultat d'une requête ou d'indiquer une erreur au client. Quelques codes parmi les plus courants :

Succès

Code Signification
200 Succès de la requête (OK)

Redirections

Code Signification
301 Redirection permanente (Moved permanently)
304 Document non modifié depuis la dernière requête (Not Modified)

Erreurs du client Web

Code Signification
401 Utilisateur non authentifié (Unauthorized)
403 Accès refusé (Forbidden)
404 Page non trouvée (Not Found)

Erreurs du serveur

Code Signification
500 Erreur interne du serveur (Internal Server Error)
502 Mauvaise passerelle (Bad Gateway)
504 Le serveur n'a pas répondu (Gateway Time-out)

D'autres codes sont plus rares ou pas encore définis.

Que penser du code 418 ? https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP

L'erreur 404

C'est une bonne pratique de fournir une page d'erreur 404 dont le design est adapté au site Web plutôt que de laisser survenir le message d'erreur par défaut. Quelques exemples :

L'erreur 403

Cette erreur est généralement reliée à un problème de permissions.

Les permissions de fichiers idéales dans un répertoire Web sont :

  • Fichiers : 644 ou 640
  • Dossiers : 755 ou 750

On peut changer les permissions en SSH avec l'instruction chmod mais on peut aussi le faire de manière plus conviviale directement dans l'outil de mise en ligne ftp, donc dans Filezilla ou dans l'interface de PHPStorm.

En savoir plus sur les permissions :

Consulter les notes du cours de Profession intégrateur dans le document « notes-annexe-professionIntegrateur.pdf »