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

Installation Apache, PHP, MySQL

Installation Apache, PHP, MySQL
Jean-Marc LICHTLE
Mise à jour par Anne
Installation d'un serveur Apache/PHP/MySQL en environnement Mandrake

1 Objectif de ce document

L'objet 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 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 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 un certain nombre de versions de Mandrake, il est possible de tout faire fonctionner sans retoucher le moindre fichier de configuration, simplement en installant les rpm ! Et Mandrake 10 ne déroge pas à ce constat.

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).

3 Rappel: Utilisation de la commande rpm.

ll existe de nombreux utilitaires tels que Kpackage, GnoRPM, Midnight Commander etc. qui permettent d'installer et de gérer les packages au format Red Hat (RPM).

Pour ma part je trouve plus rapide et au moins aussi efficace de travailler en mode ligne de commande en utilisant directement la commande rpm. Voir l'[../software/rpm.php3 article rpm] sur Léa. Encore plus simple, URPMI permet aujourd'hui une gestion complète des dépendances. Je vous laisse le soin de consulter la documentation.

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.

4.1 Mise en place des rpm

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/rc.d/init.d/httpd start[#foot95 ][#foot95 ][#foot95 ]
Note 2 Sur Mandrake, 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 rpm

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 Mdk. 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 de Apache afin de prendre en compte le module PHP.

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 rpm

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.

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/admin/phpMyAdmin/ dans la barre d'URL. Vous devriez voire apparaître une page html "Bienvenue à phpMyAdmin 2.5.4 - Connexion". Il vous reste à modifier le fichier /var/www/html/admin/phpMyAdmin/config.inc.php et le paramètre $cfg['blowfish_secret'] = '';.
Exemple : $cfg['blowfish_secret'] = 'ma phrase secrete';

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 l'[Apache_protec.php3 article suivant, 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.
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.
Views
Jump to: navigation, search
Revision as of 19:10, 2 September 2005 by PingouinMigrateur (talk | contribs) (conversion de la documentation originale de Léa par HTML::WikiConverter)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Personal tools

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA
Powered by MediaWiki