connectiva penguin bsd logo

logo apacheApachelogo apache

Présentation

Gestion du démon (arrêt, démarrage et autres)

Configuration

Divers


Présentation

Apache est le serveur web le plus utilisé dans le monde. Les explications qui suivent dans cette page fonctionne sous linux et BSD avec les versions d'apache 2.x. Une bonne partie doit aussi fonctionner avec apache 1.3. C'est aussi probablement la même chose sous windows, mais je n'ai jamais essayé dessus.

Gestion du démon (arrêt, démarrage et autres)

Les différentes méthodes d'arrêt/relance du démon sont les suivantes :

Il existe de nombreuses options au daemon. Les plus courantes sont :

stop, start, restartsans commentaire
statusaffiche l'état du serveur. Nécessite mod_status et un navigateur web mode texte (comme lynx)
fullstatusidem, sans la liste des requêtes en cours
gracefull ou reloadrecharge le fichier de config, sans arrêter le serveur
gracefull-stoparrête proprement apache, en attendant que les connexions actives s'arrêtent, contrairement à stop qui arrête tout, tout de suite
configtestteste les fichiers de configuration

Pour les autres, il faut lire le man.

Configuration

les fichiers de configuration

Il existe quelques petites différences entre apache 1.x et 2.x :

structure des fichiers de configuration

On peut considérer que httpd.conf contient trois parties principales :

configuration des serveurs (principal ou virtuels)

Les principales lignes à configurer concernant les serveurs (dans httpd.conf ou dans les fichiers de conf des virtuels), sont :

ServerName Nomle nom du serveur. En prod, ne jamais laisser le hostname du serveur (pour une raison de sécurité), mais mettre www.site-web.com, et configurer le DNS pour qu'il fasse pointer le nom vers ce serveur
ErrorLog Répertoirerépertoire d'enregistrement des logs
ServerRoot Répertoirerépertoire de base du serveur
DirectoryIndex Page_webpages par défaut d'apache pour chaque répertoire (en général index.html)
Timeout Duree_en_secondesdurée du timeout
KeepAlive on (ou off)accepter plus d'une requête par connexion
MaxKeepAliveRequests Nombrenombre max de requête par connexion (0 pour illimité)
KeepAliveTimeout Duree_en_secondesnb de secondes à attendre pour la requête suivante pour la même connexion
Alias /test/ "/var/www/test/"http://nom_serveur/test pointe sur /var/www/test/

configuration des répertoires des serveurs

La configuration des répertoires se fait entre des balises <Directory> et </Directory>. Par exemple :

<Directory "/var/www/test">
   AllowOverride None
   DirectoryIndex test.html
   Options Indexes
</Directory>

Voici les options les plus intéressantes :

AllowOverride Noneinhibe l'action de .htaccess, mettre All sinon (d'autres options sont possibles)
DirectoryIndex test.htmlpage affichée quand on se connecte au répertoire
Order allow,deny
Allow from 192.168.1.
Deny from all
lit d'abord la liste Allow puis Deny
autorise tout le réseau 192.168.1 et rejette le reste. On peut egalement mettre "Allow 192.168.1.1" sans le "from"
Options FollowSymLinksuivre les liens symboliques
Options Indexespermet de lister le répertoire (mettre -Indexes sinon)
Options Includespermet d'inclure des fichiers (nécessite mod_include)
Options IncludeNOEXECidem, mais interdit l'exécution de scripts
Options ExecCGIpermet d'exécuter des scripts CGI (bien charger les modules adéquats, exemple mod_perl pour perl)
Options Noneaucune option

Remarque : les options peuvent se mettre sur une seule ligne en les séparant par des espaces. Exemple : "Options FollowSymLinks Indexes"

configuration spécifique au démon apache lui-même

Dans la configuration du démon, on retrouve la configuration des modules. Je vous renvoie sur la section dédiée aux modules pour plus d'infos. Sinon, les autres lignes intéressantes sont :

LockFile Fichierfichier en local, sert uniquement si ServerRoot est un montage sur le réseau
PidFile Fichierfichier contenant le pid d'apache
User Nom_utilisateuruser sous lequel tournera apache (ne jamais mettre root, pour une question de sécurité)
Group Nom_groupegroupe sous lequel tournera apache (ne jamais mettre root, pour une question de sécurité)
StartServers Nombrenombre de processus serveur à démarrer au lancement d'apache
MaxClients Nombrenombre max de clients simultanés
Listen Nombreport d'écoute d'apache (par défaut 80). On peut en ajouter plusieurs, ou des ips

configuration des serveurs virtuels

Voici un exemple de configuration :

# soit on dispose d'adresses ip (adressage par ip), soit on met une * (adressage par résolution de nom) et le serveur se débrouille en fonction de l'url (il faut faire pointer les adresses DNS vers le même serveur)

<VirtualHost 192.168.0.11> ou <VirtualHost *> ou <VirtualHost *:80>
   ServerName "www.exemple.com"
   DocumentRoot "/www/main"
   ServerAlias site.com *.site.com # permet un alias de nom
</VirtualHost>

<VirtualHost 192.168.0.12> ou <VirtualHost *>
   ServerName "www.support.exemple.com"
   DocumentRoot "/www/support"
</VirtualHost>

Remarque : On peut avoir un hôte virtuel par défaut avec la directive <VirtualHost_default>.

personnalisation des pages d'erreur

Il faut rajouter une directive "ErrorDocument dans le fichier de conf du serveur.

Syntaxe :

ErrorDocument NumeroErreur Lien_ou_Message

exemples :


ErrorDocument 404 "Page non trouvée"
ErrorDocument 500 http://www.exemple.com
ErrorDocument 401 /repertoire/page_erreur.html

protéger des pages et répertoires

Dans ce chapitre, nous allons voir les différentes étapes pour protéger les pages contenues dans /var/www/test/ et ses sous-répertoires.


1. créer un fichier mot de passes (vide pour l'instant), par exemple /var/www/.htpasswd
2. éditer le fichier de la forme :

fred:gWK3udIcGH832
bob:BgG6vsQflVS66

Ce fichier doit contenir les mots de passe sous forme cryptée uniquement. Pour le créer, il faut d'abord mettre n'importe quoi à la place du mot de passe.

Exemple :

fred:blabla
bob:bob

Puis, pour les crypter, on va taper "htpasswd -b /var/www/.htpasswd bob mot-de-passe en clair". Maintenant, le mot de passe de bob sera crypté. Il faut faire pareil avec tous les comptes. Si on ne veut pas que le mot de passe apparaisse en clair sur la ligne de commande, il faut taper "htpasswd /var/www/.htpasswd bob" et il va demander de taper le mot de passe.


3. éditer le fichier /var/www/test/.htaccess et copier dedans :

AuthUserFile /var/www/.htpasswd        # fichier mot de passe
AuthGroupFile /dev/null        # idem pour le groupe
AuthName "Accés réservé"        # texte qui apparait dans la boite de dialogue
AuthType Basic        # pour lui dire d'utiliser AuthUserFile
<Limit GET POST>
Require valid-user        # autorise tous les utilisateurs qui sont dans .htpasswd. On pourait mettre "Require user fred" pour n'autoriser que fred
</Limit>


4. apachectl reload

les espaces web utilisateurs

Permet l'accès aux urls de type http://serveur/~fred/.

Nécessite le module mod_userdir.c.

Syntaxe :

UserDir enabled

Exemple :

UserDir disabled root bin users # on active tous les répertoires persos, sauf ceux de root, bin et users.

les modules

charger un module :

LoadModule identifiant chemin

exemple :

LoadModule cgi_module
libexec/httpd/mod_cgi.so

test sur un module :

<IfModule [ ! ] identifiant_module>
   [ actions ]
</IfModule>

plus de docs (les docs officielles apache)

Les docs officielles apache sont beaucoup plus complètes que cette page. Elles contiennent toutes les directives de configuration, ainsi que les différences entre les versions. Elles sont accessibles ici : http://httpd.apache.org/docs/.

Divers

liste des modules compilés statiquement

httpd -l

modifier la page d'accueil par défaut

Lorsqu'on se connecte sur un serveur Apache sans préciser le répertoire (par exemple http://localhost/), on se retrouve sur une page d'accueil Apache souvant personnalisée pour sa distribution. Si on souhaite avoir une des pages installées comme page d'accueil, il faut ajouter la ligne suivante après la balise <Directory /> :

DirectoryIndex chemin_vers_la_page

Le chemin vers la page est le chemin relatif depuis le répertoire racine d'Apache.

Exemple :

<Directory />
   Options FollowSymLinks
   DirectoryIndex mediawiki/index.php
   AllowOverride None
</Directory>

Dernière mise à jour : 16 décembre 2009

Valid XHTML 1.1

logo firefox logo ubuntu logo debian logo mandriva logo gimp