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.
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, restart | sans commentaire |
status | affiche l'état du serveur. Nécessite mod_status et un navigateur web mode texte (comme lynx) |
fullstatus | idem, sans la liste des requêtes en cours |
gracefull ou reload | recharge le fichier de config, sans arrêter le serveur |
gracefull-stop | arrête proprement apache, en attendant que les connexions actives s'arrêtent, contrairement à stop qui arrête tout, tout de suite |
configtest | teste les fichiers de configuration |
Pour les autres, il faut lire le man.
Il existe quelques petites différences entre apache 1.x et 2.x :
On peut considérer que httpd.conf contient trois parties principales :
Les principales lignes à configurer concernant les serveurs (dans httpd.conf ou dans les fichiers de conf des virtuels), sont :
ServerName Nom | le 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épertoire | répertoire d'enregistrement des logs |
ServerRoot Répertoire | répertoire de base du serveur |
DirectoryIndex Page_web | pages par défaut d'apache pour chaque répertoire (en général index.html) |
Timeout Duree_en_secondes | durée du timeout |
KeepAlive on (ou off) | accepter plus d'une requête par connexion |
MaxKeepAliveRequests Nombre | nombre max de requête par connexion (0 pour illimité) |
KeepAliveTimeout Duree_en_secondes | nb 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/ |
La configuration des répertoires se fait entre des balises <Directory> et </Directory>. Par exemple :
Voici les options les plus intéressantes :
AllowOverride None | inhibe l'action de .htaccess, mettre All sinon (d'autres options sont possibles) |
DirectoryIndex test.html | page 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 FollowSymLinks | uivre les liens symboliques |
Options Indexes | permet de lister le répertoire (mettre -Indexes sinon) |
Options Includes | permet d'inclure des fichiers (nécessite mod_include) |
Options IncludeNOEXEC | idem, mais interdit l'exécution de scripts |
Options ExecCGI | permet d'exécuter des scripts CGI (bien charger les modules adéquats, exemple mod_perl pour perl) |
Options None | aucune option |
Remarque : les options peuvent se mettre sur une seule ligne en les séparant par des espaces. Exemple : "Options FollowSymLinks Indexes"
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 Fichier | fichier en local, sert uniquement si ServerRoot est un montage sur le réseau |
PidFile Fichier | fichier contenant le pid d'apache |
User Nom_utilisateur | user sous lequel tournera apache (ne jamais mettre root, pour une question de sécurité) |
Group Nom_groupe | groupe sous lequel tournera apache (ne jamais mettre root, pour une question de sécurité) |
StartServers Nombre | nombre de processus serveur à démarrer au lancement d'apache |
MaxClients Nombre | nombre max de clients simultanés |
Listen Nombre | port d'écoute d'apache (par défaut 80). On peut en ajouter plusieurs, ou des ips |
Voici un exemple de configuration :
Remarque : On peut avoir un hôte virtuel par défaut avec la directive <VirtualHost_default>.
Il faut rajouter une directive "ErrorDocument dans le fichier de conf du serveur.
Syntaxe :
exemples :
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 :
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 :
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 :
4. apachectl reload
Permet l'accès aux urls de type http://serveur/~fred/.
Nécessite le module mod_userdir.c.
Syntaxe :
Exemple :
charger un module :
exemple :
test sur un module :
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/.
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 /> :
Le chemin vers la page est le chemin relatif depuis le répertoire racine d'Apache.
Exemple :
Dernière mise à jour : 16 décembre 2009