Sous
Debian sur un système vièrge. "apt-get install apache2"
:
Tapez
"O" (pour oui)
Le
Serveur est Installé.
Les fichiers de configuration
:
Ils
sont situés dans /etc/apache2/
De bases :
apache2.conf
: Fichier de configuration sur serveur Web proprement dit.
envvars
: Fichier servant la définition des variables d'environnement
du serveur. Sauf en de très rares occasions, vous n'aurez pas
besoin de le modifier.
httpd.conf
: La présence de ce fichier ne sert qu'à maintenir une
compatibilité avec d'anciennes applications. Dans la version
2 de apache il n'est plus utilisé.
ports.conf
: Il sert au paramètrage des ports du serveur. par defaut le
serveur écoute sur le port 80, mais on peut très bien
le faire écouter sur un autre port en fonction des besoins.
sites-available/
: Ce répertoire contient les fichiers de configuration des
sites disponibles (mais pas necessairement activés).
sites-enabled/
: Ce repertoire contient des liens vers les sites disponibles que
l'on désire activer.
mods-available/
: Fonctionne sur le même principe que pour sites-available,
mais concerne les modules apache qui sont disponibles.
mods-enabled/
: Contient de sliens vers les modules qui sont activés.
Le fichier apache2.conf
:
Voici
quelques éléments du fichier apache2.conf qui peuvent s'avérés
utile à modifier pour configurer votre serveur comme vous le souhaité
:
ServerRoot
: Par défaut : ServerRoot "/etc/apache2" . Définit
l'emplacement par défaut des fichiers de configuration de apache
User
www-dataet Group www-data : C'est le nom d'utilisateur
et le group qui lancera le démon Apache. Par défaut sous
Debian il s'agit de www-data.
AddDefaultCharset
: Par défaut ce paramètre est commenté. Il faut
le décommenté surtout s'il l'on veut un site en français.
Je vous conseille donc de passer ces paramètres :
AddDefaultCharset
ISO-8859-15 et dans le paragraphe ajouter : AddCharset
ISO-8859-15 .iso8859-15 .latin15 .fr
Paramètrage
des pages d'erreurs :
Cherchez
dans le fichier la la partie avec ce texte :
<IfModule
mod_negotiation.c>
<IfModule mod_include.c>
Alias /error/ "/usr/share/apache2/error/" <Directory
"/usr/share/apache2/error">
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz
nl nn no pl pt pt-BR ru sv zh-CN zh-TW
ForceLanguagePriority Prefer Fallback
</Directory>
Afin
d'avoir en priorité les erreurs en français il vous
faut modifier la ligne "LanguagePriority" afin d'avoir ceci
:
LanguagePriority
fr en ca cs da de el eo es et he hr it ja ko ltz nl nn no pl pt pt-BR
ru sv zh-CN zh-TW
Pour
avoir des pages d'erreurs personnalisées il faut utilisé
la directive ErrorDocument.
Cette directive se paramètres avec deux arguments : "le
code erreur" et "Document".
Le
code erreur est un élément standardisé à
tous les serveur web, de façon à ce que les navigateurs
puissent les interprétés. L'exemple le plus connu est
le code erreur 404 correspondant à une page introuvable.
Voici
la liste des codes erreurs :
400
: erreur de syntaxe dans l'adresse du document
401 : pas d'autorisation d'accès au document
402 : accès au document soumis au paiement
403 : pas d'autorisation d'accès au serveur
404 : la page demandée n'existe pas
405 : méthode de requête du formulaire non autorisée
406 : requête non acceptée par le serveur
407 : autorisation du proxy nécessaire
408 : temps d'accès à la page demandée expiré
409 : l'utilisateur doit soumettre à nouveau avec plus d'infos
410 : cette ressource n'est plus disponible
411 : le server a refusé la requête car elle n'a pas
de longueur
412 : la précondition donnée dans la requête a
échoué
413 : l'entité de la requête était trop grande
414 : l'URI de la requête était trop longue
415 : type de média non géré
500 : erreur interne du serveur
501 : requête faite au serveur non supprimée
502 : mauvaise passerelle d'accès
503 : service non disponible
504 : temps d'accès à la passerelle expiré
505 : version HTTP non gérée
L'autre
argument, "Document" peut prendre plusiseurs valeurs en
fonction du résultat que l'on veut obtenir :
Default :
Apache affichera le message d'erreur par défaut
"blabla
: Apache affichera le texte situé après la double
cote et ce jusqu'à la fin de la ligne.
/chemin/fichier
: Un chemin local vers un fichier permet à apache d'afficher
une page web que l'on a créé soit même.
http://www.url.fr
: Une URL complète permet la redirection vers un site de
son choix.
Création d'un
site web :
Comme
nous l'avons tout à l'heure dans l'énumération
des fichiers et dossiers présents dans /etc/apache2/ le sites
sont configurés dans sites-available. Apache permet de gérer
plusieurs sites internet en fonction du domaine sur lequel l'utilisateur
accède au serveur. Ainsi pour une seul adresse IP de votre serveur
vous pouvez héberger plusieurs sites internet diffèrents.
Par exemple www.nosland.com
et www.tt-nogent.fr
pointent tous les deux vers la même IP mais en fonction du nom
DNS que l'internaute a saisie dans son navigateur, ce ne sont pas les
même pages qui sont affichés.
Par soucis de lecture
je vous conseille de créé un fichier par sites dans le
repertoire sites-available. Dans cette documentation je vais créer
un site, monsite.com
Création
de monsite.com : lancer vi /etc/apache2/sites-available/monsite.com
Puis ajouter ces
lignes :
Code
à inserer
Explications
NameVirtualHost
*:80
De façon
a ce que le site écoute bien sur toutes les adresses
IP du serveur sur le port 80
<VirtualHost
www.monsite.com:80>
Ouverture
du bloc "virtualhost". On indique le nom DNS pour
lequel est paramètrer ce site.
ServerAdmin
webmaster@monsite.com
L'adresse
e-mail de l'administrateur du site. Il s'agit d'une variable
réutilisée notament dans certaines pages d'erreur
DocumentRoot
/www/docs/monsite.com/
Emplacement
du site proprement dit.Ce sera dans ce répertoire que
seront stokées toutes les pages html
ServerName
www.monsite.com
Le nom
du serveur Web pour ce site.
ErrorLog
logs/www.monsite.com-error_log
Emplacement
du ficher de log pour les erreurs
CustomLog
logs/www.monsite.com-access_log vcommon
Emplacement
du fichier de log pour les access. Le paramètre vcommon
permet à la fois d'avoir des logs standars réutilisables
par exemple dans des outils telque Webtrends ou AWstats et également
que l'adresse IP du visisteur soit loguée, et que ce
ne soit pas celle d'un éventuel proxy-cache en frontal
à votre serveur Web.
</VirtualHost>
Fermeture
du bloc VirtualHost
Une fois que vous
avez créé votre sites, il vous faut l'activer. En fait
il faut créé un lien dans sites-enabled.
Il y a une commande
qui fait ça très bien : a2ensite (la commande inverse
a2dissite existe également), qui permet d'activer le site (en
fait c'est un lien symbolique qui se créé).
a2ensite /etc/apache2/sites-available/monsite.com
Puis /etc/init.d/apache2
force-reload
Configuration avancée
:
Pour
chaques sites vous pouvez affiner la configuration de votre apache.
Dans le cas de site à forte affluence, vous pouvez jouer sur
des paramètres afin d'optimiser les temps de réponses.
Voici quelques pistes :
StartServers 5 : Le paramètre StartServers définit
le nombre de processus fils créés dès le démarrage
du serveur. Le nombre de ces processus étant contrôlé
dynamiquement en fonction de la charge, il y a en général
peu d'intérêt à modifier la valeur par défaut
de ce paramètre sauf dans le cas où le serveur doit
à un moment T répondre à énormément
de nouveau client. Ceci permet que les clients n'aient pas longtemps
à attendre car le processus est deja actif à leur
arrivée sur le serveur. (Source Apache.org)
ThreadsPerChild
50 :Ce paramètre indique au serveur combien de threads (tâches)
il doit lancer. Cela est équivalent au nombre maximum de
connexions que le serveur peut traiter simultanément ; soyez
sûr de vous et réglez le nombre suffisament haut si
votre site est très fréquenté. (Source Apache.org)
MinSpareServers
& MaxSpareServers : MaxSpareServers et MinSpareServers déterminent
combien de processus enfants doivent rester actifs tout en attendant
des requêtes. Si MinSpareServers est réglé trop
bas et qu'un grand nombre de demandes survient, Apache devra engendrer
des processus enfants supplémentaires pour satisfaire les
requêtes. Créer des processus enfants est relativement
exigeant en mémoire. Si le serveur est occupé à
créer des processus enfants, il ne sera pas en mesure de
prendre en charge les requêtes des clients immédiatement.
MaxSpareServers ne devrait pas être réglé trop
haut : trop de processus enfants consommeront des ressources inutilement.
Affinez MinSpareServers et MaxSpareServers de façon à
ce qu'Apache n'ait pas à engendrer plus de 4 processus enfants
par seconde (Apache peut engendrer un maximum de 32 processus enfants
par seconde). Si plus de 4 processus enfants par seconde sont engendrés,
un message est journalisé dans ErrorLog. (Source Apache.org)
ServerLimit
500 : C'est le nombre maximum de connexion qu'acceptera le serveur.
MaxClients
500 : La directive MaxClients fixe la limite maximale de requêtes
simultanées que le serveur peut prendre en charge ; aucun
processus enfant au-delà de ce nombre n'est engendré.
Il ne devrait pas être défini à une valeur trop
basse, sinon un nombre toujours croissant de connexions sont reportées
dans la file d'attente et occasionnent finalement un dépassement
du temps imparti, alors que les ressources du serveur restent inutilisées.
Si vous lui donnez une valeur trop élevée, en revanche,
le serveur commencera à « swapper », ce qui fera
diminuer considérablement le temps de réponse. La
valeur appropriée pour MaxClients peut être calculée
ainsi : MaxClients = Mémoire vive totale dédiée
au serveur web / Taille maximale des processus enfants. (Source
Apache.org)
MaxRequestsPerChild
20 : La directive MaxRequestsPerChild fixe la limite du nombre de
requêtes que gérera un seul processus enfant du serveur.
Après les requêtes MaxRequestsPerChild, le processus
enfant mourra mais comme il est fixé à 0 par défaut,
le processus enfant n'expirera jamais. Il est approprié de
donner à cette directive une valeur de quelques milliers.
Cela peut aider à empêcher des pertes de mémoire,
puisque le processus meurt après avoir satisfait un certain
nombre de requêtes. Ne fixez pas une valeur trop basse, car
la création de nouveaux processus est exigeante en temps
système. (Source Apache.org)
KeepAlive
et KeepAliveTimeout : La directive KeepAlive autorise l'envoi de
requêtes multiples sur la même connexion TCP. C'est
particulièrement utile pour la prise en charge de pages HTML
comportant de nombreuses images. Si KeepAlive est positionnée
sur Off, alors une connexion TCP séparée doit être
créée pour chacune des images. La surcharge causée
par l'établissement des connexions TCP peut être éliminée
en positionnant KeepAlive sur On. KeepAliveTimeout détermine
la durée d'attente de la prochaine requête. Donnez-lui
une valeur basse, peut-être entre deux et cinq secondes. Si
la valeur fixée est trop élevèe, les processus
enfants sont immobilisés, attendant le client alors qu'ils
peuvent être utilisés pour satisfaire de nouveaux clients.
(Source Apache.org)
Activation / Désactivation
d'un site :
Dans
le fichier /etc/apache2/apache2.conf vous avez normalement en bas du fichier
:
# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/[^.#]*
Ceci
veut dire que tous les fichiers de conf de sites présents dans
/etc/apache2/sites-enabled/ seront pris en compte.
Normalement dans ce
répertoire il n'y a aucun fichier physique. Les fichiers physiques
doivent être placé dans /etc/apache2/sites-available
par exemple, dans /etc/apache2/sites-available
vous avez deux fichiers : site1.conf et site2.conf.
a2ensite
site1.conf => Active site1.conf
a2dissite
site1.conf => Désactive site1.conf
Les
commandes pour être valider doivent être suivies de
/etc/init.d/apache2 restart/reload/force-reload
RewriteRules
:
Le module
rewriterule s'active via la commane : a2enmod rewrite.load
Ce
module sert à la réécriture d'adresse, mais peut
également servir à ouvrir une page spécifique
en fonction de la présence ou l'absence d'un fichier, ou encore
en fonction du navigateur qu'utilise l'internaute etc...
Voir
le module sur le module Rewrite : rewrite.php