Installation et Configuration du serveur web Apache


précédentsommairesuivant

III. Configuration

III-A. Configuration sous Windows

En général, sous Windows la configuration par défaut est suffisante. L'édition du fichier de configuration est gérée par la plate-forme choisie. Cependant si une application réseau utilise déjà le port 80, il faudra modifier le fichier de configuration d'Apache et choisir un numéro de port qui n'est pas encore utilisé par une application existante sur la machine ou encore changer le port de l'application en question.
Pour mieux comprendre les rouages de la configuration d'Apache, lisez la configuration sous Linux juste en dessous, elle s'applique à quelques détails près à celle sous Windows.

III-B. Configuration sous Linux

III-B-1. Fichier de configuration

Le nom donné au fichier de configuration varie selon les distributions. Il est généralement désigné par httpd.conf (sous Fedora, Redhat, etc. ) ou par apache2.conf (sous Debian, Mandrake, etc.)
Il est situé dans le répertoire /etc/httpd2/conf ou /etc/apache2/conf, selon les distributions.

Pour faire la configuration, il est conseillé de se "logguer" en tant qu'utilisateur et non en tant que root, afin de prévoir tous désagréments dus aux erreurs indésirées. Il faudra donc accorder les droits de lecture et d'écriture aux utilisateurs requis pour la configuration. On pourra le leur enlever, une fois la configuration terminée.
Pour accorder les droits: chmod 777 /etc/httpd/conf/httpd.conf
Pour enlever les droits: chmod 644 /etc/httpd/conf/httpd.conf: c'est suffisant pour assurer la sécurité de notre serveur, du moment où il faut permettre aux utilisateurs de le faire fonctionner, c'est-à-dire exécuter ce fichier. Il est aussi conseillé que tous les fichiers, intervenants dans la configuration et dans l'hébergement Internet ou Intranet, soient dans le mode 755.

Pour faire plus simple, il est possible d'utiliser la commande sudo avec la syntaxe suivante: sudo nom-de-la-commande-à-éxécuter
password: taper-le-mot-de-passe-du-root

III-B-2. Directives de configuration les plus utiles

La configuration d'Apache prend en compte beaucoup d'éléments qui peuvent être regroupés en trois grandes sections. Mais, pour chaque section, présentons les élements les plus essentiels. Par souci de cohérence, le paramétrage doit se faire dans l'ordre indiqué.
Il convient aussi de remarquer le fichier de configuration d'Apache comporte des commentaires, qui présentent et explicitent brièvement en anglais les différentes directives de configuration. Ce tutoriel vient donc en complément à toute la documentation sur Apache déjà existante.
Dans ce tutoriel, les directives de configuration concernent la version 2 d'Apache, elles ne s'appliquent pas pour la plupart d'entre elles à la version 1.3..

III-B-2-a. Section 1: Environnement global
  DIRECTIVES DE CONFIGURATION   FONCTIONNALITES
ServerRoot "/etc/httpd": indique le répertoire des fichiers de configuration d' Apache. Ici, ce répertoire est "/etc/httpd" . Il indique au serveur que les autres fichiers de configuration se trouvent dans ce répertoire. Par exemple, si un script de configuration se paramètre avec modules/nom_module, cela voudrait dire qu'il se paramètre avec /etc/httpd/modules/nom_module. Bien entendu, ce répertoire peut différer d'une installation à une autre.
En d'autres termes, c'est le répertoire racine du serveur, le répertoire de référence lorsqu'un chemin est relatif (peu importe la directive et l'endroit).
PidFile run/httpd.pid  indique le fichier du processus qui désigne l'exécution d'Apache. C'est dans ce fichier qu'est enregistré le numéro du processus (Pid : Process Identifier )  en cours d'exécution d' Apache. Il est crée et paramétré par le programme d'installation. Il n'est cité ici qu'à titre indicatif.
Timeout 120  désigne, en secondes le temps mort maximal requis entre une émission et une réception. Ici, par exemple, ce temps est mis à 120s.
KeepAlive Off  activation ou désactivation du mode de gestion des connections persistantes et/ou continues. On pour activer, Off pour désactiver. Si on le met à On, les deux paramètres qui suivent seront pris en compte par le serveur, pendant son exécution.
MaxKeepAliveRequests 100  désigne le nombre maximal de requêtes à autoriser pendant une connexion persistante. 0 est équivalent à l'infini. Plus il est élevé, plus le serveur est performant. Mais cela doit tenir compte des caractéristiques matérielles du serveur (vitesse du processeur, capacité de la mémoire RAM, etc.)
KeepAliveTimeout 15  désigne, en secondes, le temps séparant deux requêtes successives venant d'un même poste client pendant la même connexion.
Listen 80 indique le port d'écoute. Par défaut, celui d' Apache est le 80. Il est important de vérifier si ce port n'est pas déjà occupé par une autre application, auquel cas, le serveur Apache ne pourra fonctionner convenablement. Toujours est-il qu'on peut changer ce numéro avec une valeur plus grande, pour être à l'abri.
Il est même possible d'y mettre plusieurs numéros de ports d'écoute, et préciser une seule adresse IP, afin de restreindre à une seule carte réseau (pour les machines qui disposent de plusieurs interfaces réseaux.).
LoadModule alias_module modules/mod_alias.so charger les différents modules se trouvant dans le répertoire indiqué plus haut. Dans les versions antérieures d'Apache, ce paramètre porte le nom de AddModule. Dans cet exemple, il s'agit de charger le module alias_module qui se trouve dans le répertoire modules (/etc/httpd/modules) sous le nom mod_alias.so. Par défaut, une liste consistante de modules est déja chargée.
Include conf.d/*.conf pour inclure tous les fichiers d'extensions .conf se trouvant dans le répertoire conf.d( /etc/httpd/conf.d ). On peut créer un fichier externe de configuration dans ce répertoire (pour, par exemple, ajouter d'autres paramètres au serveur) et le désigner par fichier_exemple.conf. Il sera pris en compte pendant le fonctionnement du serveur. 
User nobody désigne l'utilisateur sous qui le serveur démarrera. Dans cet exemple, il s'agit d'un utilisateur dejà existant sur notre système, et qui a les droits requis.
Un changement d'identité est opéré lorsque c'est l'utilisateur privilégié (root) qui le lance. Sécurité oblige. D'ailleurs, un père Apache est lancé en tant que root afin de s'approprier le port 80 (mesure non appliquée s'il s'agit d'un port non privilégié). Ce sont ensuite chacun des fils ( nombre configurable dépendant du MPM ) qui seront lancés avec les paramètres user/group, pour des raisons de sécurité évidentes.
Group nobody désigne le groupe le serveur sous qui le serveur démarrera (analogue à user sur le groupe).
III-B-2-b. Section 2: Configuration du serveur
DIRECTIVES DE CONFIGURATION    FONCTIONNALITES
ServerAdmin   désigne l'adresse e-mail de l'administrateur. En Intranet, cette adresse mentionnée à titre d'exemple est la mieux indiquée. Pour un serveur qui devra fonctionner sur Internet, il est préférable de mentionner l'adresse e-mail de l'administrateur de ce serveur, par exemple .
ServerName nom_serveur indique le nom du serveur. On pourrait aussi y mettre son adresse (par exemple : 192.168.2.12). Le nom du serveur n'est valide que si on a un serveur DNS fonctionnel. Il est souhaitable de mettre l'IP, ou même de commenter ce script ( Avec # ). 
UseCanonicalName Off gère le mode de construction des référencements vers les sites à partir des noms des serveurs et de leurs ports.  S'il est désactivé (Off), le serveur Apache fait la construction à partir des données (Nom du poste et Port) envoyées par le poste client(en-tête HTTP "host:"); s'il est activé (On), le serveur Apache se sert de ce qui indiqué dans ServerName pour faire ce référencement.
DocumentRoot "/var/www/domaine" c'est le répertoire qui contient les sites Web hébergés sur le serveur. On peut le changer, où y mettre tous les sites Web que le serveur doit héberger. Toutefois, on peut faire d'autres hébergements, grâce aux VirtualHosts, que nous verrons dans la Section 3. Il est préférable que les droits d'accès aux DocumentRoot soient à 755 pour les rendre accessibles à tous les utilisateurs, sans qu'ils puissent y modifier quoique ce soit. 
<Directory  "nom_répertoire"  
     ... 
</Directory> 
dans ces balises paramétrées par un répertoire, on accorde, au répertoire indiqué, des droits d'accès et de fonctionnement 
<Directory "/var/www/domaine">
Order allow,deny
Allow from all
</Directory>
 attribue les droits d'accès à tous sur le répertoire  /var/www/domaine. On aurait pu l'allouer à un groupe spécifique en modifiant Allow from all en Allow from <groupe> ; ou  un réseau d'adresse IP, par exemple 192.168.0.1/24. 
<IfModule "nom_module"
   ...
</IfModule> 
 pas très nécessaire dans une configuration de base, ces balises permettent d'indiquer au serveur des instructions précises à exécuter,   lorsqu'il fait appel à un module donné.
DirectoryIndex index.html index.shtml index.php  définit les fichiers qui s'exécutent automatiquement lorsqu'on entre dans un répertoire. C'est fait par ordre de priorité. Ici, lorsque le serveur ouvre un répertoire, il exécute index.html , s'il n'existe pas un fichier de ce nom, exécute index.shtml et ainsi de suite.
Enfin, si aucun index de repertoire n'est trouvé, Apache décidera, ou non, d'afficher le contenu de celui-ci (dépendant d'une option appelée Indexes)
AccessFileName .htaccess donne la priorité d'ouverture au fichier .htaccess sur les autres quand on accède à un répertoire. Le fichier .htaccess contient généralement un script pour une authentification et son utilisation est régie par la directive AllowOverride.
<Files ~ "^\.ht"
  Order allow, deny
 Deny from all
 </Files>
comme la balise <ifmodule>, cette balise permet d'allouer des droits à un ou plusieurs fichiers , ou à un groupe de fichiers ayant une caractéristique donnée. Dans cet exemple, la caractéristique porte sur les fichiers d'extension .ht
HostnameLookups Off c'est le mode d'enregistrement des clients. Quand il est activé ( On ), le client est enregistré par son nom. En mode Off, l'enregistrement est fait sur l'adresse IP. 
ErrorLog logs/error_log indique le fichier du journal des erreurs. Ici, il s'agit de /etc/httpd/logs/error_log
LogLevel warn  mesure de contrôle du nombre de messages enregistrés dans ErrorLog. Plusieurs valeurs possibles :  debug, info, notice, warn, error, critic, alert, emerg.
CustomLog logs/access_log combined  indique le fichier du journal des accès au serveur. Il peut être paramétré avec plusieurs valeurs (common , agent, referer, combined, etc.). Ici, le paramètre choisi est combined, ce qui veut dire que les messages générés par les accès sur les hôtes virtuels (Virtualhosts que nous verrons dans la troisième section) seront couplés avec ceux au serveur principal. La valeur common, indique que si un tel journal n'a pas été défini spécifiquement dans les Virtualhosts, les accès à ceux-ci sont aussi enregistrés dans ce journal. 
ServerSignature On c'est un mode qui permet d'ajouter aux journaux (d'erreurs, d'accès, de téléchargements, d'opérations quelconques effectuées sur le serveur) des informations commandées par ServerTokens. Pour les accès par hôtes virtuels, le nom de l'hôte virtuel concerné est aussi renvoyé. Il y a trois valeurs possibles, contrairement aux autres modes : On et Off pour activer et désactiver, et Email, qui active, mais renvoie les informations du serveur sur l'email de l'administrateur indiqué par ServerAdmin
Alias /icons/ "/var/www/icons/" définit un alias pour identifier un répertoire donné. Ici, on dit au serveur que dans son fichier de configuration, le répertoire /icons/ indique le répertoire /var/www/icons/.N.B.: Il est beaucoup recommandé d'utiliser ce style pour paramétrer des répertoires hébergeant des sites, même s'il n'a pas les mêmes commodités offertes par les hôtes virtuels.
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" idem à la commande Alias; mais appliqués aux commandes. Les fichiers du répertoire /var/www/cgi-bin/ sont des commandes reconnus par le serveur Apache.
AddLanguage de .de pour ajouter une langue au serveur. Ceci pour permettre à l'utilisateur de lire dans son navigateur les pages Web dans sa langue. Les langues sont désignées par des codes qui leur ont été attribués par convention: fr pour le français, en pour l'anglais, ja pour le japonais, etc. Dans cet exemple, les fichiers d'extension .de seront affichés en Allemand (code de).
Ce paramètre intervient dans la négociation HTTP, qui est régie par mod_negociation. Le client doit aussi être compatible, mais,avec les récentes versions, on peut considérer cela comme acquis. IL en est de même pour le paramètre suivant: LanguagePriority.
LanguagePriority en fr ca cs da de el eo es et he hr it définit l'ordre de priorité des langues qui ont été préalablement ajoutées. Ici, c'est d'abord l'anglais, puis, le français et ainsi de suite. 
AddType application/x-gzip .gz .tgz  pour ajouter des applications au serveur. Celui-ci pourra les reconnaître et les exécuter sur les fichiers indiqués. Dans l'exemple ci-contre, les fichiers d'extension .gz ou .tgz doivent être exécutés (ou ouverts par l'application x-gzip qui est dans le répertoire (/etc/httpd) /application
ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var indique le fichier de message à ouvrir en cas d'erreur. Ici, on dit que si l'erreur de code 400 est commise, affichée le message du fichier ( /etc/httpd ) /error/HTTP_BAD_REQUEST.html.var. Ceci permet de personnaliser les messages d'erreur. On crée un fichier comportant le message désiré , puis on l'attribue à un numéro d'erreur.
La syntaxe ErrorDocument {code} "{message}" est aussi autorisée.

N.B : Les valeurs, par défaut, fournies dans le fichier de configuration sont déjà fonctionnelles. Les commentaires ci-dessus viennent pour un souci de compréhension et d'assistance , en cas de modification de ces valeurs.

III-B-2-c. Hôtes virtuels

Les hôtes virtuels sont des identifiants utilisés pour indiquer les différents sites hébergés sur un serveur. Cela permet l'hébergement de plusieurs sites Web sur un seul serveur.
Ce qu'il faut surtout comprendre, c'est que le virtualhost est en fait, un serveur virtuel qui est crée sur le serveur réel. Le site web porte donc le nom de ce serveur virtuel. A cela, il faut aussi ajouter que le virtualhost peut aussi porter sur le port du serveur web.
On a donc des cas de virtualhosts suivants: http://www.sigui.com/, http://guy.sigui.ci:3001/

Les sites à indiquer en virtualhost doivent être aussi déclarés sur le serveur DNS du réseau ou dans les fichiers hosts des machines clientes.

Dans l'exemple ci-dessous , on crée un hôte virtuel qui indique le site Web http://www.site1.domaine/ dont les fichiers sont dans le répertoire /var/www/domaine/site1 . Cet hôte a ses journaux qui lui sont propres.  Par souci de compréhension, cet hôte est propre à un fonctionnement en intranet ; toutefois avec internet, c'est idem.  

 
Sélectionnez

<b>NameVirtualHost <i>*: 80</i></b><br/>
<b><VirtualHost <i>*:80</i></b>&gt;<br/>
	<b> ServerAdmin <i>root@localhost</i></b><br/>
	<b> DocumentRoot <i>/var/www/domaine/site1</i></b><br/>
	<b> ServerName <i>www.site1.domaine</i></b><br/>
	<b> ErrorLog <i>logs/www.site1.domaine_log</i></b><br/>
	<b> CustomLog <i>logs/www.site1.domaine_log common</i></b><br/>
<b><VirtualHost&gt;</b><br/>
<br/>

A titre explicatif de ce qui précède:

DIRECTIVES DE CONFIGURATION    FONCTIONNALITES
NameVirtualHost permet d'indiquer au serveur web Apache que sur le (s) couple (s) IP:port, on a un virtualhost.
Par exemple NameVirtualHost 192.168.1.10:2000 montre à Apache l'existence d'un virtualhost à cette adresse IP et avec ce port.
Dans notre cas ci-dessus, en remplaçant l'IP par le jocker *, on indique qu'il existe des virtualhosts utilisant ce port. On n'a donc plus besoin de déclarer chaque fois des virtualhost au serveur. L'utilisation du joker est donc la meilleure.
En résumé, NameVirtualHost sert d'aiguilleur en fonction de la provenance de la requête.
Virtualhost On y précise l'URL du site qui sera hébergé sur le virtualhost. Mais ce n'est pas obligatoire, on peut mettre le joker comme dans l'exemple .
Sa fonction principale est d'ouvrir les balises dans lesquels toute la configuration de l'hôte virtuel sera définie .
ServerName indique l'URL du site Web hébergé (le virtualhost).
ServerAdmin
DocumentRoot
ErrorLog
CustomLog
mêmes fonctionnalités que celles du serveur principal, pour l'hôte virtuel. 


N.B :
- On peut définir les hôtes virtuels dans un autre fichier, virtualhosts.conf par exemple, et l'inclure dans le fichier de configuration avec include chemin_acces/virtualhost.conf. Ou tout simplement créer ce fichier dans /etc/httpd/conf.d/; il sera automatiquement pris en compte grâce à la commande include conf.d/*.conf que nous avons plus haut.
- Pour un fonctionnement en intranet, si le réseau ne dispose pas d'un serveur DNS, les sites Web doivent être déclarés dans le fichier hosts des différents postes du réseau susceptibles de consulter le site. Sous Linux il s'agit du fichier /etc/hosts et sous Windows : C:\WINDOWS\system32\drivers\etc\hosts.

Cette déclaration se fait de façon suivante:

 
Sélectionnez

192.168.2.12   http://www.site1.domaine/   site1<br/>
192.168.2.12   http://www.site2.domaine/   site2<br/>
192.168.2.12   http://www.site3.domaine/   site3<br/>
etc.<br/>

Dans cet exemple, 192.168.2.12 est l'adresse IP du poste qui a le serveur Apache dans l'intranet.


précédentsommairesuivant

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Guillaume Sigui. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.