Ceci est une ancienne révision du document !


Configuration d'Apache

Cette page décrit comment fonctionne la configuration d'un site web avec Apache.

Structure

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 :

  • <VirtualHost> utilisée dans le cadre du virtual hosting
  • <Directory> décrit un ensemble de directive à appliquer à un répertoire par rapport au système de fichier.
  • <Location> décrit un ensemble de directive à appliquer sur les url correspondantes.

Publier un dossier

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 qui permet de définir la racine du serveur web ”/”, par exemple :
        DocumentRoot /var/www
  • Alias qui est utilisée pour définir une sous partie du serveur web, par exemple ”/wiki” :
  Alias /wiki         /opt/dokuwiki

Il faut ensuite autoriser apache à publier le dossier /opt/dokuwiki avec une balise <Directory> en utilisant les options d'autorisation :

  • Allow définit les autorisations d'accès par IP, DNS ou variable
  • Deny définit les interdictions d'accès par IP, DNS ou variable
  • Order définit la priorité entre les règles d'accès et d'interdiction. Si une requête match à la fois Allow et Deny :
    • Order Allow,Deny interdit la requête
    • Order Deny,Allow autorise la requête

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 :

  • None : Aucune
  • All : Tout sauf MultiViews
  • ExecCGI : Autorise l'exécution de CGI
  • FollowSymLinks : Suit les liens symbolique
    La directive directory ne s'applique qu'au répertoire initial.
    La cible doit être également lisible par Apache, attention cependant à la confidentialité des données du serveur.
    cette directive ne s'applique pas aux <Location>
  • Includes : Autorise les Includes
  • IncludesNOEXEC : Autorise les Includes mais désactive les fonctions #exec cmd et #exec cgi
  • Indexes : Génère un listing des répertoires
  • MultiViews : Autorise l'utilisation de mod_negociation
  • SymLinksIfOwnerMatch : Identique à FollowSymlinks mais ne suit que les liens ayant le même propriétaire que la cible

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

Personnalisation

Il est possible de personnaliser le serveur avec les options suivantes :

  • ServerAdmin définit l'adresse email indiquée dans les messages d'erreur
  • ServerSignature définit la signature ajoutée aux documents générés par le serveur

Exemple :

        ServerAdmin matthieu@bouthors.fr

Virtual hosting et redirections

Le virtual hosting est utilisé pour héberger plusieurs site webs sur une seule IP publique. Apache permet plusieurs mécanismes :

  • l'hébergement de plusieurs sites webs virtuels
  • la redirection de l'utilisateur sur une autre url, également utilisé pour rediriger la racine vers une sous partie du site web
  • la réécriture pour faire office de reverse proxy et transmettre à un autre serveur web

Virtual hosting

L'hébergement local de plusieurs site se fait grâce aux options suivantes :

  • NameVirtualHost décrit quelles IP hébergent des virtual host
  • <VirtualHost> définit un virtual host
  • ServerName définit le nom d'hôte du <VirtualHost>

Par exemple pour héberger www.bouthors.fr et web3.bouthors.fr sur le même apache avec deux configurations différentes : FIXME

Redirections

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 :

  • Redirect redirige un client d'une URL vers une autre. Redirige également toutes les sous URL
  • RedirectMatch redirige les URL correspondant à une expression régulière

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>

Paramètres supplémentaires

Log

Les logs peuvent être contrôlées de différentes façons, voici quelques paramètres fréquents :

  • CustomLog : Définit le nom du fichier de log et son format
  • ErrorLog : Définit où les logs d'erreur sont envoyées
  • LogLevel : Définit le niveau de verbosité

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

Include

Lien http://httpd.apache.org/docs/2.2/fr/mod/core.html#include
DescriptionInclue un autre fichier ou les fichiers d'un répertoire
Syntaxe Include file-path|directory-path
Contexte server config, virtual host, directory

Encodage des caractères spéciaux

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

Configuration de PHP

Dans /etc/php5/apache2/php.ini configurer la taille maximum d'upload autorisé, par exemple :

upload_max_filesize = 15M
linux/serveur_web/config.1322692094.txt.gz · Dernière modification: 2011/11/30 23:28 par matthieu
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki