### Apache HTTP Server

# Fichiers de configuration

- Principaux fichiers de configuration
- Syntaxe des fichiers de configuration
- Modules
- Portée des directives
- Fichiers .htaccess
- Fichiers de trace

## Principaux fichiers de configuration

Modules liés mod_mime | Directives liées AccessConfig <IfDefine> Include ResourceConfig TypesConfig

Apache se configure en plaçant des directives dans des fichiers textes de configuration. Le fichier de configuration principal est généralement appelé `httpd.conf`. L'emplacement de ce fichier est fixé à la compilation, mais peut être redéfini en utilisant l'option de ligne de commande `-f`. Certains sites possèdent également des fichiers `srm.conf` et `access.conf` pour des raisons historiques. De plus, d'autres fichiers de configuration peuvent être ajoutés en utilisant la directive `Include`. Les directives peuvent être placées dans n'importe quel fichier. Les modifications dans le fichier de configuration principal ne sont prises en compte qu'au démarrage ou au redémarrage d'Apache.

Une nouveauté de la version 1.3.13 d'Apache est la possibilité qu'un fichier de configuration soit en fait un répertoire. Dans ce cas, Apache lira tous les fichiers et sous répertoires et les traitera comme fichiers de configuration. Une utilisation possible de cette fonctionnalité est de pouvoir ajouter des hôtes virtuels en créant des fichiers de configuration pour chaque hôte, et de les placer dans le répertoire de configuration. Ainsi, vous pouvez ajouter ou retirer des hôtes virtuels sans avoir à éditer de fichiers, mais simplement en ajoutant ou supprimant un fichier. Celà permet d'automatiser plus facilement ce genre de traitement.

Le serveur lit également un fichier décrivant les types de contenu MIME; le nom de ce fichier est défini par la directive TypesConfig et est par défaut `mime.types`.

## Syntaxe des fichiers de configuration

Les fichiers de configurations contiennent au plus une directive par ligne. Le caractère "\" peut être utilisé à la fin d'une ligne pour indiquer que la directive se poursuit sur la ligne suivante. Il ne doit pas y avoir d'autres caractère ou d'espace entre le caractère "\" et la fin de la ligne.

Dans les fichiers de configuration, l'écriture des noms des directives n'est pas sensible à la casse, mais les arguments des directives le sont généralement. Les lignes blanches et les espaces précédant une directive sont ignorés. Les commentaires ne doivent pas être inclus sur la même ligne qu'une directive. Les lignes commençant par le caractère dièse "#" sont traitées comme des commentaires et sont ignorés; vous pouvez les utiliser pour indenter les directives et rendre leur lecture plus facile.

Vous pouvez vérifier la syntaxe de vos fichiers de configuration en utilisant soit `apachectl configtest` soit l'option de ligne de commande `-t`.

## Modules

Modules liés mod_so | Directives liées AddModule ClearModuleList <IfModule> LoadModule

Apache est un serveur modulaire. Celà implique que seules les fonctions de base sont incluses dans le noyau du serveur. Les fonctionnalités plus avancées sont disponibles grâce aux modules qui peuvent être chargés dans Apache. Par défaut, un ensemble de modules de base sont inclus à la compilation. Si le serveur est compilé pour utiliser les modules dynamiquement chargés, alors les modules peuvent être compilés séparément et ajouté à n'importe quel moment en utilisant la directive LoadModule. Sinon, Apache doit être recompilé pour ajouter ou supprimer des modules. Des directives de configuration peuvent être incluses de manière conditionnelle en fonction de la présence d'un module particulier en les entourant par un bloc <IfModule>.

Pour savoir quels modules ont été compilés dans le serveur, vous pouvez utiliser l'option de ligne de commande `-l`.

## Portée des directives

Directives liées <Directory> <DirectoryMatch> <Files> <FilesMatch> <Location> <LocationMatch> <VirtualHost>

Les directives placées dans les principaux fichiers de configuration s'appliquent à l'ensemble du serveur. Si vous souhaitez modifier la configuration pour une partie seulement du serveur, vous pouvez mettre en contexte vos directives en les plaçant dans des sections `<Directory>, <DirectoryMatch>, <Files>, <FilesMatch>, <Location>,` et `<LocationMatch>` . Ces sections limitent la portée d'application des directives qu'elles contiennent à un emplacement des fichiers ou à certaines URL. Elles peuvent être imbriquées, permettant ainsi une configuration très fine.

Apache a la possibilité de servir plusieurs sites web simultanément. Cette possibilité est appelée hébergement virtuel. Des directives peuvent également être limitées en utilisant des sections `<VirtualHost>` afin qu'elles ne s'appliquent qu'à certains sites web.

Bien que la plupart des directives peuvent être placées à l'intérieur de n'importe quelle section, certaines directives n'ont pas de sens dans certains contextes. Par exemple, les directives contrôlant la création des processus ne peuvent être placées que dans le contexte pricipal du serveur. Pour savoir quelles directives peuvent être placées dans quelles sections, vérifiez le contexte de la directive. Pour plus d'informations, voir comment les sections Directory, Location et Files fonctionnent.

## Fichiers .htaccess

Directives liées AccessFileName AllowOverride

Apache permet une gestion décentralisée de la configuration par l'utilisation de fichiers spéciaux à l'intérieur de l'arborescence web. Ces fichiers spéciaux sont généralement appelés `.htaccess`, mais n'importe quel nom peut être défini par la directive `AccessFileName`. Les directives placées dans les fichiers `.htaccess` s'appliquent au répertoire où se trouve le fichier ainsi qu'aux sous répertoires. Les fichiers `.htaccess` respectent la même syntaxe que les fichiers principaux de configuration. Comme les fichiers `.htaccess` sont lus à chaque requête, Les modifications effectuées dans ces fichiers prennent effet immédiatement.

Pour savoir si une directive peut être placée dans les fichiers `.htaccess`, vérifiez le contexte de la directive. L'administrateur peut contôler quelles directives peuvent être placées dans les fichiers `.htaccess` en modifiant la directive `AllowOverride` du fichier principal de configuration.

## Fichiers de trace

### Avertissement sur la sécurité

Toute personne pouvant écrire dans le répertoire où Apache écrit un fichier de trace peut avoir accès à l'uid sous lequel le serveur est lancé, généralement root. Ne donnez pas accès en écriture au répertoire où les fichiers de trace sont stockés sans être clairement conscient des conséquences; voir le document trucs sur la sécurité pour plus de détails.

### Fichier pid

Au lancement, Apache écrit le numéro de processus du processus père httpd dans le fichier `logs/httpd.pid`. Le nom du fichier peut être changé en modifiant la directive PidFile. Le numéro de processus est utilisé par l'administrateur pour relancer et arrêter le démon. Sur Unix, un signal HUP ou USR1 a pour effet de faire relire par le démon les fichiers de configuration, et un signal TERM le fait terminer de manière douce. Sur Windows, il faut employer l'option -k. Pour plus d'information voir la page Arrêt et redémarrage.

Si le processus meurt (ou est tué) de manière anormale, il peut alors être nécessaire de tuer les processus fils.

### Trace des erreurs

Le serveur trace les messages d'erreurs dans un fichier, par défaut `logs/error_log` sur Unix ou `logs/error.log` sur Windows and OS/2. Le nom du fichier peut être défini en utilisant la directive ErrorLog D'autres traces peuvent être définies pour différents hôtes virtuels.

### Trace des requêtes

Le serveur trace généralement chaque requête dans un fichier de transfert, par défaut `logs/access_log` sur Unix ou `logs/access.log` sur Windows and OS/2. Le nom du fichier peut être défini en utilisant la directive CustomLog. D'autres traces peuvent être définies pour différents hôtes virtuels.

### Apache HTTP Server