Chrooter apache
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Graver en ligne de commande
Astuces
Astuces en Bash
Configuration reseau
Dns
Serveur cvs
Proxy squid 
Installation serveur ftp
Installation qmail 
Installation serveur courrier sous debian
Outil TCP/IP 
Le serveur samba
Connexion a distance securisee
Client/serveur vnc
Configurer apache
Dyndns
Chiffrer un fichier/dossier
Securiser son poste
Mur pare feu pas a pas
Authentification ht-access
Surveillance de serveur CACTI
Snort
Snort-inline
Securiser Apache avec mod_security
Filtrage squid/squidguard/dansguardian
Auditer son site web
Sécuriser son linux
Installer un Lamp avec ssl
Contrer les scans de ports
Traitement anti-spam
Installer/Utiliser tripwire
Utilisation de lilo
Les commandes Linux
Le multi-tache
Le crontab
Exploration de la configuration
Quotas
Messagerie
Installer une application
Debugger ses applications
Le format RPM
Mise a jour du noyau
Qemu
Tour d'horizon des principaux p2p
Récupération du système
Bips d'un pc
Astuces windows
Table Ascii
Lamerland
Conversion de fichiers musicaux
hakin9
Secureroot.com
Hackerthreads.org
Defcon
Hackerlounge
Les derniers exploits
Tous les codes sources
Securite sous Linux
Les logiciels libres quotidiens
Ezine divers
Madchat
Textes divers
Archives
 
Toutes les traductions
Toutes les traductions
Hackin9

Il y a actuellement 3 visiteurs connectés sur le site !

Google
Configuration et optimiser apache
Configuration et optimiser apache

 

Introduction
HostnameLookups
AllowOverride
MaxClients
KeepAlive et KeepAliveTimeout
La compression gzip avec apache2
Le caching avec apache

 

Introduction

Apache est un serveur Web libre qui est ce jour le serveur Web le plus utilisé sur Internet.
Il est trés important de mettre à jour et d'utiliser une version récente d'apache car:
- De nombreux bugs de sécurité ont été corrigé
- Cette documentation traite de la configuration des derniers serveurs apaches. Dans les anciennes versions, il y avait trois fichiers (httpd.conf, srm.conf, access.conf) mais maitenant tous sont regroupés dans un même fichier: httpd.conf.
Même si la compabilité avec les anciennes versions a été conservée (on peut toujours utiliser les anciens fichiers) je ne traite ici QUE du fichier httpd.conf.

Hostnamelookups

la directive HostnameLookups qui traduit les ips en noms d'hôtes ajoute un temps certains de latence entre chaque requête. HostnameLookups doit donc être à Off, mais vous n'aurez plus la traduction en hôte , délicat pour vos procédures de traçage des logs comme webalizer ou awstats ? Qu'à cela ne tienne : http://httpd.apache.org/docs/2.2/programs/logresolve.htmllogresolve est fait pour vous.

Dans votre fichier de configuration d'apache ,httpd.conf ,placez HostnameLookups à Off,et repérez votre fichier ou apache place ses logs d'entrées ,à savoir : access.log
saisissez ensuite : CustomLog /path/to/logs/access.log combined
Vérifiez que la première partie de chaque ligne correspond à l'adresse IP , c'est cette adresse qui sera traduite en nom d'hôte par logresolve à l'aide de la commande :
/path/to/logresolve -c < access.log > access_log.resolved le programme logresolve faisant partie d'Apache . Il faudra prévoir ici un certain temps de latence proportionnel à la longueur de votre fichier de logs . Ensuite il suffit de placer dans votre fichier de configuration de webalizer (ou autre analyseur de logs)
LogFile /home/deny/access_log.resolved sans oublier de relancer webalizer bien sûr .

Allowoveride

La directive AllowOverride all n'est valable que si un fichier .htaccess est placé dans le répertoire ou se trouve cette directive . Pour éviter qu'Apache ne cherche des fichiers .htaccess partout et soit sujet de ce fait à ralentissement ,placez cette directive à None partout ou il n'y a pas de fichiers .htaccess.

MaxClients

La directive MaxClients fixe la limite maximale des requêtes simultanées supportées par le serveur; Suivez la formule Total de la mémoire vive consacrée au serveur web / Taille maximale des processus fils.

KeepAlive et KeepAliveTimeout

La directive KeepAlive est utilisée dans le cas de requêtes persistantes. Cela sert pour des pages HTML avec beaucoup d'images. La surcharge causée par les connexions TCP persistantes peut être supprimée en fixant KeepAlive à On.
Fixez de même une valeur basse à KeepAliveTimeout qui définit la durée d'attente de la prochaine requête.

La compression gzip avec apache2

gzip se sert du module mod_deflate ,installé par défaut avec apache2, pour servir des pages compressées ,ce qui en diminue la taille et augmente donc la vitesse.
Ouvrez votre fichier httpd.conf et vérifiez que vous avez la configuration suivante:

#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
# Despite the name similarity, the following Add* directives have nothing
# to do with the FancyIndexing customization directives above.
#

AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
# Ici sur les deux lignes enlever le caractère # pour activer le gZip Encoding.
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddOutputFilterByType DEFLATE text/php text/HTML text/txt
#Ajouter cette ligne pour ne compresser au format gZip que les extensions de page HTML suivante : .php .html .txt

Pour vérifier que le navigateur charge bien la page compressée , comparez le poids de votre page dans le navigateur,et son poids dans votre répertoire personnel .

Le caching avec apache Utiliser le cache permet de stocker une partie des données chez le client ,ou bien sur un serveur proxy. La bande passante du serveur sera donc épargnée . Ceci peut être effectué avec les modules mod_expires et mod_headers
Ouvrez votre httpd.conf et vérifiez que les modules suivants sont activés :

LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so

Pour activer le cache de vos sites ,une manière simple est de cibler vos fichiers par leurs extensions.
Positionnez ExpiresActive à on.

ExpiresActive On

Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
ExpiresDefault A300

expiresbyType text/html M604800


Expires A2592000
expiresbyType image/gif A2592000


ExpiresDefault A300 fixe le délai d'expiration par défaut à 300 secondes après l'accès (A). Si vous utilisez M300 , le délai d'expiration sera de 300 secondes après la modification du fichier. La directive FilesMatch fixe les en-têtes de contrôle du cache pour tout fichier .html à 604800 secondes après modification. La seconde section FilesMatch fixe les en-têtes pour les fichiers images, JavaScript et fichiers CSS à 2592000 secondes (30 jours).

Il existe aussi des outils comme httperf pour mesurer les performances du serveur : http://www.hpl.hp.com/research/linux/httperf/
Téléchargez l'archive et placez-la dans votre répertoire /usr/local Ensuite désarchivez-la avec

gunzip httperf-0.8.tar.gz
tar xvf httperf-0.8.tar

compilez en root avec

./configure
make
make install

Il est important de lancer un programme httperf par client , l'application étant gourmande en mémoire. Voici un test sur mon serveur

httperf --server linux-pour-lesnuls.com --port 80
httperf --client=0/1 --server=linux-pour-lesnuls.com --port=80 --uri=/ --send-buffer=4096 --recv-buffer=16384 --num-conns=1 --num-calls=1
Maximum connect burst length: 0
Total: connections 1 requests 1 replies 1 test-duration 0.057 s
Connection rate: 17.5 conn/s (57.3 ms/conn, <=1 concurrent connections)
Connection time [ms]: min 57.3 avg 57.3 max 57.3 median 57.5 stddev 0.0
Connection time [ms]: connect 0.3
Connection length [replies/conn]: 1.000
Request rate: 17.5 req/s (57.3 ms/req)
Request size [B]: 73.0
Reply rate [replies/s]: min 0.0 avg 0.0 max 0.0 stddev 0.0 (0 samples)
Reply time [ms]: response 53.5 transfer 3.4
Reply size [B]: header 278.0 content 26444.0 footer 2.0 (total 26724.0)
Reply status: 1xx=0 2xx=1 3xx=0 4xx=0 5xx=0

et pour un test plus poussé
httperf --server linux-pour-lesnuls.com --port 80 --num-conns 100 --rate 10 --timeout 1
httperf --timeout=1 --client=0/1 --server=linux-pour-lesnuls.com --port=80 --uri=/ --rate=10 --send-buffer=4096
--recv-buffer=16384 --num-conns=100 --num-calls=1
Maximum connect burst length: 1
Total: connections 100 requests 100 replies 95 test-duration 10.502 s
Connection rate: 9.5 conn/s (105.0 ms/conn, <=6 concurrent connections)
Connection time [ms]: min 24.0 avg 62.5 max 458.0 median 26.5 stddev 83.9
Connection time [ms]: connect 0.0
Connection length [replies/conn]: 1.000
Request rate: 9.5 req/s (105.0 ms/req)
Request size [B]: 73.0
Reply rate [replies/s]: min 9.4 avg 9.5 max 9.6 stddev 0.1 (2 samples)
Reply time [ms]: response 58.6 transfer 3.9
Reply size [B]: header 278.0 content 26444.0 footer 2.0 (total 26724.0)
Reply status: 1xx=0 2xx=95 3xx=0 4xx=0 5xx=0
CPU time [s]: user 1.08 system 8.90 (user 10.3% system 84.7% total 95.0%)
Net I/O: 236.7 KB/s (1.9*10^6 bps)
Errors: total 5 client-timo 5 socket-timo 0 connrefused 0 connreset 0
Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0
La ligne correspondant à Total donne le résumé du nombre de connexions initiées par le client du nombre de requetes envoyées et recues , et de la durée du test .
La ligne suivante indique que le taux de connexion a été de 9.5 par seconde, ce taux corresponds à une période de 99.1 milliseconds par connection. au cours duquel 6 connexions ont été initiées simultanément .
Je vous laisse consulter la documentation pour une explication détaillée des lignes suivantes .

Sources de l'article


 

Forum d'entraide
Les news du site
Formulaire en php
Administrer un serveur Mysql
Session en php
Gerer ses bases mysql
Les bases php
Securiser ses scripts PHP
Controler ses programmes avec RATS
Convertir une base sql en utf8
Astuces php
Python rapide
Tutorial Python
Tutorial Perl
Tutorial Perl complet
Tutoriel ruby
Tutoriel C
Introduction à gawk
Filtres et utilitaires
Find
Programmation Shell
Ecriture de scripts bash
Expressions regulieres
Vi
Introduction a Javascript
Compiler avec gcc
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
Différentes failles Web
Arp spoofing dans un réseau switché
Les intrusions
Les attaques externes
Defacage
Defacage complet
Buffer overflow
Netcat
Injection sql
Injection sql(suite)
John the Ripper
Spoofer un email
Utiliser google
La faille system
Usurper une identité
Le rooting
Shellcode sous Unix
La faille race condition
La faille xss
La faille xss (2)
Attaques sur un routeur
Azureus pas-a-pas
Lire les news de Linux-pour-lesnuls.com au format RSS
Gestion des paquets debian
101 commandes debian
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Ensemble
Divers