Chapter 2. Apache, PHP et MySQL

Table of Contents

Les trois logiciels en bref
Architecture 3-tiers
Installation Linux
Installation Windows

Les trois logiciels en bref

Ces trois noms désignent des logiciels, installés sur le site web (machine serveur), ayant chacun des rôles différents. Examinons le rôle de chacun d'entre eux.

  • Apache est le serveur web. Son rôle est d'écouter les requêtes émises par les navigateurs (qui demandent des pages web), de chercher la page demandée et de la renvoyer.

  • PHP est un langage de script. Il permet, de décrire dans une page web, un affichage dynamique d'information, c'est-à-dire que le texte affiché peut dépendre de variables. Nous avons par exemple la possibilité d'afficher dans une page renvoyée au navigateur, la date du jour. Les instructions PHP sont généralement contenues dans des fichiers d'extension php. Ces fichiers peuvent contenir du HTML, entremêlé avec le code PHP. Quand un navigateur demande un tel fichier, le serveur Apache exécute les instructions PHP, qui produisent une page HTML. Une fois la page HTML générée, le serveur la renvoie au navigateur, qui ne voit qu'une page HTML.

  • MySQL est un système de gestion de base de données. Son rôle est de stocker les données, sous forme de tables, et de permettre la manipulation de ces données à travers le langage de requête SQL. Un exemple de requête peut être par exemple (exprimé en francais) : “Lister les adresses des clients (à partir de la table client) qui ont acheté cette année pour plus de 1000 euros (à partir de la table facturation)”. En SQL, cette requête s'écrirait par exemple de la manière suivante : select (nom,adresse) from (client,facturation) where (client.numero = facturation.numero and facturation.total>1000) où le champ numero est la clé primaire de chacune des tables, et représente le numéro de client.

    PHP est capable de passer à MySQL de telles requêtes à travers les fonctions de préfixe mysql_ (PHP possède également des fonctions pour dialoguer avec d'autres systèmes de gestion de base de données). C'est une raison du succès du couple PHP+MySQL dans la mise en place de sites webs.

L'utilisation des trois logiciels n'est nécessaire que lorsqu'on veut afficher au visiteur des informations provenant de la base de données. Cependant, cette configuration est fréquement utilisée car elle correspond à beaucoup de besoins. Un magasin voulant afficher à ses clients la liste de ses produits en stock, un forum de discussions permettant à des internautes de lire, et rechercher des messages, sont autant d'exemples d'application nécessitant la manipulation (enregistrement, manipulation, affichage) de données à travers le réseau.

Architecture 3-tiers

La configuration que l'on met ici en place est souvent nommée "3-tiers" (3-tier en anglais) car on peut décomposer fonctionnellement notre application en 3 couches distinctes.

  • couche présentation: c'est la partie de l'application visible par les utilisateurs (on parle d'interface utilisateur). Dans notre cas, elle se présentera sous la forme de pages HTML, composée de formulaires, bouttons, etc. Un exemple concret peut être l'interface de recherche de vols sur un site de réservation d'une compagnie aérienne: la couche de présentation définit le formulaire de recherche et la présentation des résultats de la recherche.

    Figure 2.1. Exemple d'interface pour une recherche de vols

    Exemple d'interface pour une recherche de vols


  • couche métier: c'est la "logique" de l'application elle-même, c'est-à-dire les algorithmes implémentés pour remplir les fonctions spécifiées. Dans l'exemple de la fonction de recherche de vols, l'application prendra les données saisies par l'utilisateur dans le formulaire, pourra vérifier la cohérence des informations demandées, mettre cette requête dans un format adéquat, et transmettre la requête au gestionnaire des données (couche accès aux données). Si l'utilisateur attend des données en résultat, l'application procède en général à un traitement avant de les passer à la couche présentation.

  • couche accès aux données: c'est la partie qui gère les données. La façon dont elle organise, manipule, stocke, etc, les données est transparente aux applications ou utilsiateurs externes, toutes ces opérations étant internes à la couche d'accès aux données. Cette couche est souvent implantée avec un sytème de gestion de base de données. L'interface proposée est souvent SQL.

Remarquons bien que le choix de Apache+PHP+MySQL n'en est que partie une multitude d'autres possibles. (Par exemple Java/RMI+Base de données).

Figure 2.2. Architecture 3-tiers avec Apache+PHP+MySQL

Architecture 3-tiers avec Apache+PHP+MySQL


Installation Linux

L'installation sur un système Linux de ces trois composants est plutôt simple, étant donné que ces logiciels sont généralement disponibles d'office dans les distributions. De plus, on vérifiera que la configuration de PHP permet bien d'accéder aux fonctions MySQL : visualiser le fichier /etc/php.ini et vérifier que la ligne :

extension = mysql.so

est décommentée (il ne doit pas y avoir de points virgule en début de ligne).

Bien sûr, il faut aussi vérifier que les services Apache et MySQL sont actifs. Dans le doute démarrez les (en tant que rootou en sudo). On peut utiliser la commande apachectl, souvent placée dans /usr/sbin/. Cette commande propose comme option start, restart, graceful, graceful-stop, ou stop, et est toujours disponible avec Apache. Pour lancer:

  bash # apachectl start

Alternativement, on peut utiliser les scripts de démarrage enrobant cette commande. Ils varient en fonction de la distribution. Sur Mandriva/Redhat/Fedora, on peut utiliser:

  bash # service httpd start
  Starting httpd:                                            [  OK  ]
  bash # service mysql start
  Starting mysqld daemon with databases from /var/lib/mysql
  bash # 

Installation Windows

L'installation sur les systèmes Windows de ces trois logiciels est aussi très populaire. A tel point que les trois logiciels sont parfois proposés en un seul paquet. Deux projets: EasyPHP et WAMP livrent une installation "clés-en-mains" de Apache, PHP, MySQL et de phpMyAdmin en prime. La procédure d'installation de ce paquet est très simple. Reportez vous à la section téléchargement et installation de ce site ; vous devriez pouvoir avoir un environnement fonctionnel très rapidement.