(NCSA 1.4)
Le Web est le service le plus utilisé (avec le mail) actuellement
sur le NET et il s'avère nécessaire de bien le configurer.
Le démon décrit est le httpd 1.4 du NCSA. Lors d'une
connexion d'un client, il est créé un fils de httpd,
de nom httpd-Group défini dans la configuration du fichier
httpd.conf, et cela dans le cas d'un lancement du serveur en mode
standalone (le serveur est "lancé" à la
main et non par inetd).
httpd se lance soit en ligne de commande, en standalone (on le placera plutôt dans /etc/rc.d/rc.local), soit par inetd (/etc/inetd.conf est alors configuré pour, ainsi que le fichier /etc/services).
httpd peut être lancé avec des options :
| -d répertoire | Spécifie le répertoire absolu où se trouve
l'exécutable httpd, remplace l'option ServerRoot de httpd.conf |
| -f fichier | Lire fichier au lieu du fichier de configuration httpd.conf |
| -v | Version du httpd |
L'arborescence des fichiers du serveur se pésente de la forme suivante, étant la configuration par défaut :
httpd/ __
|-- cgi-bin/ les binaires (CGI)
|-- cgi-src/ les sources
|-- conf/ |-- access.conf
|-- httpd.conf
|-- srm.conf
|-- mime.types
|-- icons/ icônes pour FTP
|-- htdocs/ entrée des documents HTML
|-- logs/ |-- error_log
|-- agent_log
|-- access_log
|-- referer_log
|-- httpd.pid
| AccessConfig fichier | Spécifie l'accès au fichier access.conf en référence absolue ou relative au répertoire ServerRoot (conf/access.conf) |
| AgentLog fichier | Précise le fichier de traces des accès clients, donne le type du Browser, sa version, uniquement en standalone (logs/agent_log). |
| ErrorLog fichier | Fichier de trace des erreurs (logs/error_log). |
| Group [nom_groupe|gid] | Identifie le groupe propriétaire des copies httpd lors des réponses vers les clients, valable en mode standalone (par défaut le groupe nogroup, qui donnera comme nom de processus httpd-alone). Le numéro du groupe (gid) doit être pécédé d'un # (Group #-1). |
| User [nom_uti|uid] | Idem que Group mais précise l'utilisateur (par défaut l'utilisateur nobody). Le numéro d'utilisateur est précédé d'un # (User #-1). |
Group et User sont positionnés à nogroup
et nobody pour des raisons de sécurité. Dans le fichier
/etc/passwd, dans le champ concernant le shell, on activera la commande
/bin/false afin d'éviter toute possiblité de connexion
autre que le Web.
| IdentifyCheck [on|off] | Détermine si l'utilisateur distant est loggé sous son uid. Cette directive fonctionne si le client a le démon identd qui permet d'obtenir l'identification d'un utilisateur distant (off). |
| MaxServers nb | Nombre de fils maximum pouvant être lancés pour le compte Group. |
| PidFile fichier | Insère le pid du serveur dans le fichier spécifié (logs/httpd.pid). |
| Port numéro | Précise le port de connexion (80). |
| ResourceConfig fichier | Endroit où se trouve le fichier de configuration srm.conf (conf/srm.conf). |
| ServerAdmin email | E-mail de l'administrateur du serveur. |
| ServerName nom_machine | Nom de domaine de la machine ou un alias sur celle-ci. |
| ServerRoot répertoire | Définit le chemin absolu du serveur de la racine du serveur httpd (/usr/local/etc/httpd). |
| ServerType [inetd|standalone] | Spécifie le mode de marche du serveur, soit lancé à la main, soit par le démon inetd (standalone). |
| StartServers nb | Nombre de process que vous voulez lancer en concurrence. |
| TimeOut seconds | TIMEOUT pour les requêtes du client (1800) |
| TransfertLog fichier | Spécifie l'emplacement du fichier des traces sur les requêtes (machine,fichier, ou enregistrements) (logs/access_log). |
Les informations décrites par l'option TransferLog qui trace les accès sont les suivantes :
host rfc931 authuser [DD/Mon/YYYY:hh:mm:ss] "request" ddd bbb
Ce fichier est lu par divers utilitaires de statistiques :
| getstats | (http://www.eit.com/software/getstats/getstats.html) | ||
| wusage | (http://www.boutell.com/wusage/) | ||
| wwwstat | (http://www.ics.uci.edu/Admin/wwwstats.html) | ||
| TypesConfig fichier | Pécise le fichier de configuration MIME (conf/mime.types). |
| AccessFilename fichier | Fichier qui spécifie les permissions d'accès pour le répertoire ou fichier est placé (.htaccess) |
| AddDescription texte fichierID | Description texte qui décrit un type de fichier défini par une extension, un nom de fichier, une référence absolue ou un fichier utilisant '*'. |
| AddEncoding type ext | Action à associer, type, pour une extension définie. |
| AddIcon chemin nom1 [nom2...] | Icône à utiliser sur un type de fichier, pour une session FTP. |
| AddIconbyEncoding chemin nom1 [nom2...] | Même tâche que l'option précédente sauf que l'information encodée détermine l'icône utilisé |
| AddIconType chemin nom1 [nom2...] | Même tâche que AddIcon sauf que le type MIME détermine l'icône à utilisé. |
| AddType type ext | Remplace les définitions MIME spécifiées par les extensions ext trouvées dans le fichier mime.types. |
| Alias nom chemin | Définir des alias pour des répertoires. |
| DefaultType type | Type MIME par défaut (text/html). |
| DefaultIcon chemin | Icône par défaut (/icons/unknown.xbm). |
| DirectoryIndex fichier | Fichier d'accès par défaut du site (index.html) |
| DocumentRoot chemin | Référence absolue depuis lequel httpd retrouve les documents (/usr/local/etc/httpd/htdocs/). |
| FancyIndexing [on|off] | Ajoute les icônes, les fichiers, entêtes et pieds aux listes des fichiers qui sont automatiquement indexés (on). |
| HeaderName fichier | Nom du fichier utilisé pour l'entête de la liste des fichiers automatiquement indexés (HEADER). |
| IndexIgnore type1 type2... | Type des fichier ignorés lors de l'indexation des fichiers (*/.??**~*#*/HEADER */README). |
| IndexOption opt1 opt1... | Spécifie des paramètres d'indexation, tels que FancyIndexing, IconsAreLinks, ScanHTMLTitles, SuppressLastModified, SuppressSize et SuppressDescription. |
| OldScriptAlias nom chemin | Même tâche que Alias mais garde la compatibilité avec HTTP v1.0. |
| ReadmeName fichier | (README). |
| Redirect chemin URL | Permet dans le cas où une URL change pour un document de le pr´ciser aux clients (un site changeant d'adresse par exemple). |
| ScriptAlias nom chemin | Similaire à l'option Alias mais pour des scripts. |
| UserDir [répertoire|DISABLED] | Répertoire d'accès pour les comptes utilisateurs (public_html), par exemple pour une URL de type : www.alegria.fr/~od/. |
MIME : Codage des données en ASCII, notamment utilisé pour
le courrier. Les types MIME indiquent au client quel type de document il
doit traiter (text/html, image/gif, video/mpeg,...).
<Directory répertoire>
...
</Directory>
A l'intérieur de ces tags, on trouve des listes de permissions définies de la façon suivante :
<Limit opt1 [opt2]>
directives
</Limit>
et des commandes du type :
Options directives
AllowOverride directives
Directives disponibles pour Options :
| All | Aucune restrictions sur le répertoire. |
| ExecCGI | Autorisation d'exécuter des CGI dans ce répertoire. |
| FollowSymLinks | S'il existe des liens symboliques alors httpd a le droit de les atteindre. |
| Includes | Fichiers d'inclusions pour le serveur sont disponibles dans ce répertoire (<!--#include file="fichier --> en html). |
| IncludesNoExec | Inclure les fichiers mais interdire l'option Exec (<!--#exec cmd="cde"-->). |
| Indexes | Autorise les utilisateurs à retrouver les index générés pour ce répertoire. |
| None | Aucune autorisation sur ce répertoire. |
| SymLinksIfOwnreMatch | httpd suit les liens symboliques si le fichier ou le répertoire lié appartient au même utilisateur que le lien. |
Directives disponibles pour AllowOverride :
| All | Pas de restrictions sur les accès des fichiers dans ce répertoire. |
| AuthConfig | Rend disponible les options AuthName, AuthType, AuthUserFile, AuthGroupFile. |
| FileInfo | Rend disponible les options AddType et AddEncoding. |
| Limit | Rend disponible l'utilisation de <Limit>...</Limit>. |
| None | Tous les contrôles d'accès sur les fichiers de ce répertoire ne sont pas autorisés. |
| Options | Rend disponible l'utilisation des directives de l'option Options. |
Options pour AuthConfig :
| AuthName nom | Nom qui s'affichera sur la boite de dialogue lors de l'entrée du mot de passe. |
La fenêtre de la saisie du mot de passe apparait ainsi pour un nom
du type Saisie des sites (liens) :

| AuthType type | Type d'autorisation sur ce répertoire (seul Basic est implémenté). |
| AuthUserFile fichier | Fichier utilisé pour les utilisateurs avec leur mot de passe,
par exemple fichier : /usr/local/etc/httpd/conf/.htpasswd (voir la commande htpasswd ci-après). |
| AuthGroupFile fichier | Liste des groupes utilisateurs pour l'authentification des utilisateurs (voir explication détaillée ci-après). |
<Limit opt1[opt2]> Les options disponibles pour
<Limit> ont deux valeurs possibles :
| GET | : autorise les browsers à lancer les scripts et recevoir les documents HTML. | ||
| POST | : autorise les browsers à utiliser les scripts POST. | ||
Directives dans <Limit> directives <Limit> :
| allow from machine [machine...] | Autorise l'accès aux machines spécifiées. Format du champ machine : all : toutes les machines d'INTERNET, nom de domaine (.fr), nom de machine (ziggy.alegria.fr), adresse IP. |
| deny machine [machine...] | Restreindre l'accès aux machines. Format du champ machine :all : toutes les machines sont interdites, tout le reste est identique à allow. |
| order ordre | Ordre d'évaluation des directives allow et deny. ordre : allow,deny et deny,allow. |
| require user utilisateur | group groupe | Fait appel à un mot de passe pour l'accès au répertoire
(se joint aux directives Auth..., et à la commande htpasswd). utilisateur appartient au fichier donné par AuthUserFile ou groupe par AuthGroupFile. |
Le fichier de mots de passe utilisateurs (AuthUserFile) s'alimente grâce
à la commande htpasswd [-c] fichier utilisateur. L'option
-c permet de créer le fichier de passes.
Le fichier décrit dans l'option AuthGroupFile liste les utilisateurs pour un groupe.
htpasswd -c /usr/local/etc/httpd/passe/.htpasswd olivier
htpasswd /usr/local/etc/httpd/passe/.htpasswd niko.
Lorsque le lancement de httpd n'est pas en standalone, il est possible de le lancer par inetd. Il suffit de rajouter dans /etc/services et /etc/inetd.conf le démon httpd :
/etc/services:
| www 80/tcp http | ||
/etc/inetd.conf:
| www stream tcp nowait nobody /usr/local/etc/httpd/httpd httpd | ||
Bien sûr, on n'oubliera pas de préciser dans httpd.conf
que l'option ServerType se positionne à inetd.
httpd se redémarre en lui envoyant le signal SIGHUP : kill -HUP `head -1 httpd.pid`.
# Type de lancement ServerType standalone # Le port Port 80 # User/Group User nobody Group nogroup ServerAdmin webmaster@alegria.fr ServerRoot /usr/local/etc/httpd # Les traces ErrorLog logs/error_log TransferLog logs/access_log AgentLog logs/agent_log RefererLog logs/referer_log PidFile logs/httpd.pid ServerName www.alegria.fr
DocumentRoot /usr/local/etc/httpd/htdocs # repertoire pour un appel avec ~user. UserDir .www DirectoryIndex index.html FancyIndexing on # Icones AddIconByType (TXT,/icons/text.xbm) text/* AddIconByType (IMG,/icons/image.xbm) image/* AddIconByType (SND,/icons/sound.xbm) audio/* AddIcon /icons/movie.xbm .mpg .qt AddIcon /icons/binary.xbm .bin AddIcon /icons/back.xbm .. AddIcon /icons/menu.xbm ^^DIRECTORY^^ AddIcon /icons/blank.xbm ^^BLANKICON^^ DefaultIcon /icons/unknown.xbm ReadmeName README HeaderName HEADER IndexIgnore */.??* *~ *# */HEADER* */README* AccessFileName .htaccess DefaultType text/plain # Alias Alias /icons/ /usr/local/etc/httpd/icons/ ScriptAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/ # Les erreurs # 302 - REDIRECT # 400 - BAD_REQUEST # 401 - AUTH_REQUIRED # 403 - FORBIDDEN # 404 - NOT_FOUND # 500 - SERVER_ERROR # 501 - NOT_IMPLEMENTED ErrorDocument 302 /cgi-bin/redirect.cgi ErrorDocument 500 /errors/server.html ErrorDocument 403 /errors/forbidden.html
<Directory /usr/local/etc/httpd/cgi-bin>
Options Indexes FollowSymLinks
</Directory>
<Directory /usr/local/etc/httpd/htdocs>
Options Indexes FollowSymLinks IncludesNoExec
AllowOverride All
<Limit GET>
order allow,deny
allow from all
</Limit>
# Un repertoire d'acces restreints
</Directory>
<Directory /usr/local/etc/httpd/htdocs/Private>
Options All
AllowOverride all
# Libelle de la boite de dialogue
AuthName Saisie
AuthType Basic
# Fichier des utilisateurs
AuthUserFile /usr/local/etc/httpd/passe/.htpasswd
# Pas de groupe
AuthGroupFile /usr/local/etc/httpd/passe/NULL
<Limit GET>
order allow,deny
allow from .alegria.fr
require user olivier
require user niko
<Limit>
<Directory>
Pour toute information erronée ou demande de compléments, n'hésite pas à me contacter à l'adresse suivante :