Ouvrage "WordPress, Joomla, Drupal"

Extraits
Présentation des fondamentaux
Approfondissement des volets théorique et technique

WordPress, Joomla et Drupal sont des outils qui, en tant que logiciels, fonctionnent dans un environnement bien déterminé. La plateforme d'hébergement la plus typique met en jeu :

  • Le serveur de page Web Apache.
  • L'interpréteur PHP et le serveur de base de données MySQL.
  • Le système d'exploitation Linux.

Sommaire :

  1. Serveur de page Web Apache
  2. Interpréteur [Zend-]PHP et serveur de base de données MySQL
  3. Système d'exploitation Linux

Serveur de page Web Apache

Le serveur Apache est un composant logiciel dont la principale fonction est de délivrer les pages Web visées par les utilisateurs. Il le fera en faisant appel aux ressources dont il dispose, en l’occurrence un CMS, selon un processus qui se divise en quatre étapes :

  1. Réceptionner les requêtes que les utilisateurs déclenchent.
  2. Transmettre le contenu des requêtes au CMS.
  3. Réceptionner les pages Web générées par le CMS.
  4. Retourner les pages Web au logiciel client des utilisateurs.

[Étape 1] Remarque. — Les utilisateurs déclencheront leurs requêtes soit en cliquant sur un lien (c'est ce qu'ils font en général) soit en saisissant manuellement l'adresse de la page qu'il souhaite consulter.

[Étape 2] Remarque. — En réalité, le contenu des requêtes est d'abord transmis au composant logiciel [Zend-]PHP qui, ensuite, mettra ce contenu à la disposition du CMS.

Remarque. — C'est sur cette base que [Zend-]PHP sera à nouveau sollicité, par le CMS cette fois-ci, pour interroger le serveur de base de données MySQL. Celui-là ([Zend-]PHP) permettant ainsi à celui-ci (CMS) de récupérer le contenu des pages Web qu'il aura à générer.

[Étape 3] Remarque. — Le CMS ne transmet pas, directement, les pages Web qu'il aura générées au serveur. Il les transmet d'abord à [Zend-]PHP qui, ensuite, les transmettra au serveur.

Interpréteur [Zend-]PHP et serveur de base de données MySQL

L'interpréteur [Zend-]PHP et le serveur MySQL sont des composants logiciels. On retiendra qu'ils font tous deux l'objet d'un découpage en trois couches et que l'une de ces trois couches sert en particulier à traduire, d'un côté, le code PHP, de l'autre, les requêtes SQL.

Pourquoi traduire ?

Pour saisir la notion de plateforme et la fonction des briques sous-jacentes, notamment en termes de traduction, il faut intégrer les trois principes suivants :

Codage de l'information en binaire. Dans le domaine de l'informatique, toute information — qu'il s'agisse de données non numériques [les caractères], de données numériques ou d'instructions (l'addition de deux nombres, par exemple) — fait l'objet d'un codage en binaire (exemple : en binaire, le nombre 65 s’écrit 01000001).

Traduction du code source en code machine. Les scripts, les programmes et les requêtes, qui définissent le code source des logiciels, à partir de langages dits de haut niveau (HTML, CSS, JavaScript, etc.), ne peuvent être exécutés — c'est-à-dire produire un résultat tangible — que s’ils font l’objet d’une traduction en code machine. Un code machine qui sera propre au modèle d'ordinateur utilisé.

Plusieurs langages, autant de logiciels traducteurs. Ayant à considérer plusieurs langages de haut niveau, on aura donc à faire appel à autant de logiciels de traduction dont la fonction sera précisément de traduire les scripts, les programmes et les requêtes générés à partir ces langages [de haut niveau]. (Les logiciels de traduction font appel à des langages de plus bas niveau, le C par exemple.)

Attention, contrairement à [Zend-]PHP et MySQL, le serveur de page Web Apache n'est pas un traducteur. Ce sont les logiciels clients (exemple : navigateur Chrome) qui auront à assumer la traduction des scripts des pages Web (HTML, CSS, Javascript).

What Is PHP? and What Is Zend?

Together they [PHP et Zend] form the complete PHP package. [PHP package is broken into] three parts:

1. The interface part [échanges de données avec applications externes (serveurs)].

2. The functionality part [fonctionnalités de base et extensions].

[L'extension « msqli » est l'extension que l'on utilisera pour interroger le serveur de base de données MySQL. Autre exemple, l'extension « zip » donnera la possibilité de compresser des archives et, inversement, d'accéder aux fichiers et dossiers qui s'y trouvent.]

3. The interpreter part [analyse-traduction-exécution du code].

PHP. PHP takes parts 1 and 2. PHP contains all the modules that actually create the language's outstanding capabilities.

Zend. Zend takes part 3 completely and a bit of part 2. Zend itself really forms only the language core, implementing PHP at its very basics with some predefined functions.

Source : « Zend API: Hacking the Core of PHP », php.net, http://php.net/manual/fa/internals2.ze1.zendapi.php

MySQL Architecture and Layers

MySQL architecture is broken into three layers [parts] basically which can be defined by:

1. Application Layer [échange de données avec applications (externes) clientes du serveur MySQL].

2. Logical Layer [analyse-traduction-définition du plan d'exécution des requêtes].

3. Physical Layer [enregistrement/extraction des données].

Application Layer. The application layer [part] [contains] all services needed for connection handling, authentification and security.

Logical Layer. The logical layer […] is divided into subsystems [… that] work together to process the requests.

Physical Layer. The physical layer contains the storage engines […] responsible for storing and retrieving all data stored in MySQL.

Source : « MySQL Architecture and Layers », qfx2.com, https://qxf2.com/blog/mysql-architecture-and-layers

Système d'exploitation Linux

Pour compléter le commentaire sur l’architecture présentée, il ne reste plus qu’à considérer le système d’exploitation, en l’occurrence Linux, dont la fonction sera de superviser l'accès aux ressources matérielles de la machine hôte (processeur et espace mémoire).

À retenir

Le système d’exploitation Linux, le serveur de page Web Apache, le composant [Zend-]PHP et le serveur de bases de données MySQL, définissent une architecture, concrète, qui s’appelle LAMP.

LAMP, et notamment AMP (Apache/MySQL/PHP Package), sont des standards que l'on retrouve chez tous les hébergeurs — gratuitement, car il s'agit de technologies open source.