Apache 2
Transcription
Apache 2
Apache G25490 6/06/03 11:37 Page 3 Jean-Marie Culot guide de référence Apache 2 © Éditions OEM (Groupe Eyrolles), 2003, ISBN 2-7464-0490-7 Apache G25490 6/06/03 11:37 Page 115 Chapitre 7 La configuration Apache G25490 6/06/03 11:37 Page 117 Dans ce chapitre, nous allons apprendre comment π personnaliser le serveur que nous mettons en place, π établir la structure et la présenter à l’extérieur. Dans le chapitre précédent sur l’installation, nous avons construit le building, terminé le gros œuvre. Mais il nous faut mettre la plaque sur le seuil, signaler qui va assurer l’accueil, quels services nous allons fournir. Définir cette implantation particulière d'Apache comme étant celle qui va assurer le service du site de Marie Gobaye. Administrateur & développeur Rappelons la distinction entre serveur et site. Le site est un ensemble de documents HTML et de scripts ; c'est un contenu d'informations à disposition des clients. Il est développé par des personnes qui récoltent l'information propre au site, l'organisent, la stockent et la formatent. C'est une activité que vous envisagez peut-être de pratiquer, mais elle est hors de notre champ. Le serveur est un programme qui écoute les demandes adressées au site et s'efforce de livrer au client les informations de ce site. Le serveur peut soutenir l'activité d'un site ou de plusieurs sites. Apache G25490 118 6/06/03 11:37 Page 118 Guide de référence Apache 2 Votre rôle d'administrateur est de piloter ce programme. Vous le faites, pour l'essentiel, à partir d'un seul document : le fichier de configuration. C'est votre centre de commandement. En Windows, c'est le document intitulé httpd.conf situé en …/Apache2/conf/. Pour l'essentiel, le livre que vous avez entre les mains parle de ce seul document puisqu'il est le recueil des directives à appliquer au programme. Votre rôle est d'en ajouter, d'en modifier, de les paramétrer. Il sera aussi de vérifier dans les journaux d'exploitation si vos interventions en httpd.conf ont été pertinentes ! Situons, dans la structure, les répertoires majeurs : π /bin : le programme exécutable, Apache.exe π /conf : le fichier de configuration, httpd.conf π /htdocs : le(s) site(s) mais aussi : π /modules : les modules appelés de manière dynamique π /manual : la documentation Apache G25490 6/06/03 11:37 Page 119 Chapitre 7 : La configuration Configuration globale Rendez-vous à l'intérieur du fichier de configuration : Ω Soit en ouvrant Démarrez / Program Files / Apache Group / Apache2 / conf / httpd.conf avec un éditeur de texte classique, par exemple Notepad. Ω Soit, si l'installation d'Apache en Windows vous donne le service de contrôle de configuration, à partir du menu de démarrage : Apache HTTP Server 2.0.xx / Configure Apache Server / Edit the httpd.conf configure file. Soyez prudent si vous craignez la distraction ; pour éviter les désagréments d’une manipulation intempestive, effectuez une copie du fichier, par exemple en Copie_de_httpd.conf. Les concepteurs du système ont prévu un paramétrage par défaut lors de l’installation, selon des options discutées avec la vaste communauté des utilisateurs de par le monde. Notre démarche sera de prendre connaissance des valeurs par défaut attribuées à ces directives. Un rappel sur la structure du document, en 3 sections. Les deux dernières font référence à la formule des hôtes virtuels pour la gestion de sites différents. Considérons à ce stade-ci que nous n’avons à configurer qu’un serveur simple n’ayant à traiter qu’une seule adresse IP et un seul nom de site. π « Global environment », présentant les directives qui contrôlent les activités d’Apache dans leur ensemble. π « Main Server configuration », présentant les directives du serveur principal, ou en l’absence d’hôtes virtuels, du serveur unique. π « Virtuals hosts », section susceptible de recevoir un ou plusieurs cadres (containers) comportant chacun les directives pour des sites distincts. Ω Vérifions : toute la troisième section est en commentaire. Une installation « par défaut » ne comporte pas d’hôtes virtuels. Repérons cependant en passant en quoi des hôtes virtuels pourraient se singulariser : par un nom d’administrateur, surtout par un nom de serveur et une racine de site particuliers, et enfin par des fichiers de maintenances propres. 119 Apache G25490 120 6/06/03 11:37 Page 120 Guide de référence Apache 2 « Je vous laisse ma carte » Directive ServerName Description Le nom et le port que le serveur s'attribue à lui-même Syntaxe ServerName nom_de_domaine [:port] Exemple ma_sorciere.com www.marie_gobaye.com:80 Cette directive donne le nom et le port qui permettent au serveur de s’identifier lui-même. Il semble curieux qu’il faille signaler au serveur son propre nom, son identifiant, unique par définition, comme s'il ne connaissait pas sa propre identité. Ω Vérifions dans le fichier de configuration : vous trouvez la directive dans la deuxième section, avec son argument garni. Sous Windows, ce sera avec le nom de votre site, celui que l’installateur Windows vous a demandé d’introduire. Sous Linux, ce sera avec Localhost, nom attribué par l’installation. Mais peut aussi y figurer une adresse IP. # #ServeName 127.0.0.1 ServerName www.marie_gobaye.com Première observation : le serveur a donc un nom pour chacune de ses implantations, alors que d’autres programmes, comme Word, Excel,… n’ont pas à être renommés Word-Machin ou Excell-chose. Il faut donc distinguer entre un exécutable qui s'appelle apache.exe ou httpd, et l'application locale du serveur auquel un nom particulier est donné. Deuxième observation : le nom du serveur est associé à celui de votre site. Ce qui à la fois est éclairant, mais peut dérouter. En effet, l’administrateur que vous êtes traite les deux objets comme bien différents, un serveur d’une part, un programme, et un site d’autre part, un Apache G25490 6/06/03 11:37 Page 121 Chapitre 7 : La configuration stockage de données ; et ces deux objets sont localisés distinctement dans votre répertoire Apache2. Il est vrai que le client, lui, n’a que faire de cette distinction : il s’adresse simplement à un site dont il attend une réponse, et cet ensemble n’a pour lui qu’un nom. Si la directive existe, c’est pour une nécessité technique. Apache utilisera cette directive lorsqu’il devra composer des URL se référant à lui-même, comme dans le cas des redirections, des renvois de demandes : le serveur doit alors composer sa propre URL à placer dans l'en-tête de réponse et trouvera pour ce faire son nom dans la directive. Autre cas de figure. Supposons que dans le répertoire des noms de domaines (DNS), à telle adresse IP se trouvent associés deux noms différents pour le même site, www.marie_gobaye.com et www.gobaye.com ; votre client s’adresse à vous avec la deuxième dénomination. Mais vous préférez utiliser la première, et la renvoyer, elle, dans les en-têtes de réponses, pour obtenir désormais du client des URL avec la première dénomination. Vous choisissez alors d’attribuer www.marie_gobaye.com au ServerName. Privilégier la source Directive UseCanonicalName Description Indique au serveur où il doit trouver son nom et son port Syntaxe UseCanonicalName on|off|DNS Exemple UseCanonicalName on (valeur par défaut) Cette directive est à associer à la précédente. Si UseCanonicalName est positionné à on, c'est la formule présentée plus haut qui fonctionne : le serveur prend son nom et son port dans ServerName. Mais positionné à off, c'est dans l'en-tête de la requête qu'il le prendra. Pourquoi cette variante ? Les conventions HTTP/1.1 prévoient que plusieurs sites peuvent être associés à une seule adresse IP. Comment reconnaître le bon site, celui que vise le client ? Réponse : en le lui demandant ! 121 Apache G25490 122 6/06/03 11:37 Page 122 Guide de référence Apache 2 C’est dans la requête formulée par le browser qu’Apache va trouver celui des sites qui est visé. Comment forcer Apache à se servir du site donné par le client plutôt que du ServerName ? A vous de le lui dire par la directive : UseCanonicalName positionnée à off. ServerName peut aussi recevoir comme premier argument une adresse IP. C’est la formule que nous pourrions utiliser, en inscrivant l’adresse désignant conventionnellement le site lui-même : 127.0.0.1 ServerName peut recevoir un second argument : le port. Le port est le type de service pour lequel le serveur est sollicité : le transfert de fichiers (FTP), la messagerie,… Quand il s’agit de sites Web sous protocole HTTP, la valeur par défaut est 80, et quand il s’agit de sites Web sécurisés sous protocole HTTPS, la valeur par défaut est 443. On peut aussi définir le port comme un canal de communication particulier lorsque deux ordinateurs (deux adresses) se communiquent. Analogie. Représentons-nous les ports comme des fréquences radio. Votre poste de radio est en mesure d’écouter des programmes différents, sur autant de fréquences. Vous aurez même préenregistré des fréquences pour vos tapages ou vos murmures favoris. Le serveur interroge des ports comme votre radio interroge Nostalgie ou Veronica. Autre analogie, dans le fil de celles utilisées plus haut. Vous organisez votre département et comme un service d’administration publique, vous souhaitez qu’il réponde à différents types de demandes : vous prévoyez à l’accueil autant de guichets qu’il y a de types de demandes, par exemple pour la population, le cadastre, l’assistance publique, le tourisme, etc. Chaque guichet comporte son libellé : c’est notre numéro de port. Et derrière son guichet, chaque préposé prend note attentivement (?) des requêtes qui lui sont soumises. Apache G25490 6/06/03 11:37 Page 123 Chapitre 7 : La configuration Choisir le port Au ServerName, vous n’attribuez cependant qu’un seul port. Au libre choix ? À condition de vous mettre d’accord avec les browsers de vos clients. Effectivement, lorsque vous introduisez une requête sur votre browser, il vous suffit d’introduire un nom de site tel que www.mariegobaye.com. Le browser déduit de la structure du nom qu’il s’agit d’une requête vers le Web, que le port est standard et enfin que vous souhaitez consulter la racine de l’arborescence du site ; il supplée : π en préfixant la demande par http:// : http://www.mariegobaye.com π en suffixant le port par défaut : http://www.mariegobaye.com:80 π en suffixant une seconde fois par la barre oblique « / » : http://www.mariegobaye.com:80/ Gardons la valeur par défaut : 80. Vous pourriez choisir un port en dehors des valeurs par défaut des protocoles, et lancer vos requêtes depuis votre browser en les suffixant par ce numéro de port. La valeur 8080 est fréquemment utilisée pour des sessions de test ou de maintenance. « Je vous écoute » Directive Listen Description Indique les adresses et ports que le serveur doit « écouter » Syntaxe Listen [adresse IP:]port Exemple Listen 80 Listen 127.0.0.1:80 123 Apache G25490 124 6/06/03 11:37 Page 124 Guide de référence Apache 2 Si les deux indications du ServerName et du UseCanonicalName étaient orientées vers les réponses aux clients, il faut évidemment permettre au serveur de remplir une de ses missions de base : écouter ! Au démarrage, Apache, installé sur telle machine disposant d’un nombre quelconque d’interfaces TCP/IP avec le réseau, écoute toutes les entrées transmises par toutes ces interfaces. Il écoute toutes les adresses attribuées à cette machine, et peut recevoir des sollicitations pour plusieurs services, pour du Web, pour du courrier électronique, du FTP, etc. Il est vraisemblable que vous vouliez lui confier un nombre précis de services, et pour une liste déterminée de sites. Vous allez donc lui visser un filtre dans les oreilles… ou selon notre analogie, dans votre salle d’accueil, lui réserver un nombre précis de guichets. Vous lui imposez, par la directive Listen, une sélection. Apache n’écoutera que les requêtes venant sur le port ou les ports spécifiés, ou venant sur les combinaisons d’adresses-ports spécifiées. La directive comporte comme argument, optionnellement une adresse IP, obligatoirement un numéro de port. Et vous pouvez rédiger plusieurs lignes Listen. Exemple Vous voulez que votre serveur accepte toutes les adresses, mais sur les deux seuls ports 80 et 8000. Alors : Listen 80 Listen 8000 Ou si vous ne permettez l’accès qu’à deux couples d’adresses-ports, alors : Listen 192.70.2.1 :80 Listen 192.70.2.2 :8000 Apache G25490 6/06/03 11:37 Page 125 Chapitre 7 : La configuration La question sera à reprendre lorsque nous aborderons la formule des hôtes virtuels, et la possibilité de combiner non seulement des adresses et des ports, mais aussi des noms de domaines. Et donc l’aptitude d’Apache à gérer plusieurs sites Web. Réserve et discrétion Directive ServerTokens Description Contrôle le contenu de l'en-tête de réponse. Syntaxe ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full Exemple ServerTokens Full (valeur par défaut) Voici donc notre serveur ayant acquis une identité ; elle lui sera notamment utile dans l’organisation de ses sous-traitances. Mais il semble tout indiqué que le serveur mentionne des informations le concernant dans ses réponses à ses clients. Par défaut, l’en-tête de la réponse comporterait le nom du serveur, son numéro de version et le système d’exploitation qui l’héberge. Cet en-tête pourrait véhiculer, en plus, des indications sur les programmes annexés au serveur, rédigés en PHP,… Mais si la première préoccupation est le service, la seconde est la prudence. Ce n’est pas une bonne idée de donner trop d’informations ! Sait-on l’usage qui en sera fait dans ce bas monde ? Si bien que la directive prévue dans ce contexte l’est pour restreindre ce comportement par défaut. Les exemples qui suivent parlent d’eux-mêmes : Paramétrage Résultat ServerToken Productonly Apache ServerToken Minimal Apache/2.0.43 ServerToken OS Apache (Windows) ServerToken Full (par défaut) Apache/2.0.43 (Windows) click/2.0.0 125 Apache G25490 126 6/06/03 11:37 Page 126 Guide de référence Apache 2 « Contactez-moi en cas de problème » ServerSignature et ServerAdmin Lorsque Apache renvoie au client un document qu’il a rédigé de sa propre initiative, il peut ajouter en bas de message une information sur lui-même ou sur un destinataire d’email. ServerSignature On/Off permet ou non l’ajout de cette information en bas de message ServerAdmin [email protected] désigne le correspondant à contacter à propos de l’incident. « Voici mes coordonnées » ServerRoot Attentif à vous faciliter la vie, l’installateur d’Apache a situé les différents fichiers qui lui sont nécessaires aux emplacements par défaut. Pour Linux, nous l'avons vérifié lors de l'installation. Mais vérifions la valeur donnée par défaut à cette directive dans notre fichier de compagnie : httpd.conf. Notez l'absence de barre oblique en finale de chemin. # # ServerRoot : The top of the directory tree under which the server's configuration, error, and log files are kept. # # Do NOT add a slash at the end of the directory path. # ServerRoot "C:/Program Files/Apache Group/Apache2" Ω Vérification croisée : c’est aussi ce que vous observez en naviguant dans l’arborescence de vos répertoires sur votre disque C: /… Tous les fichiers nécessaires à Apache ont été placés sous ce répertoire. L’installateur s’est en effet conformé à votre souhait lorsqu’il vous a proposé, sur l’écran de dialogue, de confirmer l’emplacement par défaut. Apache G25490 6/06/03 11:37 Page 127 Chapitre 7 : La configuration Directive ServerRoot Description Répertoire de base pour l'installation du serveur. Syntaxe ServerRoot répertoire Commentaire Ce répertoire devrait comporter aussi les répertoires de configuration et de journalisation. Les autres répertoires sont relatifs à cette racine. Exemple /home/la_grotte/ Il vous est donc loisible de modifier cette disposition et d’indiquer un autre emplacement. Soyez attentif, si vous le faites, à ne pas rajouter la barre oblique en finale de chemin. Seconde consigne d’importance radicale : conformez-vous aux règles d’au torisation d’accès et de propriété prévues par votre système d’exploitation. Placez vos répertoires et vos fichiers de manière à ce qu’ils soient effectivement accessibles aux utilisateurs que vous ciblez, et à eux seuls. Il y aura lieu de distinguer à ce sujet, en Linux, les fichiers accessibles au gestionnaire root et ceux qu’il faut rendre accessibles à d’autres gestionnaires de site et, par ailleurs, de distinguer les fichiers gérant les mécanismes du serveur et ceux constituant le site. Enfin, il faut accorder des autorisations différentes à des fichiers du site selon que vous prévoyez un simple accès de consultation ou un accès d’enregistrement de données. Localisation Les autres directives concernent l’emplacement des fichiers de site et de travail d’Apache. Ω Voyez en httpd.conf, la valeur attribuée à LockFile (sans barre oblique en tête) : ErrorLog logs/error.log 127 Apache G25490 128 6/06/03 11:37 Page 128 Guide de référence Apache 2 Ω Vérifiez dans la structure de vos répertoires avec Windows Explorer. Vous trouvez un répertoire nommé logs, et dans ce répertoire le fichier error.log où Apache journalisera les incidents. Observation : si vous n’introduisez pas la barre oblique en tête du chemin, celui-ci est considéré comme relatif. Relatif à quoi ? Au ServerRoot. Ainsi l’indication logs/error.log placera ce fichier journal en C:/Program Files/Apache Group/Apache2/logs/error.log. Si vous aviez introduit la barre oblique en tête, l’emplacement aurait été choisi indépendamment de la racine du serveur. Par exemple, /logs/error.log vous aurait placé directement sur la racine de l'arborescence générale. Oui, mais… ? Q. Quel nombre limite de fichiers logs peut-on prévoir ? R. Vous pouvez prévoir des fichiers distincts par hôte virtuel, mais aussi prévoir des fichiers qui stockeraient séparément le texte seul et, plus gourmandes en place, des images. Mais encore... La prise de connaissance des premières directives est l'occasion de tester l'utilité de la carte de référence : « Apache Quick Reference card ». Vous vous la procurerez sur le site suivant : http://www.refcards.com Imprimez-la recto/verso et pliez-la en 3. Vous disposez là de tout le paramétrage d’Apache. Au fil de votre progression, vous pourriez cocher les rubriques qui vous seront devenues familières. La version disponible (Revision 1.6, due à Andrew Ford) au moment de la rédaction de cet ouvrage correspondait à la version précédente d’Apache, la Apache G25490 6/06/03 11:37 Page 129 Chapitre 7 : La configuration version 1.3.6. Sans doute disposerez-vous de la révision correspondant à la version 2.0.x d’Apache. En plus des tutoriels mentionnés dans le manuel du site d'Apache, des introductions à la configuration d'Apache sont disponibles sur d'autres sites, comme Apachefrance. Voir ainsi un article de Rael Dornfest, An Amble Through Apache Configuration à l’adresse : hwww.onlamp.com (site O'Reilly) 129