Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Reseau-web-Apache PHP MySQL

Installation de LAMP : GNU/Linux, Apache, PHP, MySQL

Installation Apache, PHP, MySQL

Par Jean-Marc Lichtle Mise à jour par Anne puis par Jiel


1 Objectif de ce document

L'objectif de ce document est de guider les premiers pas d'un utilisateur débutant dans l'utilisation de la trilogie Apache, PHP, MySQL. On suppose que les bases de GNU/Linux sont connues, en particulier que l'utilisateur est familiarisé avec l'arborescence des fichiers, la manipulation d'un logiciel de décompression des paquetages, la notion d'utilisateur, d'administrateur, etc.

2 Note

Dans cette documentation, on a pris la distribution Mandriva comme exemple. Le processus d'installation est similaire dans les autres distributions classiques (Fedora, Debian, Ubuntu etc.). Sachez si vous n'êtes pas sous une Mandriva qu'urpmi est l'utilitaire Mandriva pour installer des fichiers (cela correspond à yum, apt-get, installpkg). Enfin sous Mandriva le serveur web cherche les pages à afficher dans /var/www/html/; dans d'autres distributions, la racine commune à Apache est généralement /var/www/.

3 Introduction

La configuration de l'ensemble Apache, PHP, MySQL n'était pas spécialement aisée avec les distributions plus anciennes. Un article (très intéressant) de la revue Linux Pratique décrit dans le numéro 12 comment s'y prendre pour réaliser cette opération, 9 pages d'instructions, de mises à jour de fichiers .conf etc.. Passionnant (et pénible).

Depuis plusieurs années, il est possible de tout faire fonctionner sans retoucher le moindre fichier de configuration, simplement en installant les paquetages (.rpm sous Mandriva).

Rappelons brièvement que:

  • Apache est un serveur Web (le logiciel qui « envoie » des pages .html à un navigateur). Il s'agit du serveur le plus utilisé actuellement sur le Web puisqu'il représente environ 2/3 des serveurs installés.
  • PHP est un langage de programmation interprété. Correctement interfacé avec Apache, il permet au serveur de fournir des pages dynamiques gérées en fonction des besoins du client. En clair, la page n'est plus un document statique mais peut évoluer, afficher des informations différentes selon les souhaits de l'utilisateur.
  • MySQL est un gestionnaire de bases de données assez puissant et rapide. Il peut très bien fonctionner en utilisant son propre client en mode texte sans l'utilisation d'une quelconque interface graphique. L'utilisateur doit alors maîtriser le langage SQL de MySQL (proche de la norme ANSI) et se servir de la ligne de commande pour adresser des requêtes au serveur. Spartiate, on se croirait revenus à la grande époque de DBase sous DOS! (nostalgie).

4 Installation d'Apache

Note prélable : la plupart des distributions proposent aujourd'hui les versions 1.3.x et 2.x de Apache. Si Apache 2.x présente plus d'option pour la configuration avancée du serveur et d'autres caractéristiques liées à sa performance, le groupe de développement PHP n'a toujours pas validé la plate-forme sous cette version. On peut raisonnablement dire que pour un serveur personnel ou ne nécessitant pas de fonctionnalités particulières, Apache 1.3.x fait parfaitement l'affaire. C'est ce que nous utiliserons. Tout marche cependant avec Apache 2 à la perfection.

4.1 Installation des paquetages d'Apache

L'installation d'Apache ne pose pas de problèmes. L'objectif est de disposer en fin d'installation des packages suivants :

  • apache2-common : fichiers d'installation pour Apache et apache-mod_perl
  • apache2-modules : ensemble des modules pour Apache
  • apache-conf : fichiers de configuration de Apache
  • apache2 : le démon Apache
  • apache-manuel (pas obligatoire mais peut se révéler utile).
# urpmi apache2
 Pour satisfaire les dépendances, les paquetages suivants vont être installés (1 Mo):
 apache-conf-2.0.48-2mdk.i586
 apache2-2.0.48-6mdk.i586
 apache2-common-2.0.48-6mdk.i586
 apache2-modules-2.0.48-6mdk.i586
 Est-ce correct ? (O/n)
 Préparation...              ##################################################
    1:apache-conf            ##################################################
    2:apache2-modules        ##################################################
    3:apache2-common         ##################################################
    4:apache2                ##################################################

Le package apache-conf contient en particulier les fichiers de configuration /etc/httpd/conf/httpd.conf et /etc/httpd/conf/commonhttpd.conf qui définissent les paramètres de fonctionnement du serveur[#foot94 ][#foot94 ][#foot94 Note 1]

4.2 Premier test d'Apache

Le fonctionnement d'Apache est matérialisé par la mise en route d'un démon nommé httpd. Pour mettre en route, arrêter, vérifier etc. ce service tapez /etc/rc.d/init/httpd option ou option peut prendre les valeurs start, stop, restart, status ou extendedstatus selon votre besoin. En clair, pour démarrer Apache tapez /etc/init.d/httpd start sous Mandriva; sous une autre distribution, démon de lancement d'Apache pourra s'appeler apache; faites alors /etc/init.d/apache start.

Sur Mandriva, vous pouvez également utiliser la commande service: service httpd start par exemple.

En principe l'installation d'Apache a modifié les fichiers de configuration du lancement de Linux. Le démon httpd devrait donc démarrer systématiquement et automatiquement à chaque boot. L'installation a par ailleurs démarré immédiatement ce démon, il n'est donc pas nécessaire de rebooter comme on le ferait avec un autre système d'exploitation très connu avec lequel le moindre changement de mulot passe par un reboot...

Nous pouvons par ailleurs passer immédiatement au test du serveur sans passer par la moindre phase de configuration. Pour cela chargez votre navigateur préféré (pour ma part j'utilise Konqueror). Saisir http://localhost dans la barre d'URL. Vous voyez apparaître après quelques instant une page de présentation d'Apache. En fait le serveur Apache vient d'envoyer la page /var/www/html/index.shtml, affirmation que vous pourrez facilement vérifier en tapant file:/var/www/html/index.shtml dans la barre d'URL de votre navigateur. Attention: il n'y a qu'un slash après file: alors que par habitude vous pourriez être tentés (comme moi!) d'en mettre deux.

La page affichée dans ce cas est bien la même que la première. Les différences d'affichage dans les parties graphiques s'expliquent par le fait que l'affichage a été demandé en direct au lieu de passer par le serveur Apache.

Si vous préférez utiliser Lynx (un navigateur en mode texte ultra rapide puisqu'il ne charge pas les parties graphiques) vous pouvez même vous contenter de taper lynx localhost. Lynx ajoutera automatiquement ce qui manque. Merveilleux de simplicité non ?


5 Installation de PHP

5.1 Mise en place des paquetages

L'installation de PHP doit contenir :

  • libphp-common432
  • php.ini
  • mod_php

L'installation de ces packages ne devrait pas poser de problème particulier. Sauf erreur ils s'installent automatiquement avec l'option d'installation « recommandée » de Mandriva. Vérifiez toutefois la présence de mod_php (rpm -qa | grep php) !

# urpmi php
 Un des paquetages suivants est nécessaire :
  1- apache2-mod_php-2.0.48_4.3.4-1mdk.i586
  2- mod_php-4.3.4-1mdk.i586
  3- php-cli-4.3.4-4mdk.i586
  4- php-cgi-4.3.4-4mdk.i586
 Que choisissez-vous ? (1-4)1
 Préparation...              ##################################################
    1:apache2-mod_php        ##################################################
 Shutting down httpd2: [  OK  ]
 Checking configuration sanity for Apache 2.0:  [  OK  ]
 Starting httpd2: [  OK  ]

L'installation des rpm se termine par un redémarrage d'Apache afin de prendre en compte le module PHP : taper en console /etc/init.d/httpd restart

5.2 Premier script PHP

Il importe maintenant de réaliser le premier test. Créez un sous répertoire /var/www/html/test/ puis créez dans ce sous répertoire un fichier test.php contenant :

<html>
<?
echo 'premier test php

';
phpinfo();
 ?>
</html>

Sauvegardez et chargez dans un navigateur (URL http://localhost/test/test.php).

Voilà votre première page web dynamique ! Vous avez, en quelques lignes, créé du code html (les balises <html> et </html>), faite générer du html par PHP (echo 'premier test php

';
), les
sont des retours chariots, et fait appel à l'une des nombreuses fonctions de PHP, phpinfo() qui donne les principales informations sur le configuration actuelle de PHP.

Vous pourrez réaliser d'autres tests, l'aide nécessaire est à votre disposition dans les bouquins, les revues et sur le net.

Lorsque vous aurez constitué un petit groupe de fichiers de test vous pourrez alors faire l'expérience suivante :

  • tapez simplement http://localhost/test/ dans la barre d'URL de votre navigateur, celui-ci affiche la liste des fichiers créés, en fait le contenu du sous répertoire /var/www/html/test/. Si vous cliquez sur l'un des fichiers vous lancez le serveur Apache qui va interpréter le code PHP contenu dans le fichier choisi.
  • copiez l'un des fichiers (ou renommez le) vers index.php. La même URL que précédemment affiche alors directement les contenu de index.php! Le contenu du sous répertoire n'est plus visible! L'accès aux différents fichiers reste toutefois possible si vous tapez directement leurs noms respectifs.
  • effacez le ficher index.php, l'affichage de la liste des fichiers est à nouveau possible. C'est pratique pour éviter qu'un visteur de passage puisse consulter le contenu d'un sous-répertoire. Bien sûr c'est un simple truc, pas un rideau de fer contre un kracker expérimenté, mal intentionné et patient !

6 Installation de MySQL

6.1 Mise en place des paquetages

L'installation de MySQL est elle aussi très simple. Les packages suivants sont nécessaires (ils devraient avoir été installés par défaut, en cas de besoin les installer par la suite):

  • mysql-common
  • mysql-client
  • mysql

MySQL-client n'est pas indispensable. Il s'agit en fait de la partie client de l'ensemble client-serveur. Ce client permet toutefois (attention, en mode texte c'est plutôt spartiate !) de faire quelques requêtes au serveur.

'# urpmi mysql
 Un des paquetages suivants est nécessaire :
  1- MySQL-4.0.18-1.1.100mdk.i586
  2- MySQL-Max-4.0.18-1.1.100mdk.i586
 Que choisissez-vous ? (1-2)1
 Pour satisfaire les dépendances, les paquetages suivants vont être installés (18 Mo):
 MySQL-4.0.18-1.1.100mdk.i586
 MySQL-client-4.0.18-1.1.100mdk.i586
 MySQL-common-4.0.18-1.1.100mdk.i586
 libmysql12-4.0.18-1.1.100mdk.i586
 perl-Mysql-1.22_19-9mdk.i586
 Est-ce correct ? (O/n)
 Préparation...              ##################################################
    1:libmysql12             ##################################################
    2:MySQL-client           ##################################################
    3:perl-Mysql             ##################################################
    4:MySQL-common           ##################################################
    5:MySQL                  ##################################################
 040512 12:40:46  /usr/sbin/mysqld: Shutdown Complete
 # service mysql start
 Lancement du serveur MySQL                                      [  OK  ]

En principe après l'installation de MySQL vous devriez disposer d'un serveur MySQL opérationnel (et en marche). Pour le vérifier tapez ps -ax | grep mysql. Vous devriez voir s'afficher quelques lignes relatives à autant de serveurs en attente de requêtes. Si tel n'est pas le cas tapez (comme root) "safe_mysql &" dans une fenètre texte. Cette commande devrait démarrer le serveur MySQL.

Attention : l'installation par défaut utilise root comme super administrateur du serveur et le mot de passe root. Faites donc un essai de fonctionnement du serveur MySQL en utilisant simplement le client MySQL en mode texte.

# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.0.18-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Tapez alors quit à l'invite mysql et vous voilà sorti.

Il va falloir faire fonctionner tout ce petit monde ensemble! Apache et PHP sont déjà opérationnels. Ils communiquent ensemble, l'essai a été fait. MySQL est en route également. Pour que PHP puisse entrer en contact avec MySQL il lui faut un minimum de connaissances qui lui sont apportées par le module php-mysql.

# urpmi php-mysql
 Préparation...              ##################################################
    1:php-mysql              ##################################################

Pensez donc à l'installer lui aussi sinon pas de langue commune! Redémarrez Apache (taper en console "/etc/init.d/httpd restart" sans les "")

On notera qu'on peut utiliser aussi PostreSQL (à la place de MySQL) avec PHP et Apache.

6.2 Installation du script phpMyAdmin

Plutôt que de vous lancer dans la rédaction d'un premier script PHP qui va s'adresser au serveur MySQL (pour lui dire quoi ? Rien n'existe encore, ou si peu !) je vous suggère de récupérer sur le net un ensemble de scripts nommé phpMyAdmin. Il s'agit tout simplement d'un ensemble de scripts PHP qui va vous permettre, via un navigateur, d'administrer vos premières bases de données, de lire les bases de données système MySQL (celles qui définissent les droits des utilisateurs), d'en créer d'autres.

# urpmi phpmyadmin
Préparation... ##################################################
1:phpMyAdmin ##################################################

6.3 Premier test

Une fois l'installation faite utilisez votre navigateur préféré et tapez http://localhost/phpMyAdmin/ dans la barre d'URL.

Vous devriez voire apparaître une page html "Bienvenue à phpMyAdmin 2.5.4 - Connexion". Par défaut, le nom d'utilisateur est "root" et aucun mot de passe n'est défini : il suffit de se loguer simplement en laissant vide le champ "mot de passe". Pour des raisons de sécurité, une fois logué, modifier le nom d'utilisateur et définir un nouveau mot de passe.

[ Il vous reste à modifier le fichier /var/www/phpMyAdmin/config.inc.php et le paramètre $cfg['blowfish_secret'] = '';.
Exemple : $cfg['blowfish_secret'] = 'ma phrase secrete'; ]

On notera que dans les versions récentes de PhpMyAdmin le fichier de configuration n'est plus config.inc.php mais config.default.php. Depuis la version 2.8.0 le fichier a été déplacé dans le répertoire libraries/. Généralement, le fichier est mis dans /etc/phpMyAdmin/config.default.php et lié vers /var/www/phpMyAdmin/libraries/config.default.php.

Rechargez la page de votre navigateur, voilà vous êtes prêts à l'utiliser !

7 Synthèse

Vous venez de créer deux ensembles de données, les répertoires contenant les pages HTML/PHP, et les répertoires contenant les bases de données MySQL.

  • Les pages PHP/HTML sont rangées dans /var/www/html/. La page d'accueil Apache est à l'adresse /var/www/html/index.shtml (rappel !). Le sous-répertoire /var/www/html/admin/phpMyAdmin contient le script de connexion à MySQL. Vous pourrez créer d'autres sous répertoires contenant vos premiers essais, par exemple /var/www/html/test/ qui sera accessible à l'URL http://localhost/test/.
  • Les données MySQL sont rangées dans /var/lib/mysql/. Chaque base de données correspond à un sous-répertoire. Exemple : /var/lib/mysql/mysql/ contient les tables qui définissent les droits d'accès à MySQL. Ce sous-répertoire n'est évidemment accessible que pour l'administrateur système. Si vous créez une nouvelle base de données avec phpMyAdmin ou directement en utilisant le client MySQL, le serveur créera un nouveau sous répertoire /var/lib/mysql/test par exemple si votre nouvelle base s'appelle test.

Conclusion

La description ci-dessus avait pour but de vous conduire à disposer d'un serveur Apache qui soit opérationnel et qui puisse mettre en oeuvre des bases de données MySQL via PHP. Ce but étant atteint il convient maintenant d'être modeste. Le vrai travail commence juste. Lisez les docs, les man pages. Il existe aussi d'excellents bouquins sur la question. Pour ma part j'étudie actuellement ``Pratique de MySQL et PHP'' édition O'Reilly. Je le trouve très bien fait.

Enfin, lisez Protection d'un serveur Apache PHP MySQL, concernant la sécurisation de l'environnement que l'on vient de créer.

Remerciement

Lors d'une installation il est courant de progresser un peu à tâtons, par essais successifs. Après quelques heures de bagarre (qui peuvent être réparties sur plusieurs jours) il faudrait être un sur-homme pour se souvenir de tout ce qu'on a fait. La mise au point d'un document comme celui-ci ne peut donc se faire qu'après plusieurs installations réussies. Idéalement la bêta-version du document doit elle-même être testée par un autre personne qui suit scrupuleusement la description et commente les erreurs, inversions, oublis etc. Je remercie donc M. Guy ASSFELD d'avoir bien voulu apporter sa contribution à ce travail en déboguant la première version.

L'auteur

JML dit Jean-Marc LICHTLE, email jean-marc.lichtle@gadz.org, ingénieur Arts et Métiers promo CH173 (rigolez pas, à l'époque le hi-tech c'était les cartes perforées sur IBM 1130) !



Notes

... serveur[#tex2html1 1]
De nombreuses distributions ne se contente plus du seul fichier httpd.conf. La version contenue dans LINUX Mandrake 10.0 utilise un fichier supplémentaire, commonhttpd.conf qui est appelé par httpd.conf par un ``include''.
... start[#tex2html2 2]
Je ne précise pas, il va sans dire que certaines commandes ne peuvent être lancées que par l'administrateur système (root). L'appel à httpd fait partie de ces commandes réservées. Donc si LINUX vous fait un bras d'honneur commencez par vous poser la question de votre habilitation à lancer une commande.




@ Retour à la rubrique Réseau et sécurité

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Jean-Marc LICHTLE le 01/10/2001.

Copyright

Copyright © 01/10/2001, 2005 Jean-Marc Lichtle et Anne Nicolas

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
Affichages
Outils personnels

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA