Apache - PHP - MySql
Un article de SeRoM - Wiki.
Sommaire |
[modifier] Installer Apache, MySQL, PHP et PhpMyAdmin sur Debian
Nous allons voir comment s'installer le nécessaire pour un petit serveur de fichiers local, soit la panoplie Apache, PHP, MySQL et PhpMyAdmin.
Note: un serveur Apache, MySQL, PHP sous Linux est souvant appeler serveur LAMP.
[modifier] APACHE
apt-get install apache2
Ceci va installer Apache qui sera configuré brièvement et démarré, avec le DocumentRoot (racine du site où vous devrez placer vos fichiers) dans /var/www
A partir de maintenant si vous mettez l'adresse http://localhost/ dans votre navigateur vous obtiendrez la page par défaut de Apache : normal il n'y a rien d'autre dans le dossier à priori. Si vous allez sur file:///var/www/index.html ça sera le même fichier : vous êtes à la racine de votre dossier root.
[modifier] PHP5
apt-get install php5
Voilà que PHP5 est installé et configuré pour fonctionner avec Apache. Pour vérifier que tout est fonctionnel (l'interaction entre PHP et Apache), placez un fichier php dans le répertoire /var/www et allez dessus. Par exemple on crée le fichier essai.php qui contient simplement :
<? phpinfo(); ?>
Et on le place dans /var/www. Ensuite on se rend dessus en tapant dans le navigateur : http://localhost/essai.php
On voit apparaître une belle page donnant les informations sur votre serveur =)
[modifier] Configurer PHP
PHP est modulaire et il existe de nombreux modules qui peuvent être chargés ou non, dans le fichier /etc/php.ini On verra un exemple plus loin. La liste des modules disponibles pour PHP est disponible sur le site http://www.php.net, et les paquets debian qui vont avec sont :
apt-cache search php4 | less
[modifier] MySQL
- apt-get install mysql-server
Configurer MySQL
Il faut savoir que les utilisateurs Unix ne sont pas les mêmes que les utilisateurs MySQL. On commence par taper, en root :
mysql
Et on obtient un message du genre :
Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 133 to server version: 3.23.49-log Type 'help;' or 'h' for help. Type 'c' to clear the buffer. mysql>
La connexion au serveur SQL fonctionne. On quitte :
mysql> quit Bye
Il faut donner un mot de passe pour l'utilisateur root pour Mysql :
mysqladmin password "motdepasse"
Maintenant pour vous connecter en root sur le serveur sql :
mysql -p
Enter password :
Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 9 to server version: 5.0.20-Debian_1-log
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
On va créer un admin nommé adminsql pour mysql pour ne pas utiliser root :
mysql> use mysql; mysql> select * from user; mysql> GRANT ALL PRIVILEGES ON *.* TO adminmysql@localhost -> IDENTIFIED BY 'motdepasse' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; mysql> select * from user where User='adminmysql'; mysql> quit Bye
Maintenant on se connecte par :
mysql -u adminmysql -p
Voilà pour la première configuration de MySQL.
Pour contrôler le serveur sql :
ps aux |grep mysql
Le processus s'appelle mysqld.
/etc/init.d/mysql stop // pour arrêter le service /etc/init.d/mysql start // pour lancer le service
Pour la bonne interaction entre PHP5 et mysql :
apt-get install php5-mysql
PhpMyAdmin
PhpMyAdmin n'est pas indispensable, néanmoins il est d'une aide immense dans la gestion des bases de données !
apt-get install phpmyadmin
Pour vérifier que c'est opérationnel, rendez-vous sur : http://localhost/phpmyadmin/ Si vous avez bien suivi les opérations précédentes, vous devriez arriver sur la page d'accueil de PhpMyAdmin, enfin pas tout à fait : on vous demande un mot de passe ! Il s'agit du mot de passe que vous avez mis tout à l'heure à MySql, avec l'utilisateur adminmysql.
On édite le fichier /etc/phpmyadmin/config.inc.php et on change le mode d'authentification, on remplace 'cookie' par 'http'
Normalement tout est fonctionnel, vous gérer votre base de données par phpmyadmin, et vous placez vos données dans /var/www Vous pouvez bien sûr changer la racine du site dans le fichier /etc/apache2/httpd.conf
[modifier] Apache2 : Les Virtual host
Ce tutorial traite des divers méthodes relatives à la mise en place d'Hôtes Virtuels (VirtualHost) avec le Serveur Web Apache2 installé sur une distribution Ubuntu ou Débian.
[modifier] Les Hôtes Virtuels basés sur l'adresse Ip
Dans le cadre de cette méthode, le Serveur est soit doté de plusieurs interfaces réseau (plusieurs cartes réseau), soit doté de plusieurs adresses Ip asociées à une seule interface réseau (une seule carte réseau). Dans ce dernier cas, on parlera d'Ip aliasing. Les systèmes Linux, notamment les distributions Ubuntu et Débian, permettent de mettre facilement en oeuvre cette dernière fonctionnalité (Ip aliasing).
[modifier] Association d'une deuxième adresse Ip à une carte Réseau (Ip aliasing)
Dans cet exemple, nous partirons du principe que nous possédons une seule interface réseau (une seule carte réseau) à laquelle nous voulons associer une seconde adresses Ip.
Dans un premier temps, nous tapons la commande suivante dans un terminal pour prendre connaissance de la configuration de notre interface réseau :
ifconfig
Lien encap:Ethernet HWaddr 00:13:D3:3C:58:84
inet adr:192.168.0.2 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::213:d3ff:fe3c:5884/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:1257 erreurs:0 :0 overruns:0 frame:0
TX packets:1247 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:1037747 (1013.4 KiB) Octets transmis:423117
Nous disposons donc d'une seule est unique adresse Ip qui est 192.168.0.2.
Nous devons donc associer une seconde adresse Ip à notre interface réseau. Pour ce faire, il nous suffit simplement de taper la commande suivante dans un terminal :
sudo ifconfig eth0:0 192.168.0.100
Grâce à la commande évoquée ci-dessus, nous avons associé une seconde adresse Ip ==> 192.168.0.100 à notre interface réseau (carte réseau).
Dès à présent, notre interface réseau dispose de deux adresse Ip bien distinctes :
- 192.168.0.2 (Adresse Ip)
- 192.168.0.100 (Alias Ip)
on peut s'en assurer en refesant un ifconfig
[modifier] Configuration des Hôtes Virtuels =
Ayant associé une nouvelle adresse Ip à notre unique carte réseau, nous pouvons désormais créer nos deux Hôtes Virtuels (sites virtuels) utilisant chacun une adresse Ip bien distincte.
Dans un premier temps, nous renseignons le fichier /etc/hosts avec deux noms de sites (ceux de nos Sites Virtuels) associés respectivement aux deux adresses Ip disponibles afin de permettent la résolution de nom (Nom --> Adresse Ip).
Exemple de fichier hosts :
127.0.0.1 localhost 192.168.0.2 virtual1.com 192.168.0.100 virtual2.com
Une fois notre fichier /etc/hosts correctement renseigné, il ne nous reste plus qu'à configurer nos Hôtes Virtuels (sites virtuels). Pour ce faire, il nous suffit de créer deux nouveaux fichiers dans le répertoire /etc/apache2/sites-available :
1er fichier de configuration :
Dans cet exemple, le premier fichier de configuration se nomme : virtual1.conf
Ce fichier contient le contenu minimal suivant :
<VirtualHost 192.168.0.2:80>
DocumentRoot /var/www/virtual1.com
ServerName virtual1.com
</virtualHost>
2ème fichier de configuration :
Dans cet exemple, le deuxième fichier de configuration se nomme : virtual2.conf
Ce fichier contient le contenu minimal suivant :
<VirtualHost 192.168.0.100:80>
DocumentRoot /var/www/virtual2.com
ServerName virtual2.com
</VirtualHost>
[modifier] Les Hôtes Virtuels basés sur le numéro de port
Par défaut, le Serveur Web Apache2 est configuré pour écouter sur le port 80. Ce faisant, il est possible d'utiliser des ports bien distincts pour chaques hôtes Virtuels.
Exemple :
Dans cette exemple, les deux Sites Virtuels virtual1.com et virtual2.com se partagent la même adresse Ip : 192.168.0.2. Seul le port d'écoute est différent.
Dans un premier temps, nous allons éditer le fichier /etc/hosts afin de donner deux noms bien distincts à la seule et unique adresse Ip de notre interface réseau. Ceci permettra la résolution de nom (Nom --> Adresse Ip).
Exemple de fichier hosts :
127.0.0.1 localhost 192.168.0.2 virtual1.com 192.168.0.2 virtual2.com
Ensuite, nous créons deux fichiers de configuration (VirtualHost) que nous plaçons dans le répertoire /etc/apache2/sites-available.
Voici ce que contiennent ces deux fichiers de configuration : 1er fichier de configuration qui se nomme virtual1.conf :
<VirtualHost 192.168.0.2:80>
DocumentRoot /var/www/virtual1.com
ServerName virtual1.com
</VirtualHost>
2ème fichier de configuration qui se nomme virtual2.conf :
<VirtualHost 192.168.0.2:8080>
DocumentRoot /var/www/virtual2.com
ServerName virtual2.com
</VirtualHost>
Note explicative Dans cet exemple, le site virtual1.com sera accessible via l'url : http://virtual1.com et le site virtual2.com sera accessible via l'url : http://virtual2.com:8080.
Ps : Les répertoires /var/www/virtual1.com et /var/www/virtual2.com doivent exister et doivent bénéficier des bonnes permissions. A défaut, le Serveur Web Apache2, lors du reload, renverra des erreurs. Pour les testes, vous pouvez appliquer un chmod 755 sur ces répertoires.
Encore une fois, nous devons activer les deux Sites Virtuels avec la commande a2ensite (cf. ci-avant) et nous devons demander au Serveur Web Apache2 de relire ses fichiers de configuration pour que les changements soient pris en comptes ==> /etc/init.d/apache2 reload.
[modifier] Les Hôtes Virtuels basés sur le nom
Cette troisième méthode et celle qui est la plus utilisée et aussi la plus conseillée. Elle tend même à devenir un standart. Il s'agit simplement d'associer plusieurs noms DNS à une seule adresse IP.
Dans l'exemple suivant, nous allons configurer deux Sites virtuels qui utiliseront tout les deux l'adresse Ip 192.168.0.2.
Dans un premier temps, nous allons éditer le fichier /etc/hosts afin de donner deux noms bien distincts à la seule et unique adresse Ip de notre interface réseau. Ceci permettra la résolution de nom (Nom --> Adresse Ip). Exemple de fichier /etc/hosts :
127.0.0.1 localhost 192.168.0.2 virtual1.com 192.168.0.2 virtual2.com
Notre fichier /etc/hosts étant correctement renseigné, nous allons rajouter la directive NameVirtualHost à la fin du fichier /etc/apache2/apache2.conf qui n'est autre que le fichier de configuration principale du Serveur Web Apache2.
Cette directive correspond à celle sur laquelle le Serveur Web Apache2 acceptera uniquement les requêtes adressées aux Sites Virtuels que nous allons définir ci-après.
A la fin du fichier /etc/apache2/apache2.conf nous rajoutons donc :
NameVirtualHost 192.168.0.2:80
Ensuite, nous créons deux nouveaux fichiers de configurations (VirtualHost) que nous plaçons dans le répertoire /etc/apache2/sites-available.
Voici ce que contiennent ces deux fichiers de configuration :
1er fichier de configuration qui se nomme virtual1.conf :
<VirtualHost 192.168.0.2:80>
DocumentRoot /var/www/virtual1.com
ServerName virtual1.com
</VirtualHost>
2ème fichier de configuration qui se nomme virtual2.conf :
<VirtualHost 192.168.0.2:80>
DocumentRoot /var/www/virtual2.com
ServerName virtual2.com
</VirtualHost>
Ps : Les répertoires /var/www/virtual1.com et /var/www/virtual2.com doivent exister et doivent bénéficier des bonnes permissions. A défaut, le Serveur Web Apache2, lors du reload, renverra des erreurs. Pour les testes, vous pouvez appliquer un chmod 755 sur ces répertoires.
Encore une fois, nous devons activer les deux Sites Virtuels avec la commande a2ensite et nous devons demander au Serveur Web Apache2 de relire sa configuration pour que les modifications soient pris en comptes ==> /etc/init.d/apache2 reload.
[modifier] Apache2 : Gestion des modules
Pour activer un module dans apache2:
a2enmod
et pour désactiver
a2dismod
[modifier] Export/import de Base de données MySQL
Voir l'article Mysqldump

