apache
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
apache [2009/03/14 23:59] – root | apache [Date inconnue] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Introduction à la configuration d' | ||
- | |||
- | * L' | ||
- | * Il s'agit ici de prendre en main la configuration du serveur WEB Apache, et de comprendre les principaux paramètres et directives de l' | ||
- | * Pour chercher l' | ||
- | |||
- | grep -n " | ||
- | grep -ni " | ||
- | grep -ni " | ||
- | * Il est prudent de sauvegarder le fichier de configuration d' | ||
- | httpd -t | ||
- | |||
- | ===== Configuration de base ===== | ||
- | * La configuration personnalisée du serveur s' | ||
- | / | ||
- | Observer que le fichier commmonhttpd.conf est inclus dans le fichier de base httpd.conf, par la directive : | ||
- | Include conf/ | ||
- | Même si l'on a pas de raisons de les modifier, il est instructif de les parcourir pour découvrir les principales clauses paramétrables. Ce qui suit est la description des principaux paramètres, | ||
- | * **ServerType standalone** | ||
- | Le serveur s' | ||
- | * **ServerRoot** /etc/httpd | ||
- | Il s'agit du répertoire où le serveur trouvera son répertoire de configuration conf | ||
- | On trouve dans /etc/httpd, un lien vers / | ||
- | * **PidFile** / | ||
- | C'est le fichier où le serveur en exécution stocke son premier numéro de processus (PID) | ||
- | * **DocumentRoot** / | ||
- | fixe la racine du serveur Web, c' | ||
- | * **Port** 80 | ||
- | Apache écoute sur le port tcp usuel | ||
- | * **User** apache (dans commonhttpd.conf) | ||
- | **Group** apache | ||
- | Apache doit etre démarré par root, mais par sécurité ses processus auront pour propriétaire l' | ||
- | * **ServerAdmin** root@localhost (dans commonhttpd.conf) | ||
- | S'il a un problème, le serveur écrit un message à cette adresse | ||
- | * **UserDir** public_html | ||
- | Ce paramètre signifie que l' | ||
- | Sa page d' | ||
- | * **DirectoryIndex** index.html index.php index.htm ... | ||
- | Il est courant d' | ||
- | Cette liste ordonnée est indiquée par la clause DirectoryIndex | ||
- | * **AccessFileName** .htaccess | ||
- | Cette clause fixe le nom du fichier à trouver dans un répertoire pour que son accès soit protégé, en imposant à l' | ||
- | Voir cette page pour une explication de sa mise en oeuvre. | ||
- | |||
- | ===== Les modules ===== | ||
- | Apache est un serveur modulaire. Autour d'un noyau qui rassemble les fonctions de base on peut inclure des modules de façon dynamique (à condition de s'y connaitre !). Il existe un module spécial mod_so qui permet justement ce chargement dynamique. | ||
- | Les directives incluses dans httpd.conf // | ||
- | Par exemple voici les directives controlant le module PHP | ||
- | |||
- | LoadModule php4_module extramodules/ | ||
- | ..... | ||
- | AddModule mod_php4.so | ||
- | |||
- | Les modules dynamiques chargeables (fichiers .so) sont tous placés dans /// | ||
- | |||
- | Pour connaitre les modules compilés avec le core : | ||
- | |||
- | apache2 -l | ||
- | |||
- | ===== Réglages d' | ||
- | * **Timeout** 300 | ||
- | Paramètre important qui fixe la durée (en secondes) d' | ||
- | * **KeepAliveon** | ||
- | MaxKeepAliverequests 100 | ||
- | KeepAliveTimeout 15 | ||
- | Autorise les connexions persistantes d'un client, afin de lui permettre l' | ||
- | * **ServerName** www | ||
- | Fixe un nouveau nom public pour le serveur, auquel on pourra s' | ||
- | Bien entendu le nom symbolique www doit être connu du DNS ou du fichier hosts local (sous GNU/Linux ou MS/Windows) | ||
- | * **MinSpareServers4** | ||
- | MaxSpareServers 20 | ||
- | Nombres maximum et minimum de processus serveurs devant etre en permannence disponibles, | ||
- | * **StartServers** 4 | ||
- | Nombre de processus serveurs démarrés à l' | ||
- | * **MaxClients** 150 | ||
- | Nombre maximum de processus qu' | ||
- | * **MaxRequestsPerChild** 500 | ||
- | Nombre maximum de requetes HTTP traitées par un processus enfant avant qu'il ne soit éliminé. | ||
- | |||
- | ===== Controle des accès à un répertoire ===== | ||
- | |||
- | * Chaque répertoire auquel Apache accéde peut etre configuré particulièrement (ceci s' | ||
- | Attention, contrairement aux permissions Unix, les clauses s' | ||
- | |||
- | * extrait | ||
- | |||
- | # | ||
- | # Voici un exemple de paramétrage des permissions d' | ||
- | # d'etre restrictif à la racine et d' | ||
- | | ||
- | # Politique par défaut : accès interdit à tous à partir de / | ||
- | # (donc pour tout le système de fichier) sauf permissions à expliciter | ||
- | < | ||
- | order deny, allow | ||
- | deny from all | ||
- | Options None | ||
- | AllowOverride None | ||
- | </ | ||
- | | ||
- | # Pour la racine du serveur WEB, il faut bien permettre l' | ||
- | < | ||
- | # Options possibles : " | ||
- | # " | ||
- | Options Indexes Includes FollowSymLinks | ||
- | # AllowOverride = All pour donner la priorité aux fichiers .htaccess | ||
- | AllowOverride All | ||
- | order allow,deny | ||
- | # allow from = all pour permettre à tout le monde d' | ||
- | allow from all | ||
- | </ | ||
- | | ||
- | # pour le répertoire contenant les scripts: | ||
- | | ||
- | < | ||
- | AllowOverride None | ||
- | Options ExecCGI | ||
- | </ | ||
- | | ||
- | * Précisions sur la restriction des accès Pour un répertoire donné, dans son conteneur < | ||
- | On précise d' | ||
- | 1. **order allow, deny** : autorise les hotes de la liste allow, mais rejette ceux de la liste deny | ||
- | 2. **order deny, allow** : rejette les hotes de la liste deny, mais autorise ceux de la liste allow | ||
- | 3. exemple1 : soit à autoriser tout le réseau 172.16.0. sauf 172.16.0.25 | ||
- | # quel est le bon ordre : order deny, allow ou bien allow, deny ? | ||
- | order ..... | ||
- | # par contre l' | ||
- | allow from 172.16.0.0/ | ||
- | deny from 172.16.0.25 | ||
- | |||
- | 4. exemple 2 : n' | ||
- | |||
- | * Les paramétres d' | ||
- | **Option** signification | ||
- | //All | None// toutes | aucune option(s) permise(s) | ||
- | //ExecCGI// exécution de scripts autorisée | ||
- | // | ||
- | // | ||
- | // | ||
- | //Indexes// autorise l' | ||
- | * AllowOverride précise la manière avec laquelle des directives contenues dans un fichier .htacces seront prises en compte, si ces directives supplantent ou non celles qui sont dans le présent conteneur. | ||
- | Par défaut par sécurité, on choisit la valeur NONE (.htaccess est alors ignoré), et on positionne les autres valeurs qu'au cas par cas : ALL (prise en compte tatale), AuthConfig ou AuthUserFile (remplacement de AthName, | ||
- | |||
- | |||
- | ===== Contrôle d' | ||
- | |||
- | <Files fichier.html fichier2.html> | ||
- | | ||
- | AuthUserFile / | ||
- | AuthGroupFile / | ||
- | AuthName AccesRestreint | ||
- | AuthType Basic | ||
- | | ||
- | <limit GET POST> | ||
- | order deny,allow | ||
- | deny from all | ||
- | allow from .enst.fr | ||
- | require group intranet | ||
- | satisfy all | ||
- | </ | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | ===== Personnalisation ===== | ||
- | Les pages WEB personnelles | ||
- | |||
- | * Comment permettre aux utilisateurs de publier leurs "pages persos" | ||
- | * Tout naturellement, | ||
- | * La page d' | ||
- | * Ce sous-répertoire des pages personnelles a un nom spécifié par le paramètre UserDirdans le fichier httpd.conf . Donc par défaut, on y trouve : | ||
- | **UserDir** public_html | ||
- | * Plus concrétement, | ||
- | * On peut n' | ||
- | UserDir disable | ||
- | UserDir enable jean toto .... | ||
- | * Attention aux droits d' | ||
- | * En utilisant UserDir / | ||
- | |||
- | |||
- | ===== .htaccess et .htpasswd ===== | ||
- | |||
- | ==== le fichier .htaccess ==== | ||
- | |||
- | AuthName "Page d' | ||
- | AuthType Basic | ||
- | AuthUserFile "/ | ||
- | Require valid-user | ||
- | |||
- | Parmi ces 4 lignes, il y en a 2 que vous allez devoir changer : | ||
- | * AuthName : c'est le texte qui invitera l' | ||
- | * AuthUserFile : là c'est plus délicat, c'est le chemin absolu vers le fichier .htpasswd (que vous mettrez dans le même répertoire que le .htaccess). | ||
- | |||
- | |||
- | ==== le fichier .htpasswd ==== | ||
- | |||
- | Apache fournit un outil permettant de générer facilement des mots de passe cryptés (aussi bien sous Windows que sous Unix), il s'agit de l' | ||
- | |||
- | La syntaxe de cet utilitaire est la suivante : | ||
- | * Pour créer un nouveau fichier de mots de passe : | ||
- | htpasswd -c {chemin du fichier de mot de passe} utilisateur | ||
- | * Pour ajouter un nouvel utilisateur/ | ||
- | htpasswd {chemin du fichier de mot de passe} utilisateur | ||
- | |||
- | Le mot de passe sera demandé en ligne de commande avec une confirmation. | ||
- | Voici un exemple : | ||
- | htpasswd -c / | ||
- | |||
- | |||
- | ===== Utilisation d' | ||
- | * Il peut être utile de remplacer un chemin de répertoires par un nom symbolique. Ces répertoires alias peuvent etre paramétré comme les autres. | ||
- | * Exemple significatif Il s'agit d' | ||
- | |||
- | # pour accéder à la doc directement avec l'url http:// | ||
- | Alias /doc / | ||
- | # pour accorder les permissions d' | ||
- | < | ||
- | order deny,allow | ||
- | deny from all | ||
- | # permission à partir de localhost | ||
- | allow from localhost, 127.0.0.1 | ||
- | # permission à partir des stations du sous-domaine de l' | ||
- | allow from .bahut.ac-creteil.fr | ||
- | Options Indexes FollowSymLinks | ||
- | </ | ||
- | |||
- | ===== Héberger plusieurs sites WEB ===== | ||
- | * De façon générale, il est recommandé de faire exécuter plusieurs instances d' | ||
- | |||
- | httpd -f config | ||
- | où config est le nom du fichier de configuration, | ||
- | * C'est la solution retenue par les projets SLIS et SambaEdu | ||
- | Ainsi pour SLIS, il y a lancement dans /// | ||
- | Les paramètres usuels sont fixés ainsi : | ||
- | |||
- | ServerRoot /etc/hadmin | ||
- | DocumentRoot / | ||
- | Port 1098 | ||
- | |||
- | ===== Les sites WEB virtuels ===== | ||
- | * Plusieurs solutions sont envisageables pour faire héberger plusieurs sites dits " | ||
- | * Paramétrage dans / | ||
- | 1. décommentez les lignes suivantes tout à la fin du fichier (enlevez le # devant la ligne) : | ||
- | # pour indiquer où le paramétrage des sites vituels est décrit (relativement à /etc/httpd) | ||
- | Include conf/ | ||
- | # Pour activer les services virtuels | ||
- | LoadModule vhost_alias_module modules/ | ||
- | AddModule mod_vhost_alias.c | ||
- | 2. Exemple de modification dans / | ||
- | ################# | ||
- | NameVirtualHost 192.168.0.1 | ||
- | < | ||
- | ServerName linux | ||
- | #ServerPath /domain | ||
- | DocumentRoot / | ||
- | ErrorLog logs/ | ||
- | TransferLog logs/ | ||
- | </ | ||
- | |||
- | ===== Gestion et suivi des connexions ===== | ||
- | * La commande tail -f / | ||
- | On peut utiliser aussi less / | ||
- | |||
- | ===== Le module PHP ===== | ||
- | * PHP a normalement été intégré au serveur Apache sous forme d'un module chargeable, le fichier libphp4.so, situé comme tous les autres modules d' | ||
- | * Pour vérifier le chargement du module, consulter la fin du fichier de configuration d' | ||
- | On doit y trouver la directive d' | ||
- | * C'est ce fichier php.conf qui contient la directive d' | ||
- | |||
- | LoadModule php4_module / | ||
- | AddModule mod_php4.c | ||
- | AddType application/ | ||
- | AddType application/ | ||
- | |||
- | * PHP possède lui aussi son fichier de configuration, | ||
- | On peut néanmoins y observer que PHP prend bien en compte le module d' | ||
- | * En cas de modification d'un fichier de configuration , comme PHP fonctionne comme module d' | ||
apache.1237075191.txt.gz · Dernière modification : 2009/03/14 23:59 de root