Compte-rendu LAMP

Marc Falzon


Table des matières
1. Introduction
2. Installation du système d'exploitation (SE) GNU/Linux.
3. Installation des différents composants du serveur web.
3.1. Apache
3.2. MySQL
3.3. PHP
3.3.1. Décompression de l'archive récupérée :
3.3.2. Configuration des options de compilation et d'installation du logiciel :
3.3.3. Compilation et installation :
3.4. PHPMyAdmin
4. Essai du serveur complet.
5. Annexes.

1. Introduction

Au cours de cette A.P. qui s'est étalée sur trois séances j'ai mis en place un serveur web complet et accessible depuis tout l'établissement, composé de quatre éléments fondamentaux que voici :

[ L ] Linux : C'est le système d'exploitation que j'ai choisi pour le serveur. Se rapprochant du système UNIX, il est l'un des OS les plus puissants et fiables au monde. Je me suis servi d'une distribution Debian/GNU Linux "Woody" 3.0.

[ A ] Apache : Le serveur web retenu. Probablement le serveur le plus utilisé sur Internet en raison de sa stabilité et de sa sécurité. La combinaison Linux+Apache fournit une excellente base de départ pour un serveur tel que le notre ; la version utilisée était la 1.3.2.

[ M ] MySQL : Le serveur de bases de données installé. Peu gourmand en ressources système et pourtant très puissant dans une utilisation "normale", il est idéal pour le serveur mis en place. La version utilisée est la 3.23.

[ P ] PHP : "_Hypertext _Pre-_Processor", ou "_Personal _Home_ Pages". Le language SSI (_Server-_Side _Include) le plus utilisé pour la conception de sites web dynamiques car très simple d'emploi et d'une grande modularité. Se combine très bien avec le serveur de bases de données MySQL et le serveur web Apache. Version utilisée : 4.3.3.

Comme expliqué plus haut, les quatre modules qui forment le serveur web -que nous appellerons LAMP- ont, chacun dans leur domaine, une garantie de sécurité et de stabilité.


2. Installation du système d'exploitation (SE) GNU/Linux.

L'ordinateur sur lequel le serveur fut installé avait la configuration suivante :

La distribution utilisée pour ce serveur était une Debian "Woody" 3.0, réputée pour sa stabilité. L'installation s'est déroulée en mode console, de même que sa configuration car je n'ai pas jugé utile d'installer le serveur graphique X pour l'utilisation que nous en avons fait (de plus la quantité de mémoire vive était relativement limitée, ce qui aurait fait "ramer" l'ordinateur). Il m'a fallut partitionner le disque dur en fonction des différents points de montage que le système devait contenir, par exemple une partition /boot dédiée pour contenir le noyau Linux et les quelques fichiers de configuration du chargeur de boot (LiLo), une pour /var ou encore /usr et /tmp. Lors de l'installation du SE je n'ai inclu que les modules nécessaires au bon fonctionnement du réseau (c-a-d uniquement le support pour la carte 3Com et la gestion de l'Ethernet par le noyau).

Une fois la base du système installée, j'ai configuré le SE de manière à ce qu'il démarre le minimum de services, afin de ne pas saturer la mémoire du serveur. L'utilitaire d'installation de Debian a détecté la présence d'un serveur DHCP sur le réseau, qui a donc attribué automatiquement une adresse IP au serveur (192.168.1.83) et a configuré l'accès à Internet depuis cet ordinateur. La distribution Debian a une particularité : son système de paquets, et plus particulièrement l'utilitaire (apt-get) qui permet de récupérer les dernières versions (stables ou non) de tous les logiciels, librairies et autres plugins disponibles pour GNU/Linux depuis Internet...


3. Installation des différents composants du serveur web.

3.1. Apache

L'installation du serveur web Apache s'est déroulée sans problèmes ; j'ai récupéré une version stable de la série 1.x (la version 2.x n'étant pas encore très au point) grâce à apt-get, puis je l'ai installé et configuré pour qu'il gère l'extension PHP (cf 2.3). J'ai également modifié les scripts de démarrage, de redémarrage et d'extinction du système (contenus dans /etc : respectivement rc3.d/, rc6.d/ et rc0.d/) pour que ce dernier les lance et les éteigne lors des-dites phases.


3.2. MySQL

Pour installer ce serveur de base de données, j'ai procédé exactement de la même manière que pour le serveur web, à savoir récupérer le paquet en utilisant apt-get, puis en l'installant et en modifiant les mêmes scripts que pour Apache. Le logiciel étant déjà compilé dans le paquet, il n'a pas nécessité de configuration particulière sinon d'attribuer au compte administrateur un mot de passe, puisque notre utilisation se sera limitée à faire des tests de bon fonctionnement du serveur dans son ensemble et pas de faire de l'hébergement massif de sites web...


3.3. PHP

Contrairement aux deux précédents logiciels, je n'ai pas installé PHP en le récupérant déjà compilé avec apt-get mais en téléchargeant directement les sources de l'interpréteur sur son site officel, puis en le compilant manuellement :


3.3.1. Décompression de l'archive récupérée :

$ tar xvjf php-4.3.3.tar.bz2

$ cd php-4.3.3/

En entrant les commandes ci-dessus, j'ai configuré PHP pour qu'il intègre le support des bases de données MySQL et qu'il soit compilé en tant que module pour Apache et non en CGI (_Common _Gateway _Interface) ; enfin j'ai lancé sa compilation puis son installation. Pour que le système soit totalement opérationnel j'ai dû modifier deux fichiers de configuration :

/etc/php4/apache/php.ini

Ce fichier contient les directives de configuration pour le langage PHP : j'ai y ai activé la directive "safe-mode" pour restreindre la portée d'action des scripts à leur répertoire racine (j'ai fixé la racine du serveur web dans /var/www/) ; de cette façon on ne peut accéder aux fichiers "sensibles" comme /etc/passwd par l'intermédiaire d'un script PHP.

/etc/apache/httpd.conf

Ce fichier a le même rôle que le précédent, mais il concerne le serveur web Apache. J'y ai ajouté le montage du module libphp4.so pour que le serveur utilise l'interpréteur PHP, et j'ai aussi ajouté la reconnaissance des extensions .php et .php3, sinon Apache n'interpreterait pas ces fichiers et les considèrerait comme des fichiers à télécharger !


3.4. PHPMyAdmin

J'ai installé ce dernier logiciel uniquement dans un but d'ergonomie. PHPMyAdmin est une interface web entièrement codée en PHP qui permet d'administrer son serveur de bases de données à partir de son navigateur, que ce soit avec les outils d'administration graphique ou alors simplement en entrant des commandes SQL (_Structured _Query _Language, le langage utilisé par les bases de données). L'utilitaire se composant d'un arsenal de scripts PHP fonctionnant de concert, l'archive qui les contient a dû être décompressée à la racine du serveur pour pouvoir être interprétés par PHP ; l'ennui est que si quelqu'un de mal intentionné (ou de très maladroit) pouvait accéder à l'administration des bases et il aurait pu y mettre le chaos. J'ai donc placé dans ce répertoire un fichier .htaccess qui restreint l'accès à ce répertoire à la seule personne connaissant le mot de passe (l'administrateur = moi) ; ce fichier contient des directives de configuration pour Apache comme en contient httpd.conf, à la seule différence que les options contenues dans un .htaccess ne s'appliquent qu'au répertoire où se trouve ce fichier (ce n'est qu'en partie vrai, car on peut aussi étendre la portée de ce fichier à tout le serveur web). J'ai aussi placé à la racine du serveur un fichier .pass_admin qui contient le mot de passé (crypté) de l'adminitrateur, auquel fait référence le-dit .htaccess. À présent, lorsqu'un visiteur tente d'accéder au répertoire contenant PHPMyAdmin il apparaît une boîte de dialogue demandant un login et un mot de passe...

Note(Note : j'ai dû une nouvelle fois modifier le httpd.confpour changer d'état la directive AllowOverride, car fixée à "None" par défaut le fichier .htaccessn'avait pas d'effet ; en la passant à "All" et en redémarrant le serveur tout est rentré dans l'ordre.)

4. Essai du serveur complet.

Une fois tous les réglages et optimisations effectués, j'ai essayé le serveur à partir de plusieurs postes de la salle en dirigeant un navigateur vers "http://192.168.1.83", et le résultat fut concluant : le serveur fonctione parfaitement, des scripts PHP peuvent être exécutés et le serveur de bases de données est lui aussi opérationnel. De plus l'accès à PHPMyAdmin est bien restreint à l'adminitrateur.


5. Annexes.