
|
Installer Apache-PHP-MySQL sur système Linux/DEBIAN
|
Prérequis
On suppose disposer d'un système DEBIAN de base déjà installé (version actuellement stable : "woody").
La machine ici nommée "debian" peut accéder naturellement à Internet, et son fichier /etc/apt/sources.list doit indiquer des sites de téléchargement des paquets Debian, notamment la ligne :
deb http://security.debian.org/ stable/updates main contrib non-free
Installation du serveur WEB Apache
- # apt-get install apache
- installe les paquets apache apache-common libexpat1 mime-support
- effectue une rapide configuration par défaut et le démarre
- fixe notamment la racine du site web principal DocumentRoot à /var/www
- Test
Pour vérifier le bon fonctionnement du serveur WEB, lui adresser l'URL : http://debian/, à partir d'un navigateur d'une station quelconque du même sous-réseau.
Bien sûr il n'est pas nécessaire d'avoir sous la main une station graphique : on peut installer le client WEB lynx et ainsi tester immédiatement en mode console avec :
lynx http://debian
- On doit obtenir la page d'accueil /var/www/index.html :
Installation de PHP (4.1.2)
- # apt-get install php4
installe seulement la version php 4.1.2 du langage
- Configuration apache-php
Le script de post-installation détecte la présence d'Apache et propose d'activer lui-même le module php4 dans Apache. Celui-ci est indispensable pour permettre au serveur WEB Apache de faire exécuter par PHP4 les scripts qui contiennent du code php, les fichiers correspondant étant reconnus par la présence d'une extension spécifique .php (ou tout autre déclarée dans httpd.conf)
"Do you want me to run the apacheconfig script now ? [y/N]" --> y
"Save these changes to the configuration files ? [Y/n]" --> y
- Test
Placer dans /var/www le fichier essai.php qui contient simplement
<?
phpinfo();
?>
Puis dans le navigateur demander l'URL : http://debian/essai.php .. échec, Apache nous dit qu'il ne connait pas ce genre de fichier !
- Si la configuration correcte n'a pas été effectuée, on procède par méthode "manuelle" :
- Editer le fichier de configuration : /etc/apache/httpd.conf
- Pour qu'Apache charge le module PHP, il faut décommenter la ligne :
# LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
- Pour qu'Apache envoie à l'interpréteur PHP le code php contenu dans les pages d'extension .php,
il faut décommenter la ligne :
# AddType application/x-httpd-php .php
- Contraindre Apache de relire son fichier de configuration
killall -HUP apache
ou
# /etc/init.d/apache reload
- Essai
Tester de nouveau l'URL : http://debian/essai.php. On obtient :
- Compléter PHP
PHP est un langage modulaire. De nombreux modules de fonctions spécialisées ont été développés et étendent le langage. Ils peuvent être chargés et intégrés grâce des déclarations dans le fichier de configuration de PHP /etc/php4/apache/php.ini. Cela doit être spécifié par des lignes du genre extension=mysql.so (voir plus loin)
Voir la liste complète des modules dans la doc : http://www.php.net
Pour connaitre la liste complète des modules disponibles sous forme de paquets Debian :
# apt-cache search php4 | less
Installation de MySQL (3.23.49)
- # apt-cache search mysql | grep ^mysql
pour connaitre tous les paquets dont le nom commence par mysql
- # apt-get install mysql-server
installe aussi mysql-common, mysql-client et les librairies indispensables
- Configuration
Indications
- lire la doc située à /usr/share/doc/mysql-server/README.Debian
- crée un nouvel utilisateur non privilégié qui sera propriétaire des processus
- rapidement il faudra définir un mot de passe pour l'administrateur root du serveur Mysql
(voir le fichier /root/.my.cnf)
- l'utilisation du réseau est désactivé par défaut (à voir dans /etc/mysql/my.cnf)
- faut-il effacer les tables existantes dans la base mysql d'une précédente installation --> no
- démarrer mySQL au chargement du système ? --> Y
- Tests
- Contrôler le serveur Mysql
ps aux | grep mysqld --> le processus serveur s'appelle mysqld
/etc/init.d/mysql stop --> attention, le script s'appelle mysql (sans d)
/etc/init.d/mysql start
- A ce stade, la liaison tant recherchée avec les pages PHP n'est pas opérationnelle ...
Il manque à PHP le chargement du module contenant les précieuses fonctions spécialisées d'accès à MYSQL (mise sous Debian dans le paquet php4-mysql)
Pour vérifier que ce paquet n'est pas installé : dpkg -l | grep php4-mysql
- Le client mysql
Mais on peut tester indépendemment le bon fonctionnement du serveur MYSQL (comme on a pu le faire pour le serveur APACHE) en dialoguant via le client mysql
Expliquer cette séquence de commandes :
# mysql
Welcome to the MySQL monitor (sans mot de passe !!)
mysql> show databases;
mysql> use mysql;
mysql> show tables;
mysql> show colums from user;
mysql> select host, user, password from user;
mysql> quit
Installation de phpmyadmin (2.2.3)
- # apt-get install phpmyadmin
installe en même temps le module php4-mysql et wwwconfig-common
- Questions
Which web server would you like to reconfigureautomatically ? --> Apache
Pour activer l'api php4 pour mysql, il faut ajouter cette ligne dans /etc/php4/apache/php.ini
extension=mysql.so
l'ajouter ? --> y
- Tests
Dans un navigateur quelconque (qui doit accepter les cookies) :
http://debian/ --> page d'accueil Apache Debian
http://debian/phpmyadmin/ --> demande d'authentification : root/mdp vide ou l'ancien
(dans le cas de la récupération des tables mysql)
Editer le fichier de configuration /etc/phpmyadmin/config.inc.php
Changer le mode d'authentification en http (au lieu du mode actuel, par cookie)
et tester à nouveau.
- Mot de passe root
Maintenant que l'on a accès à MySQL par phpmyadmin, il faut absolument protéger le compte d'administration du serveur MySQL par un mot de passe, si ce n'est pas déjà fait. Editer la ligne de root de la table user de la base système mysql, et lui attribuer un mot de passe (sélectionner la fonction PASSWORD)
- Mise à jour de phpmyadmin
Il est recommandé de télécharger la dernière version de PhpMyAdmin (actuellement 2.6.0-rc1) sur http://sourceforge.net/projects/phpmyadmin/ et de procéder à la mise à jour.
L'accès s'effectue par la requête : http://debian/phpMyAdmin-2.6.0-rc1/
Pour éviter un warning, il faut aller dans le fichier de configuration /etc/phpmyadmin/config.inc.php et renseigner la ligne 39 ainsi :
$cfg['PmaAbsoluteUri']= 'http://debian/phpMyAdmin-2.6.0-rc1/';
- Quelques subtilités ..
Mais comment faire pour que l'URL actuelle http://debian/phpmyadmin/ ne charge plus l'ancienne version mais la nouvelle ? Cela renvoie à la question plus fondamentale : comment peut-on accéder à la version installée par le paquet Debian, par l'URL http://debian/phpmyadmin/, alors que ce phpmyadmin-2.2.3 n'est visiblement pas installé dans un sous-répertoire à la racine du site WEB /var/www ???
Explication rapide :
(pour plus de détail voir
TP4 Définir des alias à http://www.ac-creteil.fr/reseaux/systemes/linux/tp-apache.html)
L'installation du paquet a ajouté tout à la fin du fichier de configuration d'Apache /etc/apache/httpd.conf la directive
Include /etc/phpmyadmin/apache.conf, et dans ce dernier fichier on trouve cette définition d'alias :
Alias /phpmyadmin /usr/share/phpmyadmin
Modifications :
- commenter la dernière ligne de /etc/apache/httpd.conf
- faire relire ce fichier par Apache : /etc/init.d/apache reload
- définir le lien symbolique : ln -s /var/www/phpMyAdmin-2.6.0-rc1 /var/www/phpmyadmin
- tester : http://debian/phpmyadmin/
Variante d'installation Apache-PHP-MySQL
Il existe une façon plus expéditive de tout installer : installer tout de suite le paquet phpmyadmin.
En effet par le mécanisme de gestion des dépendances, les paquets des serveurs et du langage seront eux aussi installés !
apt-cache show phpmyadmin
-le serveur web Apache 1.3.26 (apache, apache-common)
-le serveur de bases de données MySQL (mysql-common libmysqlclient10)
-le langage PHP (paquets php4 php4-mysql)
-l'utilitaire phpMyAdmin 2.2.3
# apt-get install phpmyadmin