Linux WWW-HOWTO M. Poet, poet@linuxports.com; Version française par Arnaud Launay, alaunay@free.fr v0.85, 21 Août 1999. Ce document contient des informations sur la mise en place de services WWW sous Linux (à la fois serveur et client). Il n'est pas prévu pour être un manuel détaillé mais une vue d'ensemble et un bon pointeur vers des informations complémentaires. ______________________________________________________________________ Table des matières 1. Introduction 1.1 Copyright 1.2 Échos 1.3 Nouvelles versions de ce document 2. Configurer un client WWW (antiquité) 2.1 Survol 3. Lynx 3.1 Où l'obtenir ? 4. Emacs-W3 4.1 Où l'obtenir ? 5. Netscape Navigator/Communicator 5.1 Des versions et des options différentes. 5.2 Où l'obtenir ? 5.3 Installation 6. Mettre en place un serveur WWW 6.1 Survol 7. Apache 7.1 Où l'obtenir ? 7.2 Compiler et Installer 7.3 Configurer 7.4 Héberger des serveurs web virtuels 7.4.1 Hébergement virtuel basé IP 7.4.2 Hébergement virtuel par IP partagée 7.5 Scripts CGI 7.6 Répertoires Web des Utilisateurs 7.7 Mode démon contre mode Inetd 7.8 Autoriser les commandes put et delete 7.9 Authentification de l'Utilisateur / Contrôle des Accès 7.10 su-exec 7.11 Imagemaps 7.12 SSI/XSSI 7.13 Système modulaire 8. Ajouts au serveur web 9. Documents plus avancés 9.1 Livres de chez O'Reilly & Associates 9.2 Internet Request For Comments (RFC) ______________________________________________________________________ 11.. IInnttrroodduuccttiioonn La plupart des gens sont passés sous Linux car ils cherchaient une plateforme véritablement _a_d_a_p_t_é_e _à _l_'_I_n_t_e_r_n_e_t. De plus, des institutions, des universités, des organisations à but non lucratif, et de petites entreprises désirent lancer des sites internet à peu de frais. C'est ici que le WWW-HOWTO intervient. Ce document explique comment configurer les clients et les serveurs pour ce qui jouit de la plus grande audience sur le net - _L_e _W_o_r_l_d _W_i_d_e _W_e_b. Tous les prix indiqués dans ce document sont en dollars US. Ce document suppose que vous utilisez Linux sur une plateforme Intel. Les instructions et les produits disponibles peuvent varier de plateforme en plateforme. Il y a de nombreux liens pour charger les logiciels dans ce document. Utilisez autant que possible un site miroir pour tranférer plus rapidement et minimiser la charge du serveur principal. 11..11.. CCooppyyrriigghhtt Ce document est Copyright (c) 1999 par M. Poet. Ce document est Copyright (c) 1997 par Wayne Leister. L'auteur original était Peter Dreuw (toute version avant 0.8). Cette documentation est libre, vous pouvez la redistribuer et/ou la modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation (version 2 ou bien toute autre version ultérieure choisie par vous). Cette documentation est distribuée car potentiellement utile, mais SSAANNSS AAUUCCUUNNEE GGAARRAANNTTIIEE, ni explicite ni implicite, y compris les garanties de ccoommmmeerrcciiaalliissaattiioonn ou dd''aaddaappttaattiioonn ddaannss uunn bbuutt ssppéécciiffiiqquuee. Reportez-vous à la Licence Publique Générale GNU pour plus de détails. Vous pouvez obtenir une copie de la Licence Publique Générale GNU en écrivant à la Free Software Foundation , Inc., 675 Mass Ave, Cambridge, MA 02139, États-Unis. Les marques déposées sont la propriété de leurs propriétaires respectifs. 11..22.. ÉÉcchhooss Tout écho est le bienvenu. Je ne prétend pas être un expert. Une partie des informations provient de sites web mal écrits; il est très probable qu'il y ait des erreurs et des omissions. Cependant, vérifiez que vous avez la dernière version avant d'envoyer des corrections; ce pourrait être fixé dans la version suivante (voyez la section qui suit pour savoir où trouver la dernière version). Envoyez vos réactions à poet@linuxports.com. 11..33.. NNoouuvveelllleess vveerrssiioonnss ddee ccee ddooccuummeenntt Les nouvelles versions de ce document sont toujours disponibles sur le site web de LinuxPorts 22.. CCoonnffiigguurreerr uunn cclliieenntt WWWWWW ((aannttiiqquuiittéé)) Notez que la section suivante est très ancienne et sa dernière mise à jour remonte à 1997. Cette section est con­ servée dans un but uniquement historique. Toutes les dis­ tributions majeures de Linux sont livrées avec Netscape et Lynx. Ce sont les deux navigateurs les plus populaires pour le système d'exploitation Linux. Si ces navigateurs ne sont pas installés, référez vous à leurs sections respectives pour savoir comment les récupérer. Le chapitre qui suit est dédié à la configuration des navigateurs. Vous êtes libres de me contacter si votre navigateur favori n'est pas présent ici. Dans cette version du document, seul un petit nombre de navigateurs ont leur propre section, mais je vais essayer de tous les inclure (tous ceux que je peux trouver) dans la section Survol. Dans le futur ces navigateurs auront chacun leur propre section. L'information de survol est destinée à vous aider à vous décider en faveur d'un navigateur, et vous donne les informations principales sur chaque navigateur. La section détails est destinée à vous aider à installer, configurer, et maintenir chaque navigateur. Cependant j'utilise Lynx lorsque je n'ai pas envie de lancer le monstre X-Window/Netscape. 22..11.. SSuurrvvooll ````NNaavviiggaattoorr//CCoommmmuunniiccaattoorr'''' Netscape Navigator est le seul navigateur Linux mentionné ici qui peut utiliser les dernières nouveautés HTML. Quelques unes de ces extensions sont le Java, le Javascript, les mises à jour automatiques, et les calques. Il est aussi capable de lire les news et le courrier. Mais c'est un gros mangeur de ressources; il prend beaucoup de temps processeur et de mémoire. Il utilise également un cache séparé pour tous les utilisateurs, ce qui consomme de l'espace disque. Netscape est actuellement un logiciel OpenSource et peut être récupéré sur ftp.netscape.com. ````LLyynnxx'''' Lynx est le plus petit navigateur web. C'est le roi des navigateurs en mode texte. Il est gratuit et son code source est disponible sous les termes de la GNU public license. Il est en mode texte, mais dispose de nombreuses options. Lynx supporte dorénavant les tableaux, la couleur (via les bibliothèques curses) et les frames. Note sur le support frame de Lynx: Le support frame de Lynx est très limité, il vous avertira de la présence des frames et vous donnera leur titre pour que vous les sélectionniez en tant que lien. Cependant, les titres des frames sont généralement non descriptifs par facilité pour l'auteur; ceci peut être gênant. KKffmm Kfm fait partie de K Desktop Environment (KDE). KDE est un système qui tourne au-dessus de X-Window. Il vous offre de nombreuses fonctionnalités comme le copier - coller, les sons, une corbeille et une apparence unifiée. Kfm est le K File Manager, mais c'est aussi un navigateur web. Il supporte les frames, les tableaux, les transferts par ftp, la navigation dans les archives tar, et bien d'autres choses. La version actuelle de Kfm est la 1.1.1, la 1.1.2 arrivant bientôt. Kfm peut-être utilisé sans KDE, mais vous aurez besoin des bibliothèques utilisées par KDE. Pour plus d'informations sur KDE et Kfm, visitez le site web de KDE à . ````EEmmaaccss'''' Emacs est un programme qui fait tout. C'est un traitement de texte, un lecteur de news, un lecteur de courrier, et un navigateur web. Sa maîtrise ne vient que lentement au début, car vous devez apprendre ce que font toutes les touches. La version X-Window est plus facile à utiliser, car vous accedez à la plupart des fonctionnalités par des menus. Un autre inconvénient est qu'il est principalement basé sur du texte. (mais il peut afficher des images si vous l'utilisez depuis X-Window). Il est également gratuit, et le code source est disponible sous la licence publique GNU. NNCCSSAA MMoossaaiicc Mosaic est un navigateur X-Window développé par le National Center for Supercomputing Applications (NCSA) de l'université de l'Illinois. Le NCSA a travaillé quatre ans sur ce projet et est maintenant passé à d'autres choses. Encore une fois, Mosaic n'est plus supporté. Cependant, son source est gratuit pour une utilisation non commerciale, et il peut être un intéressant sujet d'étude pour quelqu'un qui veut développer un nouveau navigateur. AAmmaayyaa Amaya est le navigateur X-Window expérimental du W3C pour le HTML 3.2. Toutefois il supporte tous les standards HTML 3.2. Il supporte également quelques unes des nouveautés du HTML 4.0. Il supporte les tableaux, les formulaires, les cartes graphiques (imagemap) côté client, l'envoi des pages sur un serveur distant par la méthode put du protocole http, les images gifs, jpegs et png. C'est à la fois un navigateur et un outil d'apprentissage. La dernière version publique est la 1.0 beta. La version 1.1 beta est en tests internes et doit sortir bientôt. Pour plus d'informations voyez le site d'Amaya à . Il peut être téléchargé de . QQwweebb Qweb est encore un autre navigateur X-Window basique. Il supporte les tableaux, les formulaires, et les cartes graphiques côté serveur. La dernière version est la 1.3. Pour plus d'informations visitez le site Qweb à . Les sources sont disponibles sur . Les binaires sont disponibles en format Red Hat RPM à . L'auteur recommande aux utilisateurs de navigateurs web d'utiliser soit Navigator 4.x, Lynx ou Netscape 5.xAlpha. Ce sont les seuls actuellement disponibles sous Linux qui supportent le maximum de fonctionnalités. Je suggère personnellement l'utilisation de Netscape 5.xAlpha, car même s'il s'agit de logiciel en version alpha, il est assez stable et implémente vraiment les standards de bien meilleure façon que ne le font les 4.x. 33.. LLyynnxx Lynx est un des plus petits (environ 600 ko d'exécutable) et des plus rapides des navigateurs, probablement le browser web le plus rapide actuellement disponible. Il n'utilise pas autant de bande passante ni de ressources système car il affiche uniquement en mode texte. Il peut-être utilisé sur toute console, terminal ou xterm. Vous n'aurez pas besoin d'un _s_y_s_t_è_m_e _X_-_W_i_n_d_o_w ni de mémoire supplémentaire pour faire tourner ce petit browser. 33..11.. OOùù ll''oobbtteenniirr ?? La plupart des distributions incluent Lynx. C'est pourquoi je ne vous ennuierai pas avec les détails sur la compilation et l'installation de Lynx. La dernière version est la 2.8.2, et peut être obtenue sur ou sur tout serveur ftp miroir comme ftp://ftp.lip6.fr dans /pub/linux/sunsite/apps/www/browsers/. Pour plus d'informations sur Lynx essayez l'une de ces url: LLyynnxx LLiinnkkss LLyynnxx PPaaggeess LLyynnxx HHeellpp PPaaggeess (les mêmes que celle données par lynx --help et ? dans lynx). Note: les pages d'aide de Lynx ont récemment déménagé. Si vous avez une version ancienne de Lynx, vous devrez changer votre lynx.cfg (dans /usr/lib) pour pointer sur la nouvelle adresse (plus haut). Je pense que la spécificité la plus importante de Lynx par rapport à tous les autres navigateurs web est sa capacité de récupération automatique des fichiers.N'importe qui peut écrire un script qui récupérera tout document, fichier ou n'importe quoi d'autre via des url _h_t_t_p, _F_T_P, _g_o_p_h_e_r, _W_A_I_S, _N_N_T_P ou _f_i_l_e_:_/_/ - et les sauver sur le disque. De plus, toute personne peut entrer des données dans les formulaires HTML en mode batch (non interactif), en redirigeant simplement l'entrée standard et en utilisant l'option _-_p_o_s_t___d_a_t_a. Pour en savoir plus les spécificités exceptionnelles de Lynx, il suffit de regarder les fichiers d'aide et les pages de man. Si vous utilisez une option spéciale de Lynx que vous désireriez voir ajouter à ce document, faîtes le moi savoir. 44.. EEmmaaccss--WW33 Il y a différentes versions d'Emacs. Les deux les plus populaires sont GNU Emacs et XEmacs. GNU Emacs vient de la Free Software Foundation, et est l'Emacs original. Il est principalement orienté vers les terminaux en mode texte, mais il peut tourner sous X-Window. XEmacs (au départ par Lucid Emacs) est une version qui tourne uniquement sous X-Window. Il dispose de nombreuses spécificités de type X-Window (de meilleurs menus, ...). 44..11.. OOùù ll''oobbtteenniirr ?? La plupart des distributions incluent GNU Emacs. Le GNU emacs le plus récent est le 19.34. Il ne semble pas avoir de site web. Le site FTP original est à ; il y a un miroir pour la France sur . La dernière version de XEmacs est la 20.2. Le site FTP de XEmacs est à . Pour plus d'informations sur XEmacs allez voir leurs pages web à . Les deux sont disponibles sur tous les miroirs des archives Linux, par exemple à ftp://ftp.lip6.fr/pub/linux/sunsite/apps/editors/emacs/ 55.. NNeettssccaappee NNaavviiggaattoorr//CCoommmmuunniiccaattoorr 55..11.. DDeess vveerrssiioonnss eett ddeess ooppttiioonnss ddiifffféérreenntteess.. Netscape Navigator est le roi des navigateurs WWW. Netscape Navigator peut quasiment tout faire. Mais d'un autre côté, c'est un des programmes les plus gourmands en mémoire et en ressources que j'ai pu voir. Il y a 3 versions différentes de ce programme: Netscape Navigator contient le navigateur web, netcaster (le client push) et un programme basique de courrier. Netscape Communicator contient le navigateur web, un éditeur web, un programme avancé de courrier, un lecteur de news, netcaster (le client push), et un utilitaire pour les conférences de groupes. Netscape Communicator Pro contient tout ce qu'a Communicator plus un calendrier partageable, l'émulation des terminaux IBM, et des options pour la gestion à distance (les administrateurs peuvent mettre à jour des milliers de copies de Netscape à partir de leur siège). De plus, pour chacune de ces trois versions il y a deux options que vous pouvez choisir. La première est l'installation complète ou basique. L'installation complète vous installe tout. L'installation de base vous en donne suffisamment pour commencer. Vous pouvez charger les composants supplémentaires lorsque vous en avez besoin (comme le support multimedia et netscaster). Ces composants peuvent être installés par l'utilitaire 'smart update' de Netscape (après l'installation allez dans 'help->software updates'). Actuellement, l'installation complète n'est pas disponible pour Linux. La seconde option est l'import ou l'export. Si vous habitez les US ou le Canada vous pouvez choisir la version d'import. Celà vous donnera l'encryption plus solide de 128 bits pour les transactions sécurisées (SSL). La version d'export dispose seulement d'une encryption 40 bits, et est la seule version autorisée en dehors des US et du Canada. La dernière version de Netscape Navigator/Communicator/Communicator Pro est la 4.6.1. Il y a deux versions différentes pour Linux, une pour l'ancienne série des noyaux 1.2 et une pour les nouveaux 2.0. Si vous n'avez pas de noyau 2.0 je vous suggère de le mettre à jour; il y a de nombreuses nouveautés dans le nouveau noyau. Des beta version sont également disponibles. Si vous essayez une version beta, elles expireront généralement plus ou moins un mois après ! Vous pouvez également essayer la 5.0 alpha du projet Mozilla, qui se trouve sur www.mozilla.org. Je vous le suggère vraiment, le nouveau Netscape 5 est le meilleur navigateur que j'ai vu depuis bien longtemps. Il est très flexible et assez stable pour une version alpha. 55..22.. OOùù ll''oobbtteenniirr ?? Le meilleur moyen pour obtenir des logiciels de Netscape est d'aller les chercher sur leur site web à . Ils ont des menus pour vous guider dans votre sélection. Lorsqu'on demande une version Linux, on référence par rapport au noyau (la plupart des gens doivent maintenant utiliser le 2.0). Si vous n'êtes pas sûr de la version du noyau que vous avez vous pouvez lancer 'cat /proc/version'. Chercher sur le site web est le seul moyen d'obtenir les versions d'import. Si vous désirez une version export vous pouvez la charger directement des serveurs FTP de Netscape. Leurs serveurs FTP sont également plus à jour. Par exemple la première fois que j'ai écrit ceci, l'interface web n'avait pas encore la version non-beta 4.03 pour Linux, mais elle était sur le site FTP. Voici les liens vers les versions d'export pour Linux 2.0 et 2.2: Netscape Navigator 4.6.1 est sur Netscape Communicator 4.6.1 pour Linux 2.0 (noyau) est sur Communicator Pro 4.03 pour Linux n'était pas disponible au moment où j'écris ces lignes. Ces url changeront lorsque de nouvelles versions sortiront. Si ces liens ne fonctionnent pas vous pouvez les trouver en pêchant sur le site FTP . Ces serveurs sont souvent très chargés. Il vaut mieux attendre hors des heures de bureau ou choisir un site miroir. Attendez-vous à devoir patienter, ces archives sont grosses. Navigator pèse environ 8 megs, et l'installation de base de Communicator est de 10 megs. 55..33.. IInnssttaallllaattiioonn Cette section explique comment installer la version 4 de Netscape Navigator, Communicator, et Communicator Pro. Tout d'abord, décompactez l'archive dans un répertoire temporaire. Lancez ensuite le script ns-install (tapez ./ns-install). Créez ensuite un lien symbolique entre le binaire /usr/local/netscape/netscape et /usr/local/bin/netscape (tapez ln -s /usr/local/netscape/netscape /usr/local/bin/netscape). Enfin, attribuez à la variable d'environnement $MOZILLA_HOME la valeur /usr/local/netscape pour tout le système, de façon à ce que Netscape puisse trouvez ses fichiers. Si c'est bash que vous utilisez comme shell, éditez votre /etc/profile et ajoutez les lignes: export MOZILLA_HOME="/usr/local/netscape" Après l'avoir installé, le logiciel peut se mettre automatiquement à jour avec "smart update". Lancez juste Netscape en tant que super- utilisateur et allez à help->software updates. Si vous avez simplement pris l'installation basique, vous pouvez également installer les composants Netscape de cette façon. Note: Ceci ne supprimera pas vos anciennes versions de Netscape, vous devez les supprimer manuellement en supprimant le binaire Netscape et le fichier des classes Java (pour la version 3). 66.. MMeettttrree eenn ppllaaccee uunn sseerrvveeuurr WWWWWW Cette section contient des informations sur les différents serveurs http et les outils additionnels comme les langages de scripts pour les programmes CGI, etc. Il y a plusieurs douzaines de serveurs web, j'ai seulement couvert ceux qui sont pleinement fonctionnels. Comme certains sont des programmes commerciaux, je ne peux pas les tester. La plupart des informations de la section de présentation ont été récupérées sur divers sites web. S'il y a des informations incorrectes ou manquantes, veuillez me le faire savoir. Pour une documentation plus technique des mécanismes du http, voyez les RFCs mentionnées dans le chapitre "Documents plus avancés" de ce HOWTO. Je préfère utiliser le serveur Apache. Il a la plupart des options que vous avez jamais désiré et il est gratuit ! J'admets que cette section est fortement orientée vers Apache. J'ai décidé de concentrer mes efforts sur la section Apache plutôt que de me disperser parmi tous les autres serveurs web. Je pourrais couvrir d'autres serveurs web dans le futur. 66..11.. SSuurrvvooll CCeerrnn hhttttppdd Ce fut le premier serveur web. Il a été développé par le European Laboratory for Particle Physics (CERN). Le CERN httpd n'est plus supporté. Le serveur CERN httpd est connu pour avoir quelques bugs étranges, pour être lent et gourmand en ressources. La dernière version est la 3.0. Pour plus d'informations visitez la page mère du CERN httpd à . Il peut être chargé sur (non, ce n'est pas une erreur, l'extension est actuellement .tpz sur le site; ce devrait probablement être .tgz). NNCCSSAA HHTTTTPPdd Le serveur NCSA HTTPd est le père d'Apache (le développement a donné naissance à deux serveurs différents). Toutefois les fichiers de configuration sont très similaires. le NCSA HTTPd est gratuit et le code source est disponible. Ce serveur n'est pas couvert par ce document, cependant la lecture de la section Apache peut vous donner quelques tuyaux. Le serveur NCSA a été populaire, mais la plupart des gens l'ont remplacé par Apache. Apache a commencé comme un remplaçant du serveur NCSA (même fichiers de configuration), et il corrige quelques unes de ses faiblesses. Le serveur NCSA HTTPd compte pour 4.9% (en chute libre) de tous les serveurs web (source Septembre 1997, Netcraft survey ). La dernière version est la 1.5.2a. Pour plus d'informations voyez le site du NCSA à . ````AAppaacchhee'''' Apache est le roi de tous les serveurs web. Apache et ses sources sont gratuits. Apache est modulaire, aussi il est facile d'y ajouter des caractéristiques. Apache est très flexible et dispose de très, très nombreuses caractéristiques. Apache et ses dérivés totalisent 55% de tous les domaines web. Il y a plus de 3 928 112 serveurs Apache actifs (source Août 1999, Netcraft survey ). La version officielle d'Apache ne contient pas le SSL, mais il y a deux dérivés qui l'incluent. Stronghold est un produit commercial qui est basé sur Apache. Il est vendu $995; une version plus économique est disponible pour $495 (basée sur une vieille version d'Apache). Stronghold est le numéro deux des serveurs sécurisés derrière Netscape (source C2 net et Netcraft survey ). Pour plus d'informations voyez le site de Stronghold à . Il a été développé hors des US, il est donc disponible avec du SSL en 128 bits partout. Apache-SSL est une implémentation gratuite de SSL, mais pas pour une utilisation commerciale dans les US (RSA a une license US sur la technologie SSL). Il peut être employé pour une utilisation non-commerciale aux US si vous le reliez avec la librairie gratuite RSAREF. Pour plus d'informations voyez le site à . NNeettssccaappee FFaasstt TTrraacckk SSeerrvveerr Fast Track a été développé par Netscape, mais la version Linux est mise sur le marché par Caldera. Le site de Caldera le liste en tant que "Fast Track for OpenLinux". Je ne sais pas avec certitude s'il tourne seulement sous Caldera OpenLinux ou si toute distribution Linux convient (écrivez moi si vous connaissez la réponse). Les serveurs Netscape comptent pour 6.11% (en augmentation) de tous les serveurs web (source Août 1999 ). Le serveur est vendu $295. Il est également inclus avec la distribution Caldera OpenLinux Standard qui est vendue $399 (version éducation: $199.50). Les pages web parlent d'une interface d'administration simple et pratique et d'une configuration rapide en 10 minutes. Le serveur supporte le SSL en 40 bits. Pour obtenir les 128 bits SSL, vous aurez besoin du Netscape Enterprise Server. Malheureusement il n'est pas disponible pour Linux :( La dernière version disponible pour Linux est la 2.0 (la version 3 est en beta, mais elle n'est pas encore disponible pour Linux). Pour l'acheter, allez sur le site web de Caldera à . Pour plus d'informations voyez la page Fast Track à WWNN WN possède de nombreuses caractéristiques qui le rendent attractif. Tout d'abord il est plus petit que les serveurs CERN, NCSA HTTPd, Apache. Il dispose également de nombreuses options intégrées qui nécessiteraient sinon des CGI. Par exemple la recherche sur le site, une fonctionnalité améliorée d'inclusion de fichiers au niveau du serveur (server side include). Il peut également décompresser/compresser des fichiers de façon transparente grâce à son option de filtrage. Il peut également récupérer une partie seulement d'un fichier avec son option d'échelle. Il est distribué sous licence publique GNU. La version actuelle est la 2.08. Pour plus d'informations voyez le site de WN à . AAOOLLsseerrvveerr AOLserver est développé par America Online. Je dois admettre que j'ai été surpris par les options offertes par un serveur web venant de chez AOL. En plus des options standard, il supporte la connectivité avec les bases de données. Les pages peuvent interroger une base de données par les commandes Structured Query Language (SQL). La base de données est accessible au travers du Open Database Connectivity (ODBC). Il dispose également d'un moteur de recherche et du langage de script TCL. Si cela ne vous suffit pas, vous pouvez ajouter votre module personnel par la Application Programming Interface (API), en C. J'ai même oublié de mentionner le support pour SSL 40 bits. Et vous obtenez tout ceci gratuitement ! Pour plus d'informations voyez le site du AOLserver à . CCLL--HHTTTTPP CL-HTTP est l'abrégé de Common Lisp Hypermedia Server. Si vous êtes un programmeur Lisp ce serveur est pour vous. Vous pouvez écrire vos scripts CGI en Lisp. Il a une fonction de configuration par le web. Il supporte également toutes les options standards des serveurs. CL-HTTP est gratuit et le code source est disponible. Pour plus d'informations voyez le site web de CL-HTTP à . Si vous avez un dessein commercial (site web d'une compagnie, ou ISP), je vous recommanderais fortement l'utilisation d'Apache. J'ai également entendu dire que le Netscape Server est facile à configurer. Si vous l'utilisez en interne, vous pouvez être un peu plus flexible. Mais à moins que l'un d'entre eux dispose d'une option que vous devez utiliser, je vous recommanderai néanmoins l'utilisation de l'un des deux pré-cités. Il s'agit seulement d'une liste partielle de tous les serveurs disponibles. Pour une liste plus complète visitez Netcraft à ou Web Compare à . 77.. AAppaacchhee La version actuelle d'Apache est la 1.3.9. Le site principal d'Apache est sur . Une autre bonne source d'information est Apacheweek sur . La documentation d'Apache est bonne, je ne rentrerai donc pas dans les détails de la configuration d'apache. La documentaion est sur le site web et également incluse dans les sources (au format HTML). Il y a également des fichiers textes inclus dans les sources, mais la version HTML est meilleure. La documentation doit devenir bien meilleure depuis que le Apache Documentation Project a été lancé. Pour l'instant la plupart des documents sont écrits par les développeurs. Sans vouloir discréditer les développeurs, ils sont un peu difficiles à comprendre si vous ne connaissez pas la terminologie. 77..11.. OOùù ll''oobbtteenniirr ?? Apache est inclus dans les distributions Red Hat, Slackware, et OpenLinux. Cependant il se peut que ce ne soit pas la dernière version, ce sont des binaires très fiables. La mauvaise nouvelle est que vous aurez à vivre avec leurs choix de répertoires (qui sont totalement différents les uns des autres et de ceux par défaut d'Apache). Le source est disponible sur le site web d'Apache à . Les binaires sont également disponibles au même endroit. Vous pouvez aussi obtenir les binaires de sunsite à et pour la France sur . Et pour ceux d'entre vous qui utilisent une Red Hat le dernier fichier RPM se trouve généralement dans le répertoire des contributions à . Si votre serveur doit servir un dessein commercial, il est hautement recommandé que vous obteniez les sources à partir du site web d'Apache et de le compiler vous même. L'autre option est d'utiliser un binaire qui provient d'une distribution majeure, par exemple Slackware, Red Hat, ou OpenLinux. La principale raison en est la sécurité. Un binaire inconnu peut avoir une "sortie cachée" pour les hackers, ou une correction instable peut crasher votre système. Ceci vous donnera également plus de contrôle sur les modules compilés, et vous autorisera à changer les répertoires par défaut. Il n'est pas difficile de compiler Apache, et vous ne serez pas un vrai utilisateur de Linux tant que vous ne compilerez pas vos programmes ;) 77..22.. CCoommppiilleerr eett IInnssttaalllleerr Tout d'abord décompactez l'archive dans un répertoire temporaire. Ensuite placez vous dans le répertoire src. Editez alors le fichier Configuration si vous désirez ajouter des modules spéciaux. Les modules les plus communément utilisés sont déjà inclus. Il n'y a pas besoin de changer les règles ou le makefile pour Linux. Lancez ensuite le script shell Configure (./Configure). Vérifiez qu'il vous dit que vous utilisez une plateforme Linux et gcc en tant que compilateur. Ensuite vous pouvez éditer le fichier httpd.h pour changer les répertoires par défaut. L'emplacement du serveur (où sont conservés les fichiers de configuration) par défaut est /usr/local/etc/httpd/, mais vous pouvez le changer pour juste /etc/httpd/. Et le répertoire principal du serveur (où sont conservées les pages HTML) par défaut est /usr/local/etc/httpd/htdocs/, mais j'apprécie le répertoire /home/httpd/html (le défaut de Red Hat pour Apache). Si vous devez utiliser su-exec (voir les options spéciales plus bas) vous pouvez également désirer changer le répertoire. Le répertoire principal peut également être changé à partir des fichiers de config. Mais il est également bon de le compiler, juste au cas où Apache ne puisse pas trouver ou lire les fichiers de configuration. Tout le reste doit être changé à partir des fichiers de configuration. Lancez enfin make pour compiler Apache. Si vous avez des problèmes au sujet de fichiers d'inclusion manquants, vérifiez les points suivants. Vérifiez que vous avez les entêtes du noyau (fichiers include) installés pour votre version du noyau. Vérifiez également que vous avez ces liens symboliques installés: /usr/include/linux doit être un lien sur /usr/src/linux/include/linux /usr/include/asm doit être un lien sur /usr/src/linux/include/asm /usr/src/linux doit être un lien sur les sources de Linux (ex.linux-2.0.30) Les liens peuvent être créés avec ln -s, celà fonctionnera comme la commande cp à part qu'il fera un lien ((ln -s SOURCE DESTINATION). Lorsque make a terminé il doit y avoir un exécutable nommé httpd dans le répertoire. Il est nécessaire de le déplacer dans un répertoire bin. /usr/sbin ou /usr/local/sbin seraient de bons choix. Copiez les sous-répertoires conf, logs, et icons des sources vers l'emplacement du serveur. Renommez ensuite trois des fichiers du sous- répertoire conf pour vous débarasser de l'extension -dist ((ex. httpd.conf-dist devient httpd.conf). Il y a aussi divers programmes de support qui sont inclus avec Apache. Ils sont dans le répertoire support et doivent être compilés et installés séparément/ La plupart d'entre eux peuvent être créés en utilisant le makefile de leur répertoire (ce qui est fait lorsque vous lancez le script principal Configure). Vous n'avez besoin d'aucun d'entre eux pour utiliser Apache, mais certains rendent le travail des administrateurs plus simple. 77..33.. CCoonnffiigguurreerr Maintenant vous devez avoir quatre fichiers dans votre sous-répertoire conf de l'emplacement du serveur. Le fichier httpd.conf met en place le daemon du serveur (numéro de port, utilisateur, etc). Le srm.conf spécifie l'arborescence pour les documents principaux, les actions spéciales, etc. Le access.conf spécifie les conditions de base pour l'accès. Finalement, le mime.types indique au serveur quel type mime il doit envoyer au navigateur pour quelle extension. Les fichiers de configuration sont assez bien documentés (ils sont pleins de commentaires), tant que vous comprenez le langage. Vous devriez les lire attentivement avant de mettre votre serveur en marche. Chaque option de configuration est couvert dans la documentation Apache. Le fichier mime.types n'est pas réellement un fichier de configuration. Il est utilisé par le serveur pour traduire les extensions des fichiers en types mime à envoyer au navigateur. La plupart des types mime communs sont déjà dans le fichier. La majorité des gens ne devrait pas éditer ce fichier. Au fil du temps, de plus en plus de types mime seront ajoutés pour supporter de nouveaux programmes. La meilleure chose à faire sera de prendre un nouveau fichier mime.types (et peut-être une nouvelle version du serveur) à ce moment là. Souvenez vous toujours que lorsque vous changez les fichiers de configuration vous devez relancer Apache ou lui envoyer le signal SIGHUP avec kill pour que les changements prennent effet. Vérifiez que vous envoyez le signal au process parent et non aux process enfants. Le parent a généralement le chiffre id le plus faible. L'id du process du parent est également dans le fichier httpd.pid du répertoire log. Si vous envoyez accidentellement le signal à un des process enfants, le process stoppera et le parent le relancera. Je ne vous détaillerai pas la configuration d'Apache. Je me contenterai de parler des problèmes spécifiques, des choix à faire, et des options spéciales. Je recommande chaudement que tous les utilisateurs parcourent le chapitre sur la sécurité dans la documentation Apache. Elle est également disponible sur le site web d'Apache à . 77..44.. HHéébbeerrggeerr ddeess sseerrvveeuurrss wweebb vviirrttuueellss L'hébergement virtuel existe lorsqu'un seul ordinateur dispose de plus d'un nom de domaine. L'ancienne méthode était d'avoir une adresse IP pour chaque site virtuel. La nouvelle méthode utilise une seule adresse IP, mais celà ne fonctionne pas correctement avec les navigateurs qui ne supportent pas le HTTP 1.1. Ma recommandation pour les sites commerciaux est de conserver un hébergement virtuel basé sur plusieurs IP jusqu'à ce que la majorité des gens disposent de navigateurs supportant HTTP 1.1 (donnez leur un an ou deux). Ceci vous donne également une impression plus complète d'hébergement virtuel. Alors que les deux méthodes peuvent vous donner des possibilités de courrier virtuel (est ce que quelqu'un peut confirmer?), seul l'hébergement virtuel basé IP peut également vous donner un serveur FTP virtuel. S'il s'agit d'un club ou d'une page personnelle, vous pouvez envisager l'hébergement virtuel par IP partagée. Ce devrait être moins cher que l'hébergement basé IP et vous économiserez de précieuses addresses IP. Vous pouvez également mélanger les hébergements virtuels par IP fixes et par IP partagées sur le même serveur. Pour plus d'information sur l'hébergement virtuel voyez Apacheweek sur . 77..44..11.. HHéébbeerrggeemmeenntt vviirrttuueell bbaasséé IIPP Pour cette méthode chaque site virtuel dispose de sa propre adresse IP. En fonction de l'adresse IP à laquelle la requête a été envoyée, Apache et d'autres programmes déterminent quel domaine desservir. C'est un incroyable gaspillage d'adresses IP. Prenez par exemple l'ensemble de serveurs où est conservé mon domaine virtuel. Ils ont plus de 35.000 comptes virtuels, ce qui signifie 35.000 adresses IP. Pourtant je crois qu'aux derniers comptes ils avaient moins de 50 serveurs réels. La configuration se fait en deux parties. La première consiste à rendre Linux capable de reconnaître plus d'une adresse IP. La seconde est de configurer apache pour servir les sites virtuels. La première étape pour rendre Linux capable d'accepter plusieurs adresses IP consiste à compiler un nouveau noyau. Ceci fonctionne mieux avec la série des noyaux 2.0 (ou supérieure). Vous devrez inclure le support pour "IP networking" et "IP aliasing". Si vous avez besoin d'aide pour la compilation du noyau voyez le kernel howto , ou sa version française sur . Vous devrez ensuite spécifier la configuration de chaque interface au lancement du système. Si vous utilisez la distribution Red Hat, ceci peut être fait à partir du panneau de contrôle. Lancez X-Window en tant que super-utilisateur, vous devriez voir un panneau de contrôle. Double-cliquez sur "network configuration" (configuration réseau). Allez ensuite sur le panneau des interfaces et choisissez votre carte réseau. Ensuite cliquez sur alias en bas de l'écran. Rentrez les informations et cliquez sur "done". Ceci devra être fait pour chaque site virtuel / adresse IP. Si vous utilisez une autre distribution vous pouvez avoir à le faire manuellement. Vous pouvez simplement mettre les commandes dans le fichier rc.local de /etc/rc.d (en réalité vous devriez les mettre avec toutes celles concernant le réseau). Vous devrez avoir une commande ifconfig et route pour chaque périphérique. Les adresses en alias sont constituées à partir du périphérique principal. Par exemple eth0 aurait les alias eth0:0, eth0:1, eth0:2, etc. Voici un exemple de configuration d'un alias: ifconfig eth0:0 192.168.1.57 route add -host 192.168.1.57 dev eth0:0 Vous pouvez également ajouter une adresse de broadcast et un netmask à la commande ifconfig. Si vous avez beaucoup d'alias vous pouvez vouloir programmer une boucle pour vous faciliter le travail. Pour plus d'informations voyez le IP alias mini howto ou sa version française à . Vous devrez ensuite configurer votre serveur de noms (DNS) pour desservir ces nouveaux domaines. Et si vous ne possédez pas déjà les noms de domaine, vous devrez contacter l'Internic pour enregistrer les noms de domaines. Voyez le DNS-howto pour plus d'informations sur la configuration de votre DNS. Pour finir, vous devrez configurer Apache de manière à desservir correctement le domaine virtuel. Ceci se fait dans le fichier de configuration httpd.conf près de la fin. Ils vous donnent un exemple sur la façon de procéder. Toutes les commandes spécifiques au site virtuel sont placées entre les marqueurs virtualhost. Vous pouvez mettre à peu près n'importe quelle commande ici. Généralement vous devrez placer différents répertoires pour le serveur, le répertoire script, et les fichiers de log. Vous pouvez avoir un nombre quasi- illimité de sites virtuels en ajoutant d'autres marqueurs virtualhost. Dans de rares cas, vous pouvez avoir à lancer des serveurs séparés si une directive est nécessaire pour un site virtuel, mais n'est pas acceptée dans les marqueurs du site virtuel. Ceci se fait en utilisant la directive bindaddress. Chaque serveur aura un nom et des fichiers de configuration différents. Chaque serveur répondra à une seule adresse IP, spécifiée par la directive bindaddress. C'est un gaspillage incroyable de ressources système. 77..44..22.. HHéébbeerrggeemmeenntt vviirrttuueell ppaarr IIPP ppaarrttaaggééee C'est une nouvelle méthode pour l'hébergement virtuel. Elle utilise une adresse IP unique, réservant les adresses IP aux vraies machines (et pas les virtuelles). Dans l'exemple cité plus haut, ces 30.000 sites virtuels utiliseraient seulement 50 adresses IP (une pour chaque machine). Ceci est fait en utilisant le nouveau protocole HTTP 1.1. Le navigateur dit au serveur quel site il désire lorsqu'il envoie la demande. Le problème est que les navigateurs qui ne supportent pas HTTP 1.1 obtiendront la page principale du serveur, qui peut être configurée pour donner la liste des sites virtuels disponibles. Ceci ruine toute l'illusion de l'hébergement virtuel. L'illusion que vous avez votre propre serveur. La configuration est bien plus simple que pour l'hébergement virtuel basé sur IP. Vous aurez toujours besoin d'obtenir de l'Internic votre domaine et de configurer votre DNS. Cette fois-ci, le DNS pointe sur la même adresse IP que le domaine original. Ensuite Apache se configure comme précédemment. Puisque vous utilisez la même adresse IP dans les marqueurs virtualhost, Apache sait que vous désirez l'hébergement virtuel par IP partagée. Il y a plusieurs solutions pour les anciens navigateurs. Je vais vous expliquer la meilleure. Tout d'abord vous devrez créer vos pages principales comme pour un serveur virtuel (soit basé IP, soit par IP partagée). Ceci libère la page principale pour un lien listant tous vos sites virtuels. Ensuite vous devrez créer une sortie cachée pour les anciens navigateurs. On le réalise en utilisant la directive ServerPath pour chaque site virtuel de la directive virtualhost. Par exemple en ajoutant ServerPath /monsite/ à www.monsite.com, les anciens navigateurs pourront accéder au site par www.monsite.com/monsite/. Ensuite mettez dans la page par défaut du serveur principal un message qui les incitera poliment à se procurer un nouveau navigateur, et listera les liens sur toutes les sorties cachées des sites que vous hébergez sur cette machine. Lorsqu'un ancien navigateur accèdera au site, l'utilisateur sera renvoyé à la page principale, et aura un lien sur la page correcte. Les nouveaux navigateurs ne verront jamais la page principale et iront directement sur les sites virtuels. Vous devez veiller à n'avoir que des liens relatifs à l'intérieur de chaque site web, car les pages seront demandées à partir de deux URL différentes (www.monsite.com et www.monsite.com/monsite/). J'espère que je ne vous ai pas embrouillé ici, mais ce n'est pas d'une compréhension simple. Après tout, vous devriez peut-être envisager l'hébergement basé IP. Une explication très similaire se trouve sur le site web d'apache à . Si quelqu'un dispose d'un pointeur sympathique pour l'hébergement par IP partagée, j'aimerais le connaître. Il serait agréable de connaître le pourcentage de navigateurs qui supportent le HTTP 1.1, et d'avoir une liste des navigateurs et des versions qui supportent HTTP 1.1. 77..55.. SSccrriippttss CCGGII Il existe deux méthodes différentes pour donner à vos utilisateurs la possibilité d'utiliser des scripts CGI. La première est de considérer tout fichier se terminant par .cgi comme un script CGI. La seconde est de créer des répertoires de scripts (généralement nommés cgi-bin). Vous pouvez utiliser les deux méthodes également. Quelle que soit la méthode utilisée vos scripts doivent être exécutables par n'importe qui (chmod 711). En donnant à vos utilisateurs l'accès aux scripts, vous créez un gros risque de sécurité. Faîtes proprement votre travail afin de minimiser les risques concernant la sécurité. Je préfère la première méthode, spécialement pour les scripts complexes. Ceci vous autorisera à mettre les scripts dans n'importe quel répertoire. J'aime mettre mes scripts au même endroit que les pages web qui s'en servent. Pour les sites avec beaucoup de scripts, c'est beaucoup mieux que d'avoir un répertoire plein de scripts. La configuration est simple. Tout d'abord supprimez le commentaire du marqueur .cgi à la fin du fichier srm.conf. Ensuite vérifiez que tous vos répertoires ont les marqueurs option ExecCGI ou All dans le fichier access.conf. Créer un répertoire de scripts est considéré comme plus sûr. Pour créer un répertoire de scripts, vous utilisez la directive ScriptAlias dans le fichier srm.conf. Le premier argument est l'alias, et le second le répertoire réel. Par exemple ScriptAlias /cgi-bin/ /usr/httpd/cgi-bin/ rend le répertoire /usr/httpd/cgi-bin capable de contenir des scripts exécutables. Ce répertoire sera utilisé chaque fois quelqu'un demandera le répertoire /cgi-bin/. Pour des raisons de sécurité vous devez également changer les propriétés du répertoire pour Options none, AllowOveride none dans le fichier access.conf (supprimer simplement les commentaires de l'exemple donné). Egalement ne placez pas vos répertoires de scripts à l'intérieur de la même arborescence que les répertoires de pages web. Par exemple, si vous servez les pages à partir de /home/httpd/html/, ne créez pas le répertoire de scripts en tant que /home/httpd/html/cgi-bin; mais plutôt /home/httpd/cgi-bin. Si vous désirez que vos utilisateurs disposent de leurs propres répertoires de scripts vous pouvez utiliser plusieurs commandes ScriptAlias. Les sites virtuels doivent avoir cette commande ScriptAlias dans leurs directives virtualhost. Est ce que quelqu'un connaît un moyen simple pour autoriser les utilisateurs à avoir leur propre répertoire cgi-bin sans utiliser des commandes individuelles ScriptAlias ? 77..66.. RRééppeerrttooiirreess WWeebb ddeess UUttiilliissaatteeuurrss Il y a deux méthodes différentes pour gérer les répertoires web des utilisateurs. La première est d'avoir un sous-répertoire dans les répertoires des utilisateurs (généralement public_html). La seconde est d'avoir une aborescence entièrement différente pour les répertoires web. Pour ces deux méthodes vérifiez les options d'accès aux répertoires dans le fichier access.conf. La première méthode est configurée par défaut dans apache. Lorsqu'une demande pour /~bob/ arrive, Apache regarde dans le répertoire public_html du répertoire principal de bob. Vous pouvez changer ce répertoire avec la directive UserDir dans le fichier srm.conf. Ce répertoire doit être lisible et exécutable par tout le monde. Cette méthode crée un risque pour la sécurité car le répertoire principal des utilisateurs doit être exécutable par toute personne afin qu'Apache puisse y accéder. La seconde méthode est facile à configurer. Vous devez juste changer la directive UserDir dans le fichier srm.conf. Il y a beaucoup de formats différents; vous pouvez voir la documentation d'Apache pour clarification. Si vous voulez que chaque utilisateur dispose de son propre répertoire sous /home/httpd/, vous utiliserez UserDir /home/httpd. Ensuite lorsqu'une demande arrivera pour /~bob/, Apache la traduira par /home/httpd/bob/. Ou si vous avez un sous-répertoire dans le répertoire de bob vous pouvez utiliser UserDir /home/httpd/*/html. Ceci traduira en /home/httpd/bob/html/ et vous autorisera à avoir aussi un répertoire de script (par exemple /home/httpd/bob/cgi-bin/). 77..77.. MMooddee ddéémmoonn ccoonnttrree mmooddee IInneettdd Il y a deux méthodes pour faire tourner Apache. L'une est d'avoir un démon qui tourne tout le temps (Apache appelle ceci standalone). La seconde est celle du super-serveur inetd. Le mode démon est de loin supérieur au mode inetd. Apache est configuré pour le mode démon par défaut. La seule raison d'utiliser le mode d'inetd est pour les applications très peu utilisées, comme les tests de scripts en interne, l'intranet d'une petite compagnie, etc. Le mode inetd économisera de la mémoire car apache ne sera chargé que lorsqu'il sera demandé. Seul le démon inetd restera en mémoire. Si vous n'utilisez pas très souvent apache vous pouvez le conserver en mode démon et le lancer lorsque vous en avez besoin. Ensuite vous le supprimez lorsque vous avez terminé (soyez sûr de bien supprimer le processus parent et non pas un des enfants). Pour configurer le mode inetd vous devrez éditer quelques fichiers. Tout d'abord /etc/services, regardez si http est déjà présent. S'il n'y est pas, alors ajoutez ceci: http 80/tcp Le placer juste après 79 (finger) serait un bon endroit. Ensuite vous devez éditer le fichier /etc/inetd.conf et ajouter la ligne pour Apache: http stream tcp nowait root /usr/sbin/httpd httpd Changez le chemin si vous avez Apache à un autre endroit. et le second httpd n'est pas une erreur; le démon inetd en a besoin. Si vous n'utilisez pas habituellement le démon inetd, vous pouvez vouloir com­ menter toutes les autres lignes du fichier afin de ne pas activer les autres services (FTP, finger, telnet, et beaucoup d'autres choses qui sont généralement lancées par ce démon). Si le démon inetd est déjà lancé (inetd), alors vous devez lui envoyer le signal SIGHUP (par kill; voyez la page de manuel de kill pour plus d'infos) ou relancer l'ordinateur pour que les changements soient effectifs. Si vous n'avez pas lancé inetd alors vous pouvez le lancer manuellement. Vous devez également l'ajouter à vos fichiers d'initialisation afin qu'il soit chargé au démarrage du système (le fichier rc.local serait un bon choix). 77..88.. AAuuttoorriisseerr lleess ccoommmmaannddeess ppuutt eett ddeelleettee Les nouveaux outils de publication web supportent cette nouvelle méthode d'envoi des pages web par http (à la place de FTP). Certains de ces produits ne supportent même plus le FTP! Apache supporte cette méthode, mais il manque d'un script pour se charger des requêtes. Ce script pourrait être un gros trou de sécurité, soyez certain de ce que vous faîtes avant de tenter d'en écrire ou d'en installer un. Si quelqu'un connaît un script qui fonctionne faîtes le moi savoir et j'incluerai l'adresse ici. Pour plus d'informations voyez l'article d'Apacheweek à . 77..99.. AAuutthheennttiiffiiccaattiioonn ddee ll''UUttiilliissaatteeuurr // CCoonnttrrôôllee ddeess AAccccèèss Il s'agit de l'une de mes options préférées. Elle vous autorise à protéger un répertoire ou un fichier par un mot de passe sans utiliser de script CGI. Elle vous autorise également à interdire ou à autoriser l'accès sur la base de l'adresse IP ou du nom de domaine du client. C'est une spécificité très intéressante pour écarter les crétins de votre messagerie et de vos livres d'or (vous trouvez l'IP ou le nom de domaine dans vos fichiers de log). Pour permettre l'authentification de l'utilisateur, le répertoire doit avoir AllowOverrides AuthConfig dans le fichier access.conf. Pour permettre le contrôle d'accès (par domaine ou adresse IP) AllowOverrides Limit doit être mis pour ce répertoire. La configuration du répertoire nécessite de placer un fichier .htaccess dans le répertoire. Pour l'authentification de l'utilisateur il est également utilisé avec un .htpasswd et optionnellement un fichier .htgroup. Ces fichiers peuvent être partagés pour de multiples fichiers .htaccess si vous le désirez. Pour des raisons de sécurité je recommande que chacun utilise ces directives dans ses fichier access.conf: order deny,allow deny from all Si vous n'êtes pas l'administrateur du système vous pouvez également l'ajouter dans votre fichier .htaccess si AllowOverride Limit est configuré pour votre répertoire. Cette directive interdira à quiconque de regarder dans vos fichiers de contrôle d'accès (.htaccess, .htpasswd, etc). Il y a de nombreux types de fichiers et d'options qui peuvent être utilisés avec le contrôle d'accès. Toutefois, décrire ces fichiers dépasse le propos de ce document. Pour les informations sur la configuration de l'authentification des utilisateurs voyez l'article d'Apacheweek à ou les pages de la NCSA à . 77..1100.. ssuu--eexxeecc su-exec lance les scripts CGI avec l'identité du propriétaire du script. Normalement, ils sont lancés avec la même identité que le serveur web (généralement nobody). Ceci permet aux utilisateurs de rendre leurs propres fichiers accessibles par les scripts, sans mettre ces fichiers en écriture pour tout le monde (un trou de sécurité). Mais si vous ne faîtes pas attention, vous pouvez avoir un trou encore plus gros en utilisant le code su-exec. Celui-ci effectue des contrôles de sécurité avant d'exécuter les scripts, mais si vous le configurez de manière incorrecte vous aurez un trou de sécurité. Le code su-exec n'est pas pour les amateurs. Ne l'utilisez pas si vous ne savez pas ce que vous faîtes. Vous pouvez vous retrouver avec un gros problème de sécurité, vos utilisateurs pouvant obtenir des accès super-utilisateurs. Ne modifiez pas le code quelle qu'en soit la raison. Lisez attentivement toute la documentation. Le code su-exec est intentionnellement difficile à configurer afin d'éviter l'utilisation par des amateurs (tout doit être fait à la main, il n'y a pas de script d'installation). Le code su-exec se trouve dans le répertoire support des sources. Tout d'abord vous devez éditer le fichier suexec.h pour votre système. Ensuite vous devez compiler le code su-exec avec cette commande: gcc suexec.c -o suexec Copiez ensuite l'exécutable suexec dans le répertoire approprié. Apache le place par défaut dans /usr/local/etc/httpd/sbin/. Ceci peut être changé en éditant le fichier httpd.h dans les sources d'Apache et en recompilant Apache. Apache regardera seulement dans ce répertoire, il ne cherchera pas ailleurs. Le fichier doit être la propriété du super-utilisateur (chown root suexec) et les permissions doivent être changées (chmod 4711 suexec). Enfin relancez Apache, il doit vous donner un message sur la console indiquant que su-exec est utilisé. Les scripts CGI doivent être rendus exécutables par tous comme d'habitude. Ils seront automatiquement lancés par le possesseur du script CGI. Si vous changez les permissions, les scripts CGI ne fonctionneront pas. Si le répertoire ou le fichier est en écriture par tous ou par un groupe, le script ne fonctionnera pas. Il ne faut pas lancer de script possédé par un utilisateur système (root, bin, etc.). Pour les autres conditions de sécurité qui doivent être remplies, voyez la documentation de su-exec. Si vous avez des problèmes voyez le fichier de log de su-exec nommé cgi.log. Su-exec ne fonctionne pas si vous lancez Apache par inetd, il fonctionne seulement en mode démon. Ceci sera corrigé dans la prochaine version en ce qu'il n'y aura pas de mode inetd. Si vous aimez jouer avec le code source, vous pouvez éditer le fichier http_main.c. Vous pouvez vous débarrasser de la ligne où Apache annonce qu'il utilise le su-exec wrapper (ce qui est faussement indiqué en tête de chaque message). Lisez attentivement la documentation d'Apache sur su-exec. Elle est inclue dans les sources et est disponible sur le site web d'Apache à . 77..1111.. IImmaaggeemmaappss Apache peut gérer des cartes graphiques du côté du serveur. Ce que l'on appelle "Imagemaps" sont des images dans des pages web qui envoient les utilisateurs à divers emplacements, selon l'endroit où ils cliquent. Pour utiliser les imagemaps vérifiez que le module imagemap est installé (c'est un des modules par défaut). Ensuite vous devez supprimer le commentaire de la ligne .map à la fin du fichier srm.conf. Maintenant, tous les fichiers se terminant en .map seront des fichiers d'imagemap. Les fichiers imagemap délimitent différentes aires sur l'image associées chacune à un lien différent. Apache utilise des fichiers d'aires au format standard NCSA. Voici un exemple utilisant un fichier d'aire dans une page web: Dans cette exemple mapfile.map est le fichier d'aires, et picture.gif est l'image cliquable. Il y a de nombreux programmes qui peuvent générer des fichiers d'aires compatibles NCSA ou vous pouvez les créer vous-même. Pour une discussion plus détaillée sur les imagemaps et les fichiers d'aires voyez l'article d'Apacheweek à . 77..1122.. SSSSII//XXSSSSII Les Server Side Includes (SSI) ajoutent un contenu dynamique à des pages web qui sinon seraient statiques. Les clauses d'inclusion sont insérées dans les pages web en tant que commentaires. Le serveur web les exécute ensuite et passe les résultats au serveur web. SSI peut ajouter des en-têtes et des pieds de page aux documents, ajouter la date à laquelle le document a été modifié pour la dernière fois, exécuter une commande système ou un script CGI. avec le tout nouveau eXtended Server Side Includes (XSSI) vous pouvez faire bien plus. XSSI ajoute les variables et les instructions de contrôle (if, else, etc). C'est quasiment comme travailler avec un langage de programmation. L'analyse syntaxique de tous les fichiers relativement aux commandes SSI utiliserait beaucoup de ressources système. C'est pourquoi il faut distinguer les fichiers HTML normaux de ceux qui contiennent les commandes SSI. Ceci se fait généralement en changeant l'extension des fichiers HTML utilisant SSI. Habituellement on utilise l'extension .shtml. Pour utiliser SSI/XSSI, vérifiez tout d'abord que le module des includes est installé. Editez ensuite srm.conf et supprimez les commentaires des directives AddType et AddHandler pour les fichiers .shtml. Enfin, vous devez configurer Options Includes pour tous les répertoires où vous désirez exécuter des fichiers SSI/XSSI. Ceci se fait dans le fichier access.conf. Maintenant, tous les fichiers avec l'extension .shtml seront analysés relativement aux commandes SSI/XSSI. Un autre moyen de faire fonctionner les inclusions est d'utiliser la directive XBitHack. Si vous l'activez, il regardera si le fichier est exécutable par l'utilisateur. Si il l'est et que Options Includes est autorisé pour le répertoire, alors le fichier sera traité comme un fichier SSI. Ceci fonctionne seulement pour les fichiers dont le type mime est text/html (fichiers .html .htm). Ceci n'est pas la meilleure méthode. Il y a un risque pour la sécurité en autorisant SSI à exécuter des commandes systèmes et des scripts CGI. Toutefois il est possible de bloquer cette possibilité avec la directire Option IncludesNOEXEC au lieu de Option Includes dans le fichier access.conf. Toutes les autres commandes SSI fonctionneront encore. Pour plus d'informations voyez la documentation d'Apache mod_includes qui se trouve dans les sources. Elle est également disponible sur le site web à . Pour une discussion plus détaillée de l'implémentation SSI/XSSI voyez l'article d'Apacheweek à . Pour plus d'informations sur les commandes SSI voyez la documentation de la NCSA à . Pour plus d'informations sur les commandes XSSI allez sur . 77..1133.. SSyyssttèèmmee mmoodduullaaiirree Les fonctionnalités d'Apache peuvent être étendues quasiment à l'infini avec les modules. Il existe déja beaucoup de modules. Seuls les modules d'intérêt général sont inclus dans Apache. Pour des pointeurs vers les modules existants allez voir le Apache Module Registry à . Pour les informations sur la programmation des modules voyez 88.. AAjjoouuttss aauu sseerrvveeuurr wweebb Désolé, cette section n'a pas encore été écrite. A venir bientôt: mSQL, PHP/FI, cgiwrap, Fast-cgi, MS frontpage extensions, et beaucoup d'autres. 99.. DDooccuummeennttss pplluuss aavvaannccééss Vous devriez également consulter l'Intranet-Server HOWTO; de plus, un certain nombre de livres et de documents sont disponibles. 99..11.. LLiivvrreess ddee cchheezz OO''RReeiillllyy && AAssssoocciiaatteess A mon avis O'Reilly & Associates éditent les meilleures références techniques de la planète. Ils concentrent leurs efforts sur des sujets comme l'Internet, Unix et la programmation. Ils commencent tout doucement avec beaucoup d'exemples et lorsque vous terminez le livre, vous êtes un expert. Je pense que vous pouvez arrêter même si vous avez seulement lu la moitié du livre. Ils ajoutent également un peu d'humour à des sujets qui sinon seraient lassants. Ils disposent d'excellents livres sur HTML, PERL, la programmation CGI, Java, JavaScript, C/C++, Sendmail, Linux et beaucoup d'autres. De plus les sujets changeant rapidement (comme le HTML) sont mis à jour et révisés tout les six mois environ. Visitez donc le site web d'O'Reilly & Associates ou arrêtez vous chez votre libraire local pour plus d'informations. Et rappellez vous que s'il n'est pas marqué O'Reilly & Associates sur la couverture, c'est probablement quelqu'un d'autre qui l'a écrit. 99..22.. IInntteerrnneett RReeqquueesstt FFoorr CCoommmmeennttss ((RRFFCC)) · RFC1866 written by T. Berners-Lee and D. Connolly, "Hypertext Markup Language - 2.0", 11/03/1995 · RFC1867 writtenm by E. Nebel and L. Masinter, "Form-based File Upload in HTML", 11/07/1995 · RFC1942 written by D. Raggett, "HTML Tables", 05/15/1996 · RFC1945 by T. Berners-Lee, R. Fielding, H. Nielsen, "Hypertext Transfer Protocol -- HTTP/1.0", 05/17/1996. · RFC1630 by T. Berners-Lee, "Universal Resource Identifiers in WWW: A Unifying Syntax for the Expression of Names and Addresses of Objects on the Network as used in the World-Wide Web", 06/09/1994 · RFC1959 by T. Howes, M. Smith, "An LDAP URL Format", 06/19/1996 .