In stallation et pr ésen tation du ser veur Apach e 2 Prev Ch apter 16. In stallation d'un ser veur
HTTP Next
Installation et présentation du serveur Apache 2
Ce ch apitre don n e un aperçu des fon ction s et de l'en viron n emen t du serveur Apach e 2. Vous pourrez retrouver tous les aspects développés dan s la
documen tation (en partie en fran çais) du produit à l'adresse suivan te apach e.org.
Installation du serveur Apache 2
Apach e 2 a très certain emen t été in stallé par défaut lors de l'in stallation de votre Debian . Pour le vérifier : dpk g -l | gr ep apach e2
ii apache2
ii apache2-common ii apache2-mpm-prefork ii apache2-utils
ii libapache2-mod-perl2
ii libapache2-mod-php4 (ou libapache2-mod-php5)
Si Apach e2 n 'est pas in stallé, la comman de : apt-get in stall apach e2 in stallera le serveur web avec ses dépen dan ces.
Vous aurez certain emen t besoin par la suite du module ph p alors autan t l'in staller tout de suite : apt-get in stall libapach e2-m od-ph p4 (ou apt-get in stall libapach e2-m od-ph p5)
Si vous voulez in staller la documen tation en local : apt-get in stall apach e2-doc
Présentation de l'environnement
Le serveur HTTP Apach e2 est un programme modulaire. Mise à part quelques modules directemen t in tégrés dan s le programme bin aire h ttpd,
l'admin istrateur peut ch oisir les fon ction n alités qu'il souh aite en activan t des modules.
De même, il existe plusieurs fich iers de con figuration tous présen ts dan s /etc/apache2/.
Le fich ier de con figuration prin cipal est /etc/apache2/apache2.conf Il con tien t les paramètres gén éraux et commun s à tous les serveurs et
plusieurs "In clude" vers les autres fich iers.
Le fich ier de con figuration /etc/apache2/ports.conf con tien t la liste des ports en écoute.
On trouve tous les fich iers con cern an t les modules dan s le répertoire /etc/apache2/mods-available/.
On y trouve deux catégories de fich iers : *.load et *.conf
Les fich iers avec l'extension load ch arge effectivemen t les modules dyn amiques :
cat /etc/apache2/mods-available/userdir.load
LoadModule userdir_module /usr/lib/apache2/modules/mod_userdir.so Les fich iers avec l'extension conf son t les fich iers de con figuration des modules :
cat /etc/apache2/mods-available/userdir.conf
<IfModule mod_userdir.c>
UserDir public_html UserDir disabled root
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec </Directory>
</IfModule>
On trouve les fich iers con cern an t les modules activés dan s le
répertoire /etc/apache2/mods-enabled/ : ce son t un iquemen t ces fich iers qui son t in clus dan s le fich ier de con figuration prin cipal par les
directives :
Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf
Et ces fich iers son t en fait des lien s qui poin ten t vers les fich iers de /etc/apache2/mods-available
Pour activer un module (ce qui revien t don c à créer le lien ), il est pratique d'utiliser la comman de suivan te : a2en m od m od_user dir. Mais on peut bien évidemmen t créer le lien "à la main ".
On trouve tous les fich iers de con figuration des serveurs web /etc/apache2/sites-available/
On trouve les fich iers de con figuration des sites web activés dan s le
répertoire /etc/apache2/sites-enabled/ : ce son t un iquemen t ces
fich iers qui son t in clus dan s le fich ier de con figuration prin cipal par la directive :
Include /etc/apache2/sites-enabled/[^.#]*
Et ces fich iers son t en fait des lien s qui poin ten t vers les fich iers de /etc/apache2/sites-available
De même que pour les modules, pour activer un site, il existe un e
comman de : a2en site fich ier _con f. "fich ier_con f" étan t un fich ier de con figuration présen t dan s /etc/apache2/sites-available/
La documen tation est dan s /usr/share/doc. Les journ aux son t dan s /var/log/apache2/.
Le script de lan cemen t du service serveur est dan s /etc/init.d
Pour que le serveur Web puisse répon dre à un e deman de d'un clien t, il doit être démarré : /etc/in it.d/apach e2 star t.
Apach e2 n e fon ction n e qu'en stan dalon e (la directive ServerType n 'est don c plus recon n u).
Installation d'un service minimum
Ce paragraph e décrit les prin cipaux paramètres pour mettre en place un service HTTP min imum.
Pren ez la pein e de faire un e sauvegarde des fich iers de con figuration avan t de procéder à toutes modification s (par exemple : cp -r p /etc/apach e2 /etc/apach e2.in it).
Les modification s n e seron t prises en compte que si les fich iers de
con figuration s son t relus /etc/in it.d/apach e2 r eload ou si le service est redémarré /etc/in it.d/apach e2 r estar t.
Vous pouvez vérifier la syn taxe des fich iers de con figuration par la comman de : apach e2 -t
Commen t retrouver rapidemen t le fich ier dan s lequel se trouve un e directive
? :
grep -ni "documentroot" /etc/apache2/*
ne renvoie rien...
grep -ni « documentroot » /etc/apache/*/*
sites-available/default:5: DocumentRoot /var/www sites-enabled/000-default:5: DocumentRoot /var/www
L'option « n i » permet de ch erch er san s ten ir compte de la casse et de
ren voyer aussi le n uméro de la lign e. L'astérisque peut être remplacé par un n om de fich ier.
Dan s le fich ier /etc/apache2/ports.conf
Listen 80, in dique quel est le port utilisé par le service (par défaut 80).
Il est possible d'utiliser un autre port, par con tre vous devrez spécifier au n avigateur quel est le port utilisé par le serveur. Si vous con figurez par exemple le port 8080 (Listen 8080) sur un e mach in e
www.MonDomaine.edu, vous devrez spécifier dan s le n avigateur
www.MonDomaine.edu:8080, pour que le serveur reçoive et traite votre requête.
Dan s le fich ier /etc/apache2/apache2.conf
user www-data et group www-data, spécifien t le compte an on yme utilisé par le serveur un e fois qu'il est lan cé. En effet, pour accéder aux ports in férieurs à 1024, le serveur utilise un compte admin istrateur, ce qui présen te des dan gers. Un e fois le processus actif, il utilisera l'UID d'un autre compte (ici www-data). Ce compte doit pouvoir lire les fich iers de con figuration et ceux de la racin e du serveur HTTP (atten tion don c aux droits sur les pages web desservies). D'autres distribution s utilisen t le compte “n obody” ou “apach e”
ServerRoot /etc/apache2, in dique l'adresse du répertoire racin e du serveur, où son t stock és les fich iers de con figuration du serveur HTTP.
Cette adresse peut être modifiée.
PidFile /var/run/apache2.pid, in dique le fich ier où le serveur en exécution stock e son n uméro de processus (PID).
ErrorLog, fich ier error_log, journ alisation des erreurs. L'adresse est calculée à partir de ServerRoot. Si ServerRoot est /etc/httpd et ErrorLog logs/error_log, le ch emin complet est /var/log/apache /logs/error_log.
Il est fréquen t d'h éberger plusieurs serveurs web sur un même poste aussi la déclar ation et le par am étr age des différ en ts ser veur s est dépor tée dan s des fich ier s à placer dan s /etc/apach e2/sites-available/. Le fich ier default y est déjà présen t pour assurer le paramétrage du site prin cipal par défaut don t la racin e se trouve, toujours par défaut à /var/www/.
Le site par défaut est déjà activé ; on retrouve don c un lien vers ce fich ier dan s /etc/apache2/sites-enabled.
Sin on , le prin cipe est le suivan t :
On crée un fich ier de con figuration (appellé con f_site) pour un site web spécifique dan s /etc/apache2/sites-available/.
On active ce fich ier de con figuration par la comman de : a2en site con f_site ; cette comman de a pour effet de créer un lien dan s
/etc/apache2/sites-enabled/ qui poin te vers /etc/apache2/sites- available/conf_site.
De plus, il est aussi possible de fair e exécuter plusieur s in stan ces d'Apach e en spécifian t un fich ier de con figuration particulier par un e comman de du style : apach e -f fich ier _con fig où fich ier_con fig est le n om du fich ier de con figuration , en ch emin absolu (sin on il est con sidéré comme situé relativemen t à la directive ServerRoot, c'est-à-dire /etc/apache2, par défaut).
Les directives qui suiven t correspon den t à des serveurs spécifiques et son t don c in cluses dan s les fich iers de con figuration présen ts dan s /etc/apache2 /sites-available/ , n otammen t celui par défaut /etc/apache2/sites-
available/default.
ServerAdmin webmaster@localhost, précise quel est le compte qui reçoit les messages. Par défaut un compte spécifique admin istrateur de site web (à modifier pour un e adresse comme root@MonDomaine.edu).
ServerName www.MonDomaine.edu, in dique le n om ou l'alias avec lequel la mach in e est désign ée. Par exemple, l'h ôte ns1.MonDomaine.edu, peut avoir le n om d'alias www.MonDomaine.edu. Ce n om doit correspon dre à un e adresse IP, don c être ren seign é dan s un serveur DNS (ou dan s un premier temps mais à éviter en production dan s un fich ier h osts sur le cien t). S'il n 'est pas défin i, alors le serveur ten tera de le résoudre à partir de sa propre adresse IP. Voir la résolution de n om avec un DNS.
DocumentRoot /var/www, in dique l'emplacemen t par défaut des pages HTML quan d un e requête accède au serveur. Exemple : la requête h ttp://www.Mon Domain e.edu/in dex.h tml poin te en fait sur le fich ier local /var/ww/in dex.h tml sauf si le répertoire est poin té par un e directive tel que Alias (voir ci-après).
Alias /Ch emin Vu/ /Ch emin Réel/, par exemple : "/icon s/ /usr/sh are /apach e/icon s/", ce paramètre permet de ren ommer, à la man ière d'un lien logique, un emplacemen t ph ysique avec un n om logique.
Exemple: vous voulez que www.Mon Domain e.edu/test/in dex.h tml, n e correspon de pas ph ysiquemen t à un répertoire sur la racin e du serveur HTTP (défin i par la directive précéden te Documen tRoot) mais à un emplacemen t qui serait /usr/local/essai. Vous pouvez mettre dan s le fich ier de con figuration d'Apach e un alias de la forme: alias /test/
/usr/local/essai/
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin, de la forme "ScriptAlias Fak eName RealName", in dique où son t ph ysiquemen t situés les scripts sur le
disque, ain si que l'alias utilisé par les développeurs pour le
développemen t des scripts et des pages. Un développeur utilisera un lien (exemple : /cgi-bin /NomDuScript où /cgi-bin / est un alias sur /h ome/h ttpd/cgi-bin /), et c'est le script /h ome/h ttpd/cgi-bin
/NomDuScript qui sera effectivemen t exécuté. La mise en place d'alias permet de restructurer ou déplacer un serveur san s avoir à modifier
toutes les pages développées.
DirectoryIn dex don n e le ou les n oms des fich iers que le serveur doit rech erch er si le n avigateur passe un e requête sur un répertoire. Par exemple sur un e requête h ttp://www.Mon Domain e.edu, le serveur va rech erch er dan s l'ordre s'il trouve un fich ier in dex.h tml, in dex.stml, in dex.cgi... en fon ction des paramètres de cette variable.
On peut activer ou n on (activée par défaut) l'option "In dexes" au n iveau d'un répertoire (voir la partie suivan te con cern an t la sécurisation des accès) de man ière à ce que si un e URL poin te sur un répertoire, et aucun fich ier défin i par DirectoryIn dex n 'existe dan s ce dern ier, alors le serveur retourn e un e liste du con ten u du répertoire. Si l'in dexation n 'est pas activée (ce qui est plus sécurisé), on obtien t un e page d'erreur 403 ("You don 't h ave permission to access /repertoire on th is server").
Sécurisation des accès
Ch aque répertoire don t le con ten u doit être géré par Apach e2 peut être con figuré spécifiquemen t.
Pour ch aque répertoire "Un Répertoire", sur lequel on désire avoir un e action , on utilisera la procédure suivan te:
<Directory UnRépertoire>
...Ici mettre les actions...
</Directory>
Tout ce qui est en tre les balises s'applique au répertoire
"Un Répertoire".
Quelques option s :
<Directory UnRépertoire>
Options Indexes FollowSymLinks ExecCGI ...
</Directory>
Indexes : autorise l'affich age du con ten u d'un répertoire (si un fich ier par défaut n 'y est pas trouvé).
FollowSymLinks: le serveur est autorisé à suivre les lien s symboliques dan s ce répertoire.
ExecCGI : l'exécution de scripts CGI est autorisé.
Pour désactiver les option s (par exemple In dexes)
<Directory UnRépertoire>
Options -Indexes FollowSymLinks ExecCGI
...
</Directory>
Sécuriser un répertoire en autorisan t/refusan t l'accès
On peut réglemen ter pour ch aque répertoire le droit d'accéder aux pages con ten ues dan s ce répertoire, en fon ction de la mach in e clien te et/ou de l'utilisateur qui se con n ecte. Le fich ier dan s lequel ce
paramétrage s'effectue est un fich ier de con figuration présen t dan s /etc/apache2/sites-available/.
Exemple: On désire autoriser l'accès du répertoire "/in tran et" aux mach in es du réseau d'adresse 192.168.1.0/24 et de n om de domain e Mon Domain e.edu, et l'in terdire à tous les autres.
<Directory /intranet>
#Ordre de lecture des règles order allow,deny
deny from all
allow from 192.168.1 #ou encore allow from .MonDomaine.edu
</Directory>
Il importe de préciser dan s quel ordre les règles de restriction von t être appliquées. Cet ordre est in diqué par le mot réservé “order”, par
exemple “order den y,allow” (On refuse puis on alloue l'accès à quelques adresses, c'est à dire que toutes les régles den y von t être lues d'abord, puis ce sera le tour de toutes les règles allow) ou “order allow,den y” (on accepte gén éralemen t les accès mais il son t refusés pour quelques adresses : ici, on pren d en compte en premier lieu toutes les règles allow dan s l'ordre trouvé, puis en suite toutes les règles den y).
Exemple: On désire que l'accès soit majoritairemen t accepté, sauf pour un ou quelques sites.
<directory /home/httpd/html>
AllowOverride none Order deny,allow
deny from pirate.com badboy.com cochon.com allow from all
</directory>
Auth en tifier l'accès à un répertoire : ce procédé va permettre de
sécuriser l'accès à un répertoire ou à des fich iers. L'accès sera autorisé à un e ou plusieurs person n es ou en core à un ou plusieurs groupes de person n es.
AuthName, défin it ce qui sera affich é au clien t pour lui deman der son n om et son mot de passe,
AuthType, défin it le mode d'auth en tification et d'en cryptage “basic”
avec HTTP/0 ou “MD5” par exemple avec HTTP/1.
AuthUserFile, défin it le fich ier qui con tien t la liste des utilisateurs et des mots de passe. Ce fich ier con tien t deux ch amps (Nom d'utilisateur, Mot de passe crypté). Vous pouvez créer ce fich ier à partir du fich ier /etc/passwd (atten tion ! faille de sécurité. Il n 'est pas forcémen t avisé d'avoir le même mot de passe pour accéder à Lin ux et pour accéder à un dossier Web) ou avec la comman de "h tpasswd" d'Apach e.
Exemple du mode d'utilisation de la comman de "h tpasswd" : root@mr:/home# htpasswd --help
htpasswd [-cmdps] passwordfile username -c Create a new file.
#> htpasswd -c /etc/apache/users mlx
Ici on crée le fichier /etc/apache/users et on ajoute un compte.
N'utiliser l'option "-c" que la première fois.
AuthGroupFile défin it le fich ier qui con tien t la liste des groupes et la liste des membres de ch aque groupe,
Require permet de défin ir quelles person n es, groupes ou listes de groupes on t un e permission d'accès.
Exemple de fich ier Auth UserFile : doudou:zrag FmlkSsSjhaz
didon:PsddKfdqhgf.fLTER
Exemple de fich ier Auth GroupFile :
users: tintin milou haddock dupond dupont tournesol tournesol dupont
Exemple d'autorisation :
require user tintin dupond /* tintin et dupond ont un accès */
require group users /* le groupe users à un accès */
require valid-user /* toute personne existant dans AuthUserFile */
Exemple d'accès sécurisé sur un répertoire :
<Directory /home/httpd/html/intranet/>
AuthName PatteBlanche AuthType basic
AuthUserFile /etc/httpd/conf/users AutGroupFile /etc/httpd/conf/group
<Limit GET POST>#Ici il faudra un mot de passe require valid-user
</Limit>
</Directory>
Voici la fen être sécurisée que propose Netscape sur l'URL h ttp://localh ost/essai:
Figur e 16.1. Accés sécur isé sur un r éper toir e par Apach e
La déclaration d'un accès auth en tifié sur un répertoire peut être faite dan s le fich ier de con figuration correspon dan t, comme n ous ven on s de le voir, ou en créan t un fich ier ".h taccess" dan s le répertoire que l'on souh aite
sécuriser. Le fich ier ".h taccess" con tien t les mêmes directives que celles qui auraien t été déclarées dan s le fich ier h ttpd.con f. Ain si, il est possible de délocaliser la gestion de la con figuration , au moyen de fich iers spéciaux appelés par défaut .h taccess. Ce dern ier paramètre est modifiable.
Le ".h taccess" correspon dan t à l'exemple précéden t con tien t les directives suivan tes :
AuthName PatteBlanche AuthType basic
AuthUserFile /etc/httpd/conf/users AutGroupFile /etc/httpd/conf/group
<Limit GET POST>#Ici il faudra un mot de passe require valid-user
</Limit>
Atten tion :
Si vous mettez les clauses d'accès restreint pour un
répertoire dans le fichier de configuration d'Apache, les clauses seront incluses entre 2 balises :
<Directory ...>
</Directory ...>
Si vous mettez les clauses de restriction dans un fichier ".htaccess", vous n'avez pas besoin de mettre ces balises.
Quelques remarques :
Les fich iers .h taccess son t lus dyn amiquemen t au momen t de ch aque requête qui con cern e son répertoire : toute modification de ces fich iers pren d don c effet immédiatemen t san s qu'il soit n écessaire au service de relire la con figuration .
La directive AllowOverride Non e, permet de désactiver l'utilisation des fich iers .h taccess (atten tion , elle est à "Non e" par défaut). Pour
qu'Apach e lise ce fich ier il lui faut mettre la directive : AllowOverride AuthConfig
Limitation s de la sécurité par répertoire: ce procédé alourdit la ch arge du serveur. En effet, si un e requête est passée sur
www.Mon Domain e.edu/rep1/rep2/in dex.h tml, le serveur va vérifier dan s ch aque répertoire rep1, rep2... l'existen ce d'un fich ier .h taccess. Ce son t les règles du dern ier fich ier qui seron t appliquées. Ce processus est mis en oeuvre pour ch aque accès. Cette directive est don c à utiliser avec beaucoup de parcimon ie car elle crée un e surch arge pour le serveur.
Un serveur WEB personnel pour chaque utilisateur
Un e directive particulière Userdir public_h tml permet de gérer pour ch aque utilisateur (c'est à dire ch aque possesseur d'un compte) des pages
person n elles.
Dan s apach e2, cette directive est en fait associé à un module n on activé par défaut. Il suffit don c d'activer le module correspon dan t par la comman de a2en m od m od_user dir, ce qui aura pour effet de créer deux lien s vers les fich iers correspon dan ts userdir.con f et userdir.load.
Dan s userdir.con f, on trouve par défaut les directives suivan tes :
UserDir public_html, ce paramètre décrit le processus utilisé pour accéder aux pages person n elles d'un e person n e, si ces pages son t stock ées dan s son répertoire person n el.
Par défaut :
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>
Supposon s que vous êtes l'utilisateur "bestof" du réseau et que vous ayez des pages person n elles. Il sera possible d'accéder à vos pages, avec
l'adresse suivan te: www.Mon Domain e.edu/~bestof/in dex.h tml. Le (tilde
"~") permet d'accéder à votre répertoire person n el. La requête sera réellemen t exécutée sur "/h ome/bestof/public_h tml/in dex.h tml.
Atten tion , vérifier que le répertoire person n el n e soit pas en mode 700, car person n e n e pourrait accéder aux pages person n elles.
UserDir disabled root, ce paramètre, par mesure de sécurité n e permet pas à l'utilisateur "root" de mettre en lign e un web person n el.
La con figuration par défaut n 'est pas très sécurisée car elle oblige à mettre les droits de lecture à tout le mon de (755) sur le répertoire person n el. Il vous est possible de ch an ger la variable Userdir par exemple :
UserDir /home/web
Pen sez à ch an ger la valeur de Directory.
Activation du serveur (Rappel)
Utilisez les comman des suivan tes pour activer, désactiver le serveur:
/etc/in it.d/apach e star t /etc/in it.d/apach e stop
Pour relire le fich ier de con figuration alors qu'apach e est déjà lan cé, utilisez :
/etc/in it.d/apach e r eload
Pour activer et desactiver un module, utilisez : a2en m od n om Module
a2dism od n om Module
n omModule est le n om d'un module présen t dan s /etc/apaches2/mods- available
Pour activer et desactiver un site WEB, utilisez a2en site n om Site
a2dissite n om Site
n omSite est le n om d'un fich ier de con figuration du site présen t dan s /etc/apaches2/sites-available
Pen sez dan s tous les cas à con sulter les journ aux afin de détecter les dysfon ction n emen ts.
Test de la configuration
Lan cez le n avigateur et tapez l'url h ttp://localh ost. Vous devriez pouvoir utiliser in différemmen t l'adresse IP ou le n om d'h ôte de votre mach in e. Vous devez égalemen t pouvoir accéder à partir des autres mach in es de la salle.
Prev Up Next
Ch apter 16. In stallation d'un
serveur HTTP Home Question s