Une introduction à Apache

Si Apache vous a toujours semblé être une boîte noire, il est temps d'apprendre ce qui se passe dans les coulisses.!

Apache est le serveur Web le plus populaire disponible.

Le travail d'un serveur Web consiste essentiellement à accepter les demandes des clients et à envoyer des réponses à ces demandes. Un serveur Web obtient une URL, le convertit en un nom de fichier (pour les demandes statiques) et le renvoie sur Internet à partir du disque local via Internet, ou le convertit en un nom de programme (pour les demandes dynamiques), puis l'exécute. renvoie la sortie de ce programme par Internet à la partie qui fait la demande. Si, pour une raison quelconque, le serveur Web n'a pas été en mesure de traiter et d'achever la demande, il renvoie un message d'erreur. Le mot serveur Web peut désigner la machine (ordinateur / matériel) elle-même ou le logiciel qui reçoit les demandes et envoie les réponses..

Apache est le serveur Web le plus populaire (suivi de l’IIS de Microsoft) disponible. Les raisons de sa popularité, pour n'en nommer que quelques-unes, sont:

  1. Il est gratuit de télécharger et d'installer.
  2. Il est open source: le code source est visible par tout le monde, ce qui permet fondamentalement à quiconque (qui peut relever le défi) d’ajuster le code, de l’optimiser ainsi que de corriger les erreurs et les failles de sécurité. Les gens peuvent ajouter de nouvelles fonctionnalités et écrire de nouveaux modules.
  3. Cela répond à tous les besoins: Apache peut être utilisé pour de petits sites Web d'une ou deux pages, ou d'énormes sites Web de centaines et milliers de pages, servant des millions de visiteurs réguliers chaque mois. Il peut servir à la fois du contenu statique et dynamique.

Apache c'est quoi?

Les fonctionnalités inutiles ou inutiles peuvent facilement être supprimées.

Le serveur HTTP Apache est un logiciel (ou programme) qui s'exécute en arrière-plan sous un système d'exploitation approprié, prenant en charge le multi-tâche et fournissant des services aux autres applications qui s'y connectent, telles que les navigateurs Web des clients. Il a d'abord été développé pour fonctionner avec les systèmes d'exploitation Linux / Unix, mais a ensuite été adapté pour fonctionner sous d'autres systèmes, notamment Windows et Mac. Le binaire Apache exécuté sous UNIX est appelé HTTPd (abréviation de HTTP daemon), et sous win32 est appelé Apache.exe.

Installer Apache sur Linux nécessite quelques connaissances en programmation (bien que ce ne soit pas trop difficile). L'installation sur une plate-forme Windows est simple, vous pouvez l'exécuter via une interface utilisateur graphique..

Le noyau d'origine d'Apache est assez basique et contient un nombre limité de fonctionnalités. Sa puissance provient plutôt de la fonctionnalité ajoutée introduite par de nombreux modules écrits par des programmeurs et pouvant être installés pour étendre les capacités du serveur. Pour ajouter un nouveau module, il vous suffit de l'installer et de redémarrer le serveur Apache. Les fonctionnalités inutiles ou souhaitables peuvent facilement être supprimées, ce qui est considéré comme une bonne pratique car le serveur reste petit et léger, démarre plus rapidement, consomme moins de ressources système et de mémoire, et rend le serveur moins sujet aux failles de sécurité. Le serveur Apache prend également en charge des modules tiers, dont certains ont été ajoutés à Apache 2 en tant que fonctionnalités permanentes. Le serveur Apache s'intègre très facilement à d'autres applications open source, telles que PHP et MySQL, ce qui le rend encore plus puissant qu'il ne l'est déjà..

Un serveur Web dans sa forme la plus simple est un ordinateur doté d'un logiciel spécial et d'une connexion Internet lui permettant de se connecter à d'autres appareils..

Chaque appareil connecté à un réseau a une adresse IP par laquelle d’autres se connectent et communiquent avec lui. Cette adresse IP est en quelque sorte une adresse habituelle dont vous avez besoin dans la vie réelle pour appeler ou visiter l’un de vos contacts. S'ils n'avaient pas d'adresse, vous ne sauriez pas comment les appeler ou les joindre. Les adresses IP ont exactement le même objectif. Si un appareil n'en avait pas, les autres machines du même réseau ne sauraient pas comment l'atteindre.

Le serveur Apache propose un certain nombre de services que les clients peuvent utiliser. Ces services sont proposés à l’aide de divers protocoles via différents ports. Ils comprennent: le protocole de transfert hypertexte (HTTP), généralement via le port 80, le protocole de transfert de courrier simple (SMTP), généralement via le port 25, le service de nom de domaine (DNS) pour leurs adresses IP correspondantes, généralement via le port 53, et le protocole de transfert de fichier (FTP) pour le téléchargement et le téléchargement de fichiers, généralement via le port 21.


Comment fonctionne Apache

Le rôle principal d'Apache est de communiquer sur des réseaux, et il utilise le protocole TCP / IP (Transmission Control Protocol / Internet Protocol, qui permet aux périphériques possédant des adresses IP sur le même réseau de communiquer entre eux)..

Le protocole TCP / IP est un ensemble de règles qui définissent la manière dont les clients effectuent les demandes et dont les serveurs répondent, et déterminent le mode de transmission, de diffusion, de réception et d’accusé de réception des données..

Le serveur Apache est configuré pour exécuter des fichiers de configuration, dans lesquels des directives sont ajoutées pour contrôler son comportement. En mode inactif, Apache écoute les adresses IP identifiées dans son fichier de configuration (HTTPd.conf). Chaque fois qu'il reçoit une demande, il analyse les en-têtes, applique les règles spécifiées à cet effet dans le fichier de configuration et prend des mesures..

Mais un serveur peut héberger de nombreux sites Web, pas un seul. Cependant, pour le monde extérieur, ils semblent séparés les uns des autres. Pour y parvenir, chacun de ces sites Web doit se voir attribuer un nom différent, même si ceux-ci sont tous mappés sur le même ordinateur. Ceci est accompli en utilisant ce qu'on appelle des hôtes virtuels.

Les adresses IP étant difficiles à mémoriser, nous, visiteurs de sites spécifiques, saisissons généralement leurs noms de domaine respectifs dans la zone d'adresse URL de nos navigateurs. Le navigateur se connecte ensuite à un serveur DNS, qui convertit les noms de domaine en adresses IP. Le navigateur prend alors l'adresse IP renvoyée et s'y connecte. Le navigateur envoie également un Hôte en-tête avec la requête de sorte que, si le serveur héberge plusieurs sites, il saura lequel renvoyer.

Par exemple, saisir www.google.com dans le champ d'adresse de votre navigateur peut envoyer la demande suivante au serveur situé à cette adresse IP:

 Hôte GET / HTTP / 1.1: www.google.com

La première ligne contient plusieurs informations. Premièrement, il y a la méthode (dans ce cas, il s'agit d'un GET), l'URI, qui spécifie quelle page doit être récupérée ou quel programme doit être exécuté (dans ce cas, c'est le répertoire racine désigné par /), et enfin, il y a Version HTTP (qui est dans ce cas HTTP 1.1).

HTTP est un protocole de demande / réponse sans état.

HTTP est un protocole sans requête de demande / réponse. C'est un ensemble de règles qui régissent la communication entre un client et le serveur. Le client (généralement mais pas nécessairement un navigateur Web) fait une demande, le serveur renvoie une réponse et la communication est interrompue. Le serveur n'attend plus de communications, contrairement à d'autres protocoles qui restent en attente après la fin de la demande..

Si la demande aboutit, le serveur renvoie un code d'état 200 (ce qui signifie que la page est trouvée), des en-têtes de réponse, ainsi que les données demandées. L'en-tête de réponse d'un serveur Apache peut ressembler à ceci:

HTTP / 1.1 200 OK Date: Dim 10 Jun 2012 19:19:21 GMT Serveur: Apache Expire le: 11 Jan 1984 05:00:00 GMT Cache-Control: pas de cache, must-revalidate, max-age = 0 Pragma: no-cache Dernière modification: dimanche, 10 juin 2012 19:19:21 GMT Vary: accept-Encodage, type de contenu User-Agent: text / html; jeu de caractères = UTF-8 Content-Length: 7560

La première ligne de l'en-tête de réponse est la ligne d'état. Il contient la version HTTP et le code d'état. La date suit ensuite, suivie de quelques informations sur le serveur hôte et les données extraites. le Type de contenu l'en-tête permet au client de connaître le type de données récupérées afin qu'il sache le gérer. Contenu-Longueur indique au client la taille du corps de la réponse. Si la demande n'aboutit pas, le client obtiendrait un code d'erreur et un message, tel que l'en-tête de réponse suivant dans le cas d'une erreur de page introuvable:

HTTP / 1.1 404 Introuvable

Protocole TCP / IP

TCP / IP est en fait deux protocoles superposés.

TCP / IP est en réalité deux protocoles superposés. Le protocole IP est chargé de transférer les données transférées d’un point à un autre. Il prend les données à transférer entre les deux points, les divise en paquets plus petits, associe les adresses de source et de destination à chaque paquet et transfère les données..

TCP gère la partie qui comprend l’établissement de la connexion entre les deux parties, en s'assurant que les données arrivent à destination, en prenant en charge toute perte de données et en gérant la récupération des données..

Une fois le message reçu, le destinataire envoie un message. Reconnu (ACK) message à l'hôte émetteur si tout va bien, lui indiquant l'arrivée des données. En cas de problème, tel que la survenue d'une situation de perte de données, la destination envoie à la place un message NAK (non acquitté), notifiant le problème à l'hôte émetteur et l'informant de la nécessité de renvoyer le paquet de données..

Comme indiqué précédemment, Apache propose de nombreux services, auxquels les clients peuvent vouloir se connecter, utiliser ou en tirer profit. TCP gère chaque service de manière à ce qu’il soit accessible via un port particulier afin de différencier les différents services. De cette façon, cela garantit qu'une interface donnée (ou un hôte) peut offrir plusieurs services. Ainsi, lorsqu'un client se connecte à un hôte, il transmet le numéro de port avec l'adresse IP. Les navigateurs utilisent le protocole HTTP qui utilise par défaut le port 80, il n'est donc pas nécessaire de spécifier davantage.

L'image suivante est une capture d'écran de mon logiciel FTP (WinScp). Comme vous pouvez le constater, pour FTP mon serveur, je dois non seulement fournir l'adresse IP (ou taper le nom de domaine), mais également spécifier le numéro de port par lequel mon serveur fournit le service. Dans le cas de FTP, le numéro de port est 21. Dans le cas de SFTP (FTP sécurisé), le numéro de port est 22..

Sous UNIX, vous trouverez une liste des services proposés avec leurs numéros de port respectifs dans le fichier. / etc / services. La commande suivante affichera le contenu du fichier:

plus / etc / services

Ci-dessous, une capture d'écran montrant une partie du fichier. Comme vous pouvez le constater, les services sont répertoriés dans la première colonne, suivis du numéro de port auquel accéder et du nom de protocole utilisé par le service..

Sous Windows, le fichier s'appelle Services et se trouve sous C: \ WINNT \ system32 \ drivers \ etc \.


Inetd

Pour préserver les ressources système, UNIX gère nombre de ses services via le démon Internet..

Pour préserver les ressources système, UNIX gère un grand nombre de ses services via le démon internet (inetd), par opposition à un démon qui tourne constamment. le inetd est un super serveur qui écoute les différents ports et traite les demandes de connexion au fur et à mesure qu'il les reçoit en lançant une nouvelle copie du démon (programme) approprié. La nouvelle copie du programme puis à partir de là et travaille avec le client, et inted revient à l’écoute des ports du serveur en attente du traitement des nouvelles demandes des clients. Une fois la demande traitée et la communication terminée, le démon se ferme..


Structure générale

Comme mentionné précédemment, Apache peut être installé sur divers systèmes d'exploitation. Quelle que soit la plate-forme utilisée, un site Web hébergé aura généralement quatre répertoires principaux: htdocs, conf, les journaux, CGI-bin.

htdocs est le répertoire de documents du serveur Web Apache par défaut, ce qui signifie qu'il s'agit du répertoire public dont le contenu est généralement disponible pour les clients se connectant via le Web. Il contient toutes les pages statiques et le contenu dynamique à servir une fois qu'une demande HTTP les concernant est reçue. Étant donné que les fichiers et les sous-répertoires sous htdocs sont accessibles au public, le traitement correct des autorisations de fichiers est d’une importance capitale afin de ne pas compromettre la sécurité du serveur..

conf est le répertoire où se trouvent tous les fichiers de configuration du serveur. Les fichiers de configuration sont essentiellement des fichiers de texte brut dans lesquels des directives sont ajoutées pour contrôler le comportement et les fonctionnalités du serveur Web. Chaque directive est généralement placée sur une ligne distincte et la touche dièse (#) indique un commentaire. La ligne précédée est ignorée..

les journaux est le répertoire dans lequel les journaux du serveur sont conservés et comprend les journaux d'accès Apache et les journaux d'erreur. Apache HTTP Server fournit une variété de mécanismes différents pour la journalisation de tout ce qui s'y passe, de la demande initiale au processus de mappage d'URL, en passant par la résolution finale de la connexion, y compris les erreurs éventuellement survenues dans le processus. De plus, des modules tiers peuvent fournir des fonctionnalités de journalisation ou injecter des entrées dans les fichiers journaux existants. Des applications telles que les scripts PHP ou d'autres gestionnaires peuvent également envoyer des messages au journal des erreurs du serveur..

CGI-bin est le répertoire où les scripts CGI sont conservés. Le CGI (Common Gateway Interface) définit un moyen pour un serveur Web d'interagir avec des programmes externes générant du contenu, souvent appelés programmes CGI ou scripts CGI. Ce sont des programmes ou des scripts shell écrits pour être exécutés par Apache pour le compte de ses clients..

Il est important de noter que les noms de fichier et de répertoire décrits ci-dessus (ainsi que les emplacements) peuvent différer d'un serveur à l'autre en fonction de la version d'Apache installée et du système d'exploitation sous lequel il s'exécute. Les rôles restent les mêmes.


Conclusion

… Avec plus de la moitié des sites Web en ligne.

Apache est le serveur Web le plus populaire sur Internet depuis 1996, avec plus de la moitié des sites Web en ligne. Il a joué un rôle clé dans la conception et la transformation du Web dans son état actuel. Les raisons de son succès sont évidentes et, à en juger par ce qui se passe, il restera probablement en tête du moins pendant un bon bout de temps. Il s'agissait d'une session d'introduction à ce logiciel puissant et j'espère que cela vous a aidé à comprendre en quoi consiste ce formidable outil et son fonctionnement général..