grep -n "UserDir" /etc/httpd/conf/httpd.conf grep -ni "alias" /etc/httpd/conf/httpd.conf grep -ni "alias" /etc/httpd/conf/commonhttpd.conf * Il est prudent de sauvegarder le fichier de configuration d'origine. Pour vérifier la syntaxe de ce fichier, passser la commande: httpd -t
/etc/httpd/conf/httpd.conf. Ce fichier pour certaines installations est maintenant scindé en deux parties httpd.conf et commmonhttpd.conf Observer que le fichier commmonhttpd.conf est inclus dans le fichier de base httpd.conf, par la directive :
Include conf/commmonhttpd.conf (ligne 117)
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, et leur valeur attribuée par défaut à l'installation.
Le serveur s'exécutera seul, sans recourir au super-serveur xinetd.
Il s'agit du répertoire où le serveur trouvera son répertoire de configuration conf On trouve dans /etc/httpd, un lien vers /var/log/httpd/access_log, le fichier-journal des accès aux ressources, réussis ou non (le consulter)
C'est le fichier où le serveur en exécution stocke son premier numéro de processus (PID)
fixe la racine du serveur Web, c'est-à-dire le répertoire de base où sont cherchées par défaut les pages html, lorsque l'URL ne comporte pas de chemin de répertoire
Apache écoute sur le port tcp usuel
Group apache Apache doit etre démarré par root, mais par sécurité ses processus auront pour propriétaire l'utilisateur apache, sans privilège.
S'il a un problème, le serveur écrit un message à cette adresse
Ce paramètre signifie que l'utilisateur toto peut publier ses pages WEB personnelles dans un sous-répertoire de son répertoire perso, qui doit être nommé public_html, c'est-à-dire dans /home/toto/ public_html. Sa page d'accueil sera alors accessible par l'URL : http://serveur/~toto , où serveur est le nom du serveur ou son adresse IP.
Il est courant d'omettre le nom du fichier de la page d'accueil d'un site ou de l'un de ses sous-répertoires. Pour ne pas retourner systématiquement une erreur 404 signalant une adresse erronnée, le serveur posséde une liste standard de noms de fichiers qu'il s'efforce de trouver dans le répertoire. Cette liste ordonnée est indiquée par la clause DirectoryIndex
Cette clause fixe le nom du fichier à trouver dans un répertoire pour que son accès soit protégé, en imposant à l'utilisateur une authentification par nom et mot de passe. Ces comptes sont spécifiques à Apache et n'interfèrent pas avec les comptes Linux. Voir cette page pour une explication de sa mise en oeuvre.
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 LoadModule chargent les modules dynamiques et AddModule précise l'ordre d'intégration des modules statiques et dynamiques. Par exemple voici les directives controlant le module PHP
LoadModule php4_module extramodules/libphp4.so ..... AddModule mod_php4.so
Les modules dynamiques chargeables (fichiers .so) sont tous placés dans /usr/lib/apache2/modules/.
Pour connaitre les modules compilés avec le core :
apache2 -l
Voir la liste des modules chargés par apache :
apache2ctl -t -D DUMP_MODULES
Paramètre important qui fixe la durée (en secondes) d'attente maximum du serveur d'une réponse à une requete envoyée à un programme extérieur (comme un gestionnaire de base de données)
MaxKeepAliverequests 100
KeepAliveTimeout 15
Autorise les connexions persistantes d'un client, afin de lui permettre l'envoi de plusieurs requetes sans déconnexion, avec un plafond fixé pour un client, pour servir aussi d'éventuels autres clients ! et un temps d'attente maxi de la requete suivante provenant du meme client.
Fixe un nouveau nom public pour le serveur, auquel on pourra s'adresser par les URL http://www/ Bien entendu le nom symbolique www doit être connu du DNS ou du fichier hosts local (sous GNU/Linux ou MS/Windows)
MaxSpareServers 20 Nombres maximum et minimum de processus serveurs devant etre en permannence disponibles, en attente de nouvelles connexion clientes
Nombre de processus serveurs démarrés à l'initialisation, en plus du processus père. Ceci explique pourquoi la requete ps aux|grep httpd renvoie 5 PID.
Nombre maximum de processus qu'Apache peut lancer et gérer simultanément. Ce nombre ne peut pas excéder 254
Nombre maximum de requetes HTTP traitées par un processus enfant avant qu'il ne soit éliminé.
Attention, contrairement aux permissions Unix, les clauses s'appliquent AUSSI à TOUS les sous-répertoires. En revanche, une directive <Directory rep> spécifique à l'un des sous-répertoires s'impose.
#--------------------- Global Access Configuration ------------------------ # Voici un exemple de paramétrage des permissions d'accès. Il est préférable # d'etre restrictif à la racine et d'étendre les permissions à des répertoires spéciaux. # Politique par défaut : accès interdit à tous à partir de / # (donc pour tout le système de fichier) sauf permissions à expliciter <Directory /> order deny, allow deny from all Options None AllowOverride None </Directory> # Pour la racine du serveur WEB, il faut bien permettre l'accès <Directory /var/www/html> # Options possibles : "None", "All", ou plusieurs combinaisons de: # "Indexes", "Includes", "FollowSymLinks", "ExecCGI", ou "MultiViews". 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'accéder aux documents allow from all </Directory> # pour le répertoire contenant les scripts: <Directory /var/www/cgi-bin> AllowOverride None Options ExecCGI </Directory> * Précisions sur la restriction des accès Pour un répertoire donné, dans son conteneur <Directory>, on peut préciser les hotes dont les requetes seront traitées, et ceux dont les requetes seront rejetés.
On précise d'abord une règle générale avec la directive order allow, deny ou l'inverse, qui précise la règle à appliquer aux machines qui figurent sur les listes explicites qui suivent les clauses allow from et deny from 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'ordre relatif de ces 2 clauses suivantes n'a pas d'importance allow from 172.16.0.0/255.255.255.0 deny from 172.16.0.25
4. exemple 2 : n'autoriser que certaines machines, par exemple la machine 172.16.0.100 et une machine voisine du meme réseau
Option signification All | None toutes | aucune option(s) permise(s) ExecCGI exécution de scripts autorisée FollowSymLinks le serveur suivra les liens symboliques rencontrés dans le répertoire Includes permet l'utilisation de SSI IncludesNOEXEC permet l'utilisation de SSI sauf les directives #exec et #include Indexes autorise l'affichage du contenu d'un répertoire (si un fichier par défaut n'y est pas trouvé)
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,AuthType et Require), ce qui est suffisant pour protéger l'accès à un site privé par une authentification.
<Files fichier.html fichier2.html> AuthUserFile /usr/local/bin/www/httpd_1.3/basedenoms/.htpasswd AuthGroupFile /usr/local/bin/www/httpd_1.3/basedenoms/.htgroup AuthName AccesRestreint AuthType Basic <limit GET POST> order deny,allow deny from all allow from .enst.fr require group intranet satisfy all </Limit> </Files>
Les pages WEB personnelles
UserDir disable
UserDir enable jean toto .... * Attention aux droits d'accès ! L'accès de tous à ces sites persos exige que le droit de parcours x soit accordé à tous les rép. des utilisateurs et à public_html(droits 771), et que le droit de lecture r soit bien sûr accordé aux fichiers des pages pour tous (droits 644) * En utilisant UserDir /home/*/public_html, où * est remplacé par un nom d'utilisateur, celui-ci n'aplus besoin de posséder un compte sur le système.
AuthName "Page d'administration protégée" AuthType Basic AuthUserFile "/home/sdz/www/gestion/admin/.htpasswd" Require valid-user
Parmi ces 4 lignes, il y en a 2 que vous allez devoir changer :
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'utilitaire htpasswd accessible dans le sous-répertoire bin d'Apache.
La syntaxe de cet utilitaire est la suivante :
htpasswd -c {chemin du fichier de mot de passe} 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 /www/secure/.htpasswd JFPillou
# pour accéder à la doc directement avec l'url http://Serveur/doc Alias /doc /usr/share/doc # pour accorder les permissions d'accès limitées au site doc <Directory /usr/share/doc> 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'établissement allow from .bahut.ac-creteil.fr Options Indexes FollowSymLinks </Directory>
httpd -f config
où config est le nom du fichier de configuration, avec son chemin absolu (sinon il est consiséré comme situé relativement à ServerRoot, c'est-à-dire /etc/httpd, par défaut.
Ainsi pour SLIS, il y a lancement dans /etc/rc.d/rc.local de /usr/sbin/httpd -f /etc/hadmin/conf/httpd.conf. Les paramètres usuels sont fixés ainsi :
ServerRoot /etc/hadmin DocumentRoot /home/hadmin/html/ Port 1098
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/vhosts/Vhosts. # Pour activer les services virtuels LoadModule vhost_alias_module modules/mod_vhost_alias.so AddModule mod_vhost_alias.c
2. Exemple de modification dans /etc/httpd/conf/vhosts/Vhosts.conf pour mettre en place un site virtuel pour mon site LINUX, consultable à l'url : http://linux.bahut.ac-creteil.fr
################# Named VirtualHosts NameVirtualHost 192.168.0.1 <VirtualHost 192.168.0.1> ServerName linux #ServerPath /domain DocumentRoot /var/www/LinuxCours/formation ErrorLog logs/linux-error_log TransferLog logs/linux-access_log </VirtualHost>
Voir la liste des vhosts :
apache2ctl -t -D DUMP_VHOSTS
On peut utiliser aussi less /var/log/httpd/access_log puis Shift-F pour basculer à la fin du fichier en attente de données (Ctrl-C pour finir)
On doit y trouver la directive d'inclusion du fichier de configuration de PHP : Include conf/addon-modules/php.conf, le chemin étant supposé relatif à /etc/httpd
LoadModule php4_module /usr/lib/apache/libphp4.so AddModule mod_php4.c AddType application/x-httpd-php .php .php4 .php3 .phtml AddType application/x-httpd-php-source .phps
On peut néanmoins y observer que PHP prend bien en compte le module d'extension MySql, contenant les fonctions d'accès au “moteur” de base de données MYSQL (qui a du être installé à part), par la présence de extension=mysql.so (en ligne 243)
php5 -m
http://apache.webthing.com/mod_proxy_html/ pour utiliser ProxyHTMLURLMap (module mod_proxy_html)
ServerName author.example.com ProxyPass / ajp://localhost:8009/ ProxyPassReverse / ajp://localhost:8009/ ServerName site1.example.com ProxyPass /.magnolia/ ajp://localhost:8009/.magnolia/ ProxyPass /.resources/ ajp://localhost:8009/.resources/ ProxyPass /docroot/ ajp://localhost:8009/docroot/site1/ ProxyPass /dms/ ajp://localhost:8009/dms/site1/ ProxyPass /resources/ ajp://localhost:8009/resources/site1/ ProxyPass / ajp://localhost:8009/site1/ ProxyPassReverse /.magnolia/ ajp://localhost:8009/.magnolia/ ProxyPassReverse /.resources/ ajp://localhost:8009/.resources/ ProxyPassReverse /docroot/ ajp://localhost:8009/docroot/site1/ ProxyPassReverse /dms/ ajp://localhost:8009/dms/site1/ ProxyPassReverse /resources/ ajp://localhost:8009/resources/site1/ ProxyPassReverse / ajp://localhost:8009/site1/ SetOutputFilter INFLATE;proxy-html;DEFLATE ProxyHTMLURLMap /docroot/site1/ /docroot/ ProxyHTMLURLMap /dms/site1/ /dms/ ProxyHTMLURLMap /resources/site1/ /resources/ ProxyHTMLURLMap /site1/ /
<Host name="site1.example.com" appBase="public" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host> <Host name="author.example.com" debug="0" appBase="author" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host>