Les modules
Le serveur apache a été compilé de façon à séparer le serveur proprement dit des modules (parties autonomes du code source).
Ainsi, en exploitation, il est possible d’activer ou de désactiver des fonctionnalités du serveur suivant ses besoins. Apache se lancera donc plus ou moins rapidement suivant que l’on inclura beaucoup ou peu de modules. On pourra donc activer ultérieurement (avec la commande a2enmod) d’autres modules ou des versions plus récentes des mêmes modules.
Nous n’aborderons ici que quelques uns des modules. Le nombre de module disponible pour Apache 2 étant conséquent, je vous encourage donc à consulter la documentation officielle sur le site de la fondation Apache. Il est également possible d’installer cette documentation afin de la consulter en local :
sudo apt-get install apache2-doc
Il ne nous reste plus qu’à recharger la configuration d’Apache :
sudo /etc/init.d/apache2 reload
La documentation est alors consultable en local exclusivement à l’adresse suivante : http://localhost/manual/
Espace Web personnel par utilisateur : module userdir
Il est possible de fournir à chaque utilisateur de votre système un espace web personnel. Afin de rendre cela possible il vous faut activer un module d’apache : userdir
sudo a2enmod userdir
Il ne nous reste plus qu’à recharger la configuration d’Apache :
sudo /etc/init.d/apache2 reload
Afin qu’un utilisateur puisse publier son site web, il devra disposer d’un dossier "public_html" dans son répertoire personnel. Cet espace web sera alors accessible via l’url http://votre_machine/~user/ où "user" correspond au nom de connexion de l’utilisateur.
prise en charge de PHP : module php4
PHP vous permet de générer des pages Web dynamiquement. Il s’agit d’un langage de programmation s’exécutant sur le serveur.
En installant phpmyadmin (voir article précédent) un certain nombre de modules PHP a déjà été installé. Cependant il existe une grande quantité de modules pour PHP. Deux d’entre eux sont particulièrement utiles : les librairies de génération d’images à la volée et un interpréteur PHP en ligne de commandes. Nous allons donc les installer.
apt-get install php4-gd php4-cli
Nous avons installé le module PHP 4 pour Apache 2. Si vous souhaitez installer d’autres paquets php4, faites apt-cache search php4 pour rechercher le nom du paquet correspondant à vos besoins, puis installez le. Voici la liste des paquets relatifs aux extensions de PHP :
- php4-apd
- php4-auth-pam
- php4-cgi
- php4-cli
- php4-common
- php4-curl
- php4-dbtcp
- php4-dev
- php4-domxml
- php4-gd
- php4-gpib
- php4-idn
- php4-imagick
- php4-imap
- php4-interbase
- php4-ldap
- php4-maxdb
- php4-mcal
- php4-mcrypt
- php4-mhash
- php4-mysql
- php4-odbc
- php4-pear
- php4-pear-log
- php4-pgsql
- php4-ps
- php4-recode
- php4-rrdtool
- php4-snmp
- php4-sqlite
- php4-sqlrelay
- php4-sybase
- php4-syck
- php4-tclink
- php4-xslt
Ces modules PHP doivent être activés dans le fichier de configuration de PHP : /etc/php4/apache2/php.ini dans la section "Dynamic Extensions".
Le module PHP d’Apache quant à lui s’active via la commande
sudo a2enmod php4
sudo /etc/init.d/apache2 force-reload
Pour vérifier que tout fonctionne comme prévu nous allons créer un fichier affichant les informations relatives à l’interpréteur PHP.
cd /var/www
sudo -s -H
mkdir test_php/
chmod 755 test_php/
cd test_php
cat > index.php
<?php phpinfo(); ?>
Faîtes un CTRL+D pour finir la saisie. Pour afficher le résultat rendez-vous à l’URL http://localhost/test_php/ SSL : module ssl
Création des certificats
Afin de générer facilement des certificats SSL auto-signés, il existe sur les distributions basées sur Debian la commande "apache2-ssl-certificate".
sudo apache2-ssl-certificate
Le certificat est donc généré automatiquement après que vous ayez répondu aux questions. Pour plus d’informations sur la commande apache2-ssl-certificate, exécutez :
sudo apache2-ssl-certificate -h
Configuration de Apache
Apache 2 est installé avec le module ssl. Il suffit de le charger en utilisant a2enmod ssl.
Il vous faut ensuite éditer le fichier ssl.conf. Ajoutez simplement une ligne à la fin du fichier (avant le ) :
SSLCertificateFile /etc/apache2/ssl/apache.pem
(Si vous disposez de plusieurs certificats pour plusieurs hôtes virtuels, insérez cette ligne directement dans le fichier de configuration de votre hôte virtuel, après la directive SSLEngine ON expliquée ci-après)
Ensuite, ajoutez au fichier ports.conf la ligne suivante :
Listen 443
Configuration de votre VirtualHost
Créez un VirtualHost contenant la directive SSLEngine on, par exemple en ajoutant une section dans /etc/apache2/sites-available/default
Exemple :
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin yourmail@mail.com
SSLEngine on
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Ré-écriture d’URL : module rewrite
Ce module d’Apache permet d’appliquer des règles de réécriture aux requêtes reçues. C’est un outil très puissant mais compliqué à manipuler. Aussi il est souvent recommandé de faire appel au module Alias pour la gestion de requêtes simples, si ce module est disponible.
Afin d’activer ce module lancez la commande suivante :
sudo a2enmod rewrite
"Appliquer des règles d’écriture aux requêtes reçues" signifie que lorsque le serveur reçoit une requête d’une URL donnée, une règle peut avoir été créée pour cette URL afin de la modifier. En pratique, on pourrait faire en sorte que toutes les requêtes vers http://monsite.com/photos/12 donnent côté serveur une requête http://monsite.com/site.php ?rub=5&id=12.
Ce module est plein de ressources, mais il faut en connaître les arcanes. Aussi, nous n’allons voir que quelques directives de base. Notez que celles-ci sont sensibles à la casse : une directive mal écrite, et le serveur peut ne plus rien vouloir afficher.
- RewriteEngine : Cette directive sert à activer le moteur de réécriture. C’est la première directive à appeler avant toute autre, sous la forme RewriteEngine on. Omettre le on laisse le moteur sur off. Ceci est plus rapide que de mettre l’ensemble des directives suivantes en commentaire.
- RewriteRule : C’est le coeur de la réécriture : c’est ici que s’appliquent les transformations, à l’aide d’expressions rationnelles. Il peut y avoir plusieurs RewriteRule à la suite, leur enchaînement donnant l’ordre dans lequel les règles sont appliquées.
RewriteRule motifTesté substitutionAppliquée [drapeau]
Le motif correspond à l’expression rationnelle appliquée à l’URL de la requête. L’expression permet de "cibler" certaines parties de cette URL. Notez qu’il peut s’agir d’une URL réécrite par une précédente réécriture, donc attention à l’enchaînement des directives.
La substitution est simplement la chaîne qui viendra remplacer les URLs reconnues par notre expression rationnelle.
Le drapeau, enfin, est optionnel et créé un troisième argument, pouvant largement modifier un résultat. Nous n’en donnerons pas une liste exhaustive, les plus utiles apparaîtront dans nos exemples.
- RewriteCond : Crée une condition d’application de règle par rapport à une chaîne testée.
RewriteCond chaîneTestée motifAppliqué [drapeau]
La chaîne peut prendre la forme d’une variable de serveur, ce qui permet de tester de nombreuses informations en provenance de votre visiteur : HTTP_USER_AGENT, HTTP_REFERER, REMOTE_HOST, TIME_DAY, SERVER_SOFTWARE,etc. Pour être utilisées, ces variables doivent être encadrées de %{ et}.
exemple
%{HTTP_USER_AGENT}
Le motif utilise ici encore les expressions rationnelles de type POSIX, avec quelques améliorations.
Le drapeau peut prendre par exemple la forme NC, précisant qu’il ne faut pas prendre en compte la casse (No Case) ou encore la forme OR logique. Il est possible de créer un ET logique entre deux drapeaux, matérialisé par une virgule : [NC,OR].
////////////////////////////////////////////////////////////
L'ensemble de ce site est placé sous license GNU FDL et CC BY-SA
Auteur : Frédéric Bouby