Cette page décrit comment fonctionne la configuration d'un site web avec Apache.
Un fichier de configuration apache est structuré, par exemple :
<VirtualHost *:80> Servername www.bouthors.fr ServerAdmin matthieu@bouthors.fr DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all RedirectMatch ^/$ /wiki/ </Directory> </VirtualHost>
Dans cet exemple les balises de structure sont VirtualHost et Directory, et chaque section comporte de nombreuses options comme “Servername”, “DocumentRoot”, “Options”, “allow”, …
Les structures fréquemment utilisées sont :
La première étape consiste à réaliser le lien entre l'arborescence du serveur web (les urls) et le système de fichier en utilisant au choix :
DocumentRoot /var/www
Alias /wiki /opt/dokuwiki
Il faut ensuite autoriser apache à publier le dossier /opt/dokuwiki avec une balise <Directory> en utilisant les options d'autorisation :
Exemple d'accès total :
Alias /wiki /opt/dokuwiki <Directory /opt/dokuwiki> allow from all Order deny,allow </Directory>
Apache permet également l'utilisation de fonctionnalités spécifiques avec la commande “option” qui peut avoir une ou plusieurs des valeurs suivantes :
Par exemple avec l'autorisation de suivre les liens symboliques :
Alias /wiki /opt/dokuwiki <Directory /opt/dokuwiki> Options FollowSymLinks allow from all Order deny,allow </Directory>
Il est possible d'utiliser les opérateurs + et - pour définir des modifications par rapport aux droits hérités. Par exemple pour ajouter le listage des fichiers dans un sous répertoire :
<Directory /opt/dokuwiki/share> Options +Indexes </Directory>
Enfin, il est possible de redéfinir des options directement dans les répertoires avec le fichier ”.htaccess”. Les options autorisées dans ce fichier sont définies avec la commande “AllowOverride”. Par exemple :
Alias /wiki /opt/dokuwiki <Directory /opt/dokuwiki/> Options +FollowSymLinks AllowOverride All order allow,deny allow from all </Directory>
Exemple de fichier .htaccess qui interdit l'accès à son répertoire :
order allow,deny deny from all
Remarque : il est également possible de modifier les options sur l'arborescence des urls plutôt que l'arborescence du système de fichier avec la balise <Location> à la place de <Directory>.
Il est possible de personnaliser le serveur avec les options suivantes :
Exemple :
ServerAdmin matthieu@bouthors.fr
Le virtual hosting est utilisé pour héberger plusieurs site webs sur une seule IP publique. Apache permet plusieurs mécanismes :
L'hébergement local de plusieurs site se fait grâce aux options suivantes :
Par exemple pour héberger www.bouthors.fr et web3.bouthors.fr sur le même apache avec deux configurations différentes :
<VirtualHost *:80> ServerName www.bouthors.fr ServerAlias ipv6.bouthors.fr DocumentRoot /var/www ... </VirtualHost> <VirtualHost *:80> ServerName web3.bouthors.fr DocumentRoot /var/www ... </VirtualHost>
Les redirections sont très utilisées, elles permettent d'indiquer à l'utilisateur de faire sa requête auprès d'une autre url.
Les commandes utilisées sont :
Exemple de redirection de la racine d'un serveur web :
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all RedirectMatch ^/$ /wiki/ </Directory>
Exemple de redirection inconditionnelle par défaut :
<VirtualHost *:80> RedirectMatch 301 ^/(.*) http://www.bouthors.fr/$1 </VirtualHost>
Apache peut également agir en tant que reverse proxy et transmettre la requête à un autre serveur web. Le module mod-proxy est alors utilisé.
Il faut dans un premier temps activer mod-proxy :
# a2enmod proxy_http Considering dependency proxy for proxy_http: Enabling module proxy. Enabling module proxy_http. Run '/etc/init.d/apache2 restart' to activate new configuration! # /etc/init.d/apache2 restart
Puis utiliser la directive ProxyPass. Par exemple rediriger le répertoire /wiki vers le serveur web4 :
ProxyPass /wiki/ http://web4.bouthors.fr/wiki/
Include est utilisé pour insérer un autre fichier.
Exemple (à la fin de apache2.conf) :
# Include generic snippets of statements Include conf.d/ # Include the virtual host configurations: Include sites-enabled/
Dans /etc/php5/apache2/php.ini configurer la taille maximum d'upload autorisé, par exemple :
upload_max_filesize = 15M
Il est également nécessaire de modifier la taille des posts :
post_max_size = 8M
Dans les cas ou il faut beaucoup de mémoire, modifier memory_limit :
memory_limit = 128M
Les logs peuvent être contrôlées de différentes façons, voici quelques paramètres fréquents :
Exemple :
ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined
Le fichier /etc/apache2/conf.d/charset définit le Content-Type renvoyé par Apache.
Par défaut, il est en UTF8 :
AddDefaultCharset UTF-8
Pour configurer le serveur en ISO, il faut indiquer :
AddDefaultCharset ISO-8859-15