Serveur LAMP: solution bon marché pour un site dynamique

On différencie deux grands types de sites Web : les sites statiques et les sites dynamiques. Les sites statiques présentent des documents HTML hébergés sur des serveurs Web, dont les contenus restent inchangés et que les utilisateurs peuvent à tout moment charger. Le contenu d’une page Web dynamique va au contraire varier selon les différentes caractéristiques à la demande des utilisateurs. Un site dynamique a l’avantage de proposer des actualisations régulières faciles à intégrer et est très apprécié pour les sites d’informations, de prévisions météo ou encore ceux qui publient les cours de la bourse par exemple. Les sites Web dynamiques nécessitent cependant une infrastructure particulière, composée d’un système d’exploitation, d’un serveur Web, d’un système de gestion de base de données et d’un logiciel de langage de script. Un serveur dit LAMP réunit justement ces quatre composants.

Qu’est-ce qu’un serveur LAMP ?

L’acronyme LAMP a été construit avec les premières lettres de quatre logiciels : Linux, Apache, MySQL et PHP. Grâce à cet ensemble de logiciels, il est possible de créer et d’héberger un site Web dynamique. Ces différents composants constituent cette combinaison bien connue par les utilisateurs, appelée LAMP.

En tant que système d’exploitation, Linux constitue la base de cet ensemble, sur laquelle opère le serveur Web Apache. Ce dernier ne peut pas interpréter de contenus dynamiques car c’est là le rôle du langage de script PHP. Pour cette raison, il va envoyer le code source correspondant contenant les informations sur les actions des visiteurs du site au serveur PHP. Ce dernier va accéder à la base de données MySQL.  Le résultat va être renvoyé au serveur Apache pour apparaître ensuite sur le navigateur Internet de ces visiteurs. 

Les serveurs LAMP sont très appréciés car ils sont très abordables et disponibles rapidement. Cependant, ces différents composants peuvent être remplacés par d’autres logiciels comparables. Les systèmes d’exploitation Windows (WAMP pour Windows, Apache, MySQL et PHP) et Mac OS X (MAMP) peuvent par exemple remplacer l’utilisation de Linux.  Le serveur Web nginx est aussi souvent utilisé à la place d’Apache. Parmi les gestionnaires de base de données on trouve le plus souvent MySQL et MariaDB.  En ce qui concerne les logiciels de scripts on peut citer Perl, Ruby ou encore Python.

Comment installer un serveur LAMP ?

Avant de commencer l’installation d’un serveur LAMP, il convient de clarifier certaines choses en amont. Tout d’abord, il est important que votre matériel ait la capacité nécessaire pour l’installation et l’utilisation de l’ensemble des logiciels LAMP. Un système LAMP n’exige pas les meilleures performances du marché. Toutefois, un système très performant pourrait être nécessaire en fonction du contenu qui doit être livré aux visiteurs. Les projets à forte puissance de calcul sont par exemple les espaces de stockage de données en ligne ou les services de streaming. De plus, le trafic estimé ou la circulation de données calculée doivent y être intégrés.

Si le matériel est suffisamment puissant, il faut par la suite se décider pour l’une des nombreuses distributions Linux existantes. Si le choix se fait par exemple entre Red Hat, openSUSE, Debian, Ubuntu ou CentOS, on dépend dans tous les cas d’un savoir-faire Linux plus général pour l’utilisation des programmes du serveur LAMP.

Les instructions qui suivent décrivent l’installation des quatre composants d’un serveur LAMP Ubuntu.

Etape 1 : le système d‘exploitation

Ubuntu, comme beaucoup d’autres variantes Linux, est un logiciel open source gratuit et facilement disponible sur le Web. Les étapes ci-dessous vous permettront d’installer ce système d’exploitation basé sur Debian :

  1. Télécharger ou acheter une édition du serveur Ubuntu sur la page d’Ubuntu. Il faut ensuite enregistrer ou graver le fichier ISO respectivement sur une clé USB ou sur un CD ;
  2. Lancer le système depuis le CD ou la clé USB ;
  3. Choisir la langue puis démarrer l’installation du serveur ;
  4. Indiquer dans les options la langue, le type de clavier, le fuseau horaire, les configurations du réseau, un nom d’hôte et un mot de passe ;
  5. Configurer le disque dur ;
  6. Le programme d’installation scanne ensuite le CD à la recherche de paquets de logiciels et d’options de mises à jour. Au cours de cette étape, veillez à ce qu’aucune mise à jour automatique ne soit installée ;
  7. Enfin, le système doit être redémarré et la commande suivante doit être saisie dans la ligne de commandes :
sudo apt-get update

L’installation d’Ubuntu est maintenant terminée et les autres composants de l’ensemble LAMP sont prêts à être configurés.

Etape 2 : le serveur Web

Si l’installation du serveur Web Apache n’a pas encore été établie lors de l’installation d’Ubuntu, il peut à tout moment être mis en place en renseignant la commande suivante :

sudo apt-get install apache2

Vérifiez ensuite le succès de l’installation d’Apache 2 (« 2 » pour signifier que la version est actuelle), dans lequel on va entrer depuis le navigateur la page Web http://localhost/ ou bien l’IP de l’hôte.  Le message « It works! » apparaît et la configuration peut alors commencer. Les adaptations suivantes doivent être prises en compte :

  1. Certes, KeepAlive améliore la vitesse du site Web pour l’utilisateur, mais accapare aussi une quantité importante de mémoire vive. C’est pourquoi vous devriez si nécessaire sélectionner dans le fichier principal de configuration /etc/apache2/apache2.conf « KeepAlive Off ».
  2. Le module multi-processus (MPM) d’Apache le plus courant est Event tandis que PHP utilise le module prefork. On peut trouver le fichier mpm_prefork dans /etc/apache2/mods-available et les données doivent être adaptées comme indiqué ci-dessous :
<IfModule mpm_prefork_module>
StartServers              2
MinSpareServers           6
MaxSpareServers           12
MaxRequestWorkers         39
MaxConnectionsPerChild    3000
</IfModule>
  1. Dans un second temps, il faut éteindre le module Event et allumer le module Prefork.
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
  1. Pour finir, le serveur doit être redémarré :
sudo service apache2 restart

Etape 3 : la base de données

Le système de gestion de base de données MySQL opère en tant que serveur sur lequel plusieurs bases de données peuvent être créées. Pour chaque base de données, divers tableaux sont ajustés. Un ou plusieurs clients envoient des requêtes au serveur MySQL qui s’installe grâce à la commande suivante :

sudo apt-get install mysql-server

Il est possible d’assigner un mot de passe à l’utilisateur root MySQL pendant l’installation, ce qui est fortement recommandé. L’étape suivante consiste à maximiser la sécurité de MySQL. Le programme MySQL Secure propose des options permettant de modifier votre mot de passe, supprimer des comptes utilisateurs anonymes, des bases de données test ou encore tous les identifiants racine, qui ne passent pas par l’hébergeur local. La commande d’installation est la suivante :

sudo mysql_secure_installation

Pour créer une base de données, on entre le code suivant dans MySQL :

mysql -u root -p

Ensuite, une base de données incluant des utilisateurs ayant des droits d’accès peut être créée :

create database webdata;
grant all on webdata.* to « utilisateur » identified by « mot de passe »;

Etape 4 : le logiciel de script

La dernière étape de l’installation ajoute à cet ensemble LAMP le langage de script PHP et une de ses extensions: PEAR (PHP Extension and Application Repository), une collection de bibliothèques de fonctions PHP. L’installation de cette dernière s’effectue avec la commande suivante :

sudo apt-get install php5 php-pear

L’installation d’un outil de compatibilité de MySQL avec PHP5 en vaut la peine et s’effectue par cette commande :

sudo apt-get install php5-mysql

Une fois l’installation terminée, il faut modifier le fichier de configuration PHP, se trouvant dans /etc/php5/apache2/php.ini, de la manière suivante :

error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
error_log = /var/log/php/error.log
max_input_time = 30

Grâce à cela, l’utilisateur recevra des rapports d’erreur pertinents et bénéficiera d’une meilleure performance. De plus, il est possible d’enregistrer ces messages d’erreur dans error.log. Enfin, il ne reste plus qu’à créer le répertoire log pour PHP et donner les droits de propriétés au serveur Apache :

sudo mkdir /var/log/php
sudo chown www-data /var/log/php

Relancer Apache permettra la finalisation de l’installation de l’ensemble LAMP:

sudo service apache2 reload

Ensemble LAMP : logiciel open source pour tout projet Web

L’avantage des logiciels open source ne réside pas seulement dans le fait qu’ils soient gratuits dans la majorité des cas. Un autre plus est la possibilité pour n’importe qui d’accéder au code de développement. Ainsi, n’importe quel utilisateur peut « bricoler » ce logiciel et développer sa propre extension. Au contraire des logiciels propriétaires, qui proposent des services de support souvent payants, l’absence d’assistance technique ne pose pas de problèmes pour un utilisateur expérimenté dans la mesure où la communauté des logiciels open source facilite grandement leur utilisation.

Installer un serveur LAMP en vaut la peine, non seulement en raison de la flexibilité des logiciels et mais aussi de leur faible prix, si ce n’est leur gratuité. Un avantage de taille réside dans la très bonne compatibilité des différents composants de l’ensemble LAMP et permettant de très bons résultats.  L’utilisation d’un serveur LAMP permet aussi bien l’exploitation d’un site statique que d’un site dynamique. Le logiciel Wiki MediaWiki, avec lequel est exploité Wikipedia, est par exemple développé sur un système LAMP.