Vous êtes sur la page 1sur 12

Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

In stallation et pr ésen tation du ser veur Apach e 2


Ch apter 16. In stallation d'un ser veur
Prev Next
HTTP

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

1 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

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

2 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

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

3 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

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

4 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

/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

5 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

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 ("Y ou 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

6 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

...
</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”

7 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

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

8 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

<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 ...>

9 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

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

10 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

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.

11 of 12 04/05/2010 02:47 PM
Installation et présentation du serveur Apache 2 http://www.linux-france.org/prj/edu/archinet/system...

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 Question s
Home
serveur HTTP

12 of 12 04/05/2010 02:47 PM

Vous aimerez peut-être aussi