Apache - PHP - MySql

De SeRoM - Wiki
Aller à : navigation, rechercher

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.

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.


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

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


MySQL

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

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.

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

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

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>

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.

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.

Apache2 : Gestion des modules

Pour activer un module dans apache2:

a2enmod

et pour désactiver

a2dismod

Export/import de Base de données MySQL

Voir l'article Mysqldump