Par Jean-Marc Lichtle Mise à jour par Anne puis par Jiel
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.
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/.
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:
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.
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_perlapache2-modules
: ensemble des modules pour Apacheapache-conf
: fichiers de configuration de Apacheapache2
: le démon Apacheapache-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]
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 ?
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
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 :
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 :
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.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 !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.
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.
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.
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 !
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.
/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/
./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.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.
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.
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) !
@ Retour à la rubrique Réseau et sécurité
Copyright © 01/10/2001, 2005 Jean-Marc Lichtle et Anne Nicolas
![]() ![]() ![]() ![]() |
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/ |