I) Introduction :
Apache est le serveur Web le plus utilisé au monde, environ 65% de taux d’utilisation d’après les statisques Netcraft. Il est disponibles en version GNU/Linux, *BSD, Windows ainsi que pour d’autres Unix. C’est un logiciel fiable, performant et possédant de nombreuses fonctionnalités via l’utilisation de modules.
Nous verrons ici la mise en place d’Apache conjointement avec l’installation de PHP4, language très répandu pour son domaine de prédilection, les pages dynamiques, grâce à son excellent support des bases de données.
Pour l’installer, si vous partez des sources, la documentation explique très clairement la procédure à suivre alors je ne la répèterais pas. Pour les utilisateurs d’une distribution Debian, voyez ce qui suit, pour les autres, je vous renvoie à votre distribution.
# apt-get install apache php4
Si vous souhaitez le support d’une base de données, les paquets sont :
php4-mysql : pour Mysql
php4-pgsql : pour PostgreSQL
php4-dbase : pour Dbase
php4-sybase : pour sybase ou ms sql server
php4-odbc : pour le pilote ODBC
Voilà ce que propose la Woody, la Sid et la Sarge doivent en supporter davantage.
II) Le fichier /etc/apache/httpd.conf :
C’est dans ce fichier que se fera tout la configuration d’Apache, voyons les sections principales :
# Le serveur peut être lancé en démon ou bien être chargé à la demande par Inetd lorsque celà est nécéssaire :
ServerType standalone # Emplacement des fichiers de configuration d'Apache :
ServerRoot /etc/apache # Nombre de processus serveurs pouvant exister en simultanés : # Tenir compte de la machine et de la charge pour régler ce paramètre.
MinSpareServers 5
MaxSpareServers 10 # Nombre de processus serveurs à charger au démarrage d'Apache :
StartServers 5 # Nombre de clients pouvant effectuer en simultané des requêtes sur le serveur :
# Cette valeur ne doit pas être trop faible car sinon des visiteurs se verraient refuser l'accès.
MaxClients 15 # La section Dynamic Shared Object Contient la liste des modules que apache
# pourra lancer. Celà définit les fonctionnalités que le serveur aura. # Pour des raisons évidentes de sécurité, n'activer que ceux que vous comptez utiliser.
# Pour php vous devez avoir :
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so # Le port que apache écoutera, 80 par défaut
# Si vous changer le port, les visiteurs devront taper :
# http://ip.du.serveur:
Port 80 # Nom de l'utilisateur et du groupe sous lequel le processus apache tournera
User www-data
Group www-data
# Email de l'administrateur du serveur :
ServerAdmin jaune@simpsons.lan
# Nom du serveur :
ServerName www.simpsons.lan
# Emplacement racine dans lequel seront stockés vos pages :
DocumentRoot /var/www
# Nom du fichier d'accès, nous verrons son utilité plus tard :
AccessFileName .htaccess
# Cette section doit ressembler à ça sinon apache ne tiendra pas compte
# des fichiers d'index, index.php
# Pour dire à apache de gérer les fichiers php, il faut explicitement # le lui dire pour ne pas qu'il les traite comme du simple texte brut : AddType application/x-httpd-php .php .php3 AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.php4 index.php3 index.html index.htm index.shtml index.cgi
Redémarrez le processus Apache et testons le bon fonctionnement de notre serveur. Dans le répertoire « DocumentRoot », créez un fichier toto.html contenant ceci :
<html> <head> </head> <body> Le php c'est sexy </body> </html>
Lancez un navigateur et demandez lui d’ouvrir la page http://ip.du.serveur/toto.html, si vous voyez apparaître « Le php c’est sexy » c’est que votre apache marche.
Maintenant, créons un script php nommé, test.php de la sorte pour tester le fonctionnement d’apache avec php :
<html> <head> </head> <body> <? phpinfo(); ?> </body> </html>
Lancez un navigateur et demandez lui d’ouvrir la page http://ip.du.serveur/test.php, vous devriez alors voir s’afficher une série d’informations sur la configuration d’Apache et de php.
III) Gérer les accès :
1) Les directives
Ces deux directives possèdent la même syntaxe. Comme vous avez pu le deviner, l’une se définie pour un fichier et l’autre pour un répertoire. Et comme un bon exemple vaut mieux qu’un long discours, voyons ça tout de suite.
Imaginons que vous vouliez limiter l’accès au répertoire /var/www/toto aux utilisateurs possédant l’IP 192.168.69.0/24, vous devrez faire :
<Directory /var/www/toto> order allow,deny allow from 192.168.69.0/24 deny from all </Directory>
Le truc important à saisir la dedans c’est pour l’instruction order. Ici nous disons, « nous permettons au réseau 192.168.69.0 d »accéder au répertoire mais nous refusons tous les autres ». Si nous avions mis order deny allow, apache aurait interprété ça comme « Nous refusons à tout le monde l’accès au réseau et nous acceptons le réseau 192.168.69.0 ». Cependant, il est déjà trop tard pour que 192.168.69.0 accède au répertoire car nous avons avant interdit l’accès pour tout le monde.
Avec cet exemple, vous avez sans doute remarqué une faiblesse de la méthode. En effet, en se basant sur l’adresse IP, on part du postulat que tous les clients sur serveur web auront une adresse IP fixe, ce qui n’est évidement pas le cas avec DHCP ou une connexion par modem. Dans ce cas, il vaut mieux utiliser une authentification par mot de passe. On peut utiliser une authentification par mot de passe soit dans une directive
2) La protection par mot de passe :
Nous allons placer nos couples nom d’utilisateur et mot de passe dans un fichier unique /etc/apache/utilisateurs. Nous devrons utiliser l’utilitaire htpasswd pour s’occuper de ça. htpasswd requiert l’utilisation du paramètre -c la première fois afin de créer le fichier. Ensuite il n’est plus à utiliser.
# htpasswd -c utilisateurs toto New password: Re-type new password: Adding password for user toto
Après celà, voici le contenu de notre fichier /etc/apache/utilisateurs :
toto:fpAwPuEaIL1ls
Maintenant créons notre fichier .htaccess là ou nous voulons réguler les accès :
AuthType Basic AuthUserFile /etc/apache/access AuthName "Accès limité :" require valid-user
Tentez d’accéder à l’emplacement protégé avec un navigateur, une boite de dialogue devrait s’afficher vous invitant à rentrer un nom d’utilisateur et un mot de passe valide contenu dans le fichier spécifié par la directive AuthUserFile.
IV) J’ai plusieurs site à héberger avec une seule IP :
Avec Apache, vous avez la possibilité d’héberger plusieurs sites avec la même IP. La fonctionnalité permettant ça est celle des Virtual Hosts (les hôtes virtuels). Prenons l’exemple suivant: vous avez le nom de domaine grumly.com et vous voudriez deux sites accessibles par swiffer.grumly.com et radiateur.grumly.com. Dans la zone principale du domaine grumly.com de votre DNS, mettez les deux champs CNAME correspondant à swiffer.grumly.com et radiateur.grumly.com pointant vers l’IP de votre serveur web.
Maintenant, faisons un petit tour dans notre bon vieux fichier httpd.conf et rajoutons les entrées qui vont bien dans Apache :
# On commence par définir l'IP de notre virtual host NameVirtualHost 192.168.5.1 # Puis il suffit de définir les différents virtual host <irtualHost 192.168.5.> ServerAdmin swiffer@grumly.com DocumentRoot /var/www/swiffer ServerName swiffer.grumly.com ErrorLog logs/swiffer.grumly.com.com-error.log CustomLog logs/swiffer.grumly.com-access.log common </VirtualHost> <irtualHost 192.168.5.> ServerAdmin radiateur@grumly.com DocumentRoot /var/www/radiateur ServerName radiateur.grumly.com ErrorLog logs/radiateur.grumly.com.com-error.log CustomLog logs/radiateur.grumly.com-access.log common </VirtualHost>
Bon c’est clair, pas besoin de commentaires.
Voilà pour cette petite documentation, à vous de poursuivre votre exploration d’Apache si ça vous intéresse. En tout cas, vous avez pu saisir la simplicité et l’efficacité qui sous-tend Apache.