Dans cet article je présente la mise en oeuvre complète d'Apache sur des plates-formes du type IBM AIX. Cette mise en oeuvre comprend la compilation des sources Apache, la construction de la procedure d'installation, ainsi qu'un ensemble complet de paramètres et d'options permettant d'intégrer ce produit dans des architectures impliquant par exemple des serveurs d'application et exigeant des performances élevées.
ServerName otr-srv-03 :80
Les directives de configuration du serveur Apache sont enregistrées dans le fichier httpd.conf situé dans le sous-répertoire conf de l’arborescence d’installation d’Apache (Exemple : /apache/apache_2.0.49/conf). Le fichier httpd.conf contient des valeurs par défaut à adapter en fonction de l’environnement.
3.3.1.1 Répertoire du serveur Apache
La directive ServerName permet de spécifier, soit le nom du serveur, soit son adresse IP. Dans le cas du nom du serveur, le nom indiqué doit être associé à une adresse IP (serveur DNS, ou fichier hosts).
Les directives suivantes permettent d’exploiter cette caractéristique:
Les tests sont effectués sur un Bull Escala PowerPC 4,
muni du système AIX 5.2
Adresse IP
|
|
Système d'exploitation
|
AIX 5.2
|
Processeur
|
Power 4 1,2Ghz
|
Mémoire
|
1Go
|
Place Disponible
|
34 Go
|
Pour des questions pratiques, j'ai choisi la release
d’Apache 2.0.49. Celle-ci est téléchargée depuis le site d’Apache Foundation Software: http://httpd.apache.org/.
1. Génération des binaires Apache 2
1.1 Installation
du compilateur gnu-gcc
Le compilateur utilisé pour la création des binaires
Apache est le gcc-3.3.2.0, complété par
flex-2.5.4 pour la partie PHP.
Le compilateur est téléchargé à partir du site bull: http://www.bullfreeware.com
ou à partir du jeux de CD acquis auprès de Bull.
Les produits sont transférés sur AIX par FTP:
Les produits Bull sont
livrés sous forme de .exe auto-décompressables . Chaque fichier
auto-décompressable (.exe) contient un fichier backup AIX ou fichier bff
(Backup File Format). Le fichier .bff extrait peut ensuite être installé à
l’aide de l’outil SMIT. SMIT (System Management Interface Tool) est un logiciel d’administration
système pour AIX.
gcc-3.3.2.0.exe
L’extraction du contenu
du gcc-3.3.2.0.exe est effectuée dans le répertoire /usr/local,
avec les commandes suivantes, exécutées sous le profil root:
cd /usr/local
chmod +x gcc-3.3.2.0.exe
./ gcc-3.3.2.0.exe
A l’issu de ces deux commandes, on obtient le fichier:
gcc-3.3.2.0..bff
Pour installer le fichier bff, nous utilisons les
commandes:
rm –f .toc
smit install_latest
Le programme smit demande de spécifier le répertoire
contenant le fichier bff (.). L’action de la touche F4 permet ensuite
d’afficher tous les modules installables contenus dans le “package”. La
sélection d’un module s’effectue en actionnant la touche F7.
A l’issu de cette procedure, le compilateur gcc est
installé sur l’AIX.
1.2 Compilation
des modules pre-requis
Le module de compression
Zlib 1.2.1 est indispensable pour l’utilisation de mod-deflate.
Comme d’habitude, on décompresse zlib-1.2.1.tar et on le
compile à partir de notre répertoire /usr/work.
tar xvf zlib-1.2.1.tar
cd zlib-1.2.1
make clean
./configure –s
make
mkdir /usr/work/apache/zlib-for-apache
mkdir /usr/work/apache/zlib-for-apache/lib
mkdir /usr/work/apache/zlib-for-apache/include
cp –p zlib.h zconf.h zutil.h /usr/work/apache/zlib-for-apache/include
cp –p libz.a
/usr/work/apache/zlib-for-apache/lib
1.2.2 Openssl
Les sources
Openssl sont placés dans le répertoire /usr/work/openssl-0.9.7d
Compilation:
cd
/usr/work/openssl-0.9.7d
./configure
make
make install
1.3 Compilation
du noyau Apache 2 et installation
La compilation s’effectue en trois phases:
-
La définition de l’environnement du binaire Apache: répertoire
et modules;
-
La compilation;
-
L’installation.
L’environnement pré-requis est le
suivant:
-
Espace disque pour Apache: 25 Mo;
-
Compilateur gcc;
Toutes les commandes lancées dans ce cadre sont effectuées
à partir du répertoire des sources Apache 2:
/usr/work/apache/httpd-2.0.49.
1.3.1 Définition de l’environnement
L’objet ici est de définir :
- Le répertoire d’exécution d’Apache 2;
- Les modules standards d’Apache compilés en statique.
./configure
--prefix=/apache/apache_2.0.49 \
--enable-access\
--enable-auth \
--enable-include \
--enable-log_config \
--enable-env \
--enable-expires \
--enable-setenvif \
--enable-proxy \
--enable-deflate \
--with-z=/usr/work/apache/zlib-for-apache\
--enable-proxy_connect \
--enable-proxy_ftp \
--enable-proxy_http \
--enable-ssl \
--enable-prefork \
--enable-http_core \
--enable-mime \
--enable-status \
--enable-autoindex \
--enable-asis \
--enable-info \
--enable-cgi \
--enable-negotiation \
--enable-dir \
--enable-imap \
--enable-actions \
--enable-userdir \
--enable-alias \
--enable-rewrite \
--enable-so \
--with-mpm=prefork
Cette directive:
-Définit /apache/apache_2.0.49
comme répertoire d’Apache 2. Il
s’agit du répertoire dans lequel Apache 2 sera installé.
-Active le fonctionnement d’Apache avec les modules partagés (plug-in)
-Active le fonctionnement d’Apache avec les modules partagés (plug-in)
A l’issue de cette opération (45 minutes), un fichier makefile est disponible pour la
compilation.
1.3.2 Compilation.
Elle s’effectue avec la comande:
make
La compilation peut durer de 10 à 15 minutes. A l’issu de
celle-ci, l’installation peut être
lancée.
L'installation des binaires issus de la compilation est
effectuée avec la commande :
make
install
2.1 Répertoires principaux
L’arborescence des répertoires d’Apache se présente de la
façon suivante:
Sous-répertoire
|
|
Apache_2.0.49/bin
|
Sous-répertoire des programmes.
|
Apache_2.0.49/conf
|
Sous-répertoire des fichiers de configuration.
|
Apache_2.0.49/error
|
Sous-répertoire des fichiers de message.
|
Apache_2.0.49/htdocs
|
Sous-répertoire des pages html d’Apache .
|
Apache_2.0.49/icons
|
Sous-répertoire des icônes utilisées dans Apache.
|
Apache_2.0.49/logs
|
Sous-répertoire des journaux d’accès et d’erreurs.
|
Apache_2.0.49/manual
|
Sous-répertoir des manuels d’Apache
|
Apache_2.0.49/modules
|
Sous –répertoire des modules dynamiques
|
Les fichiers de configuration:
Fichier
|
Objet
|
conf/httpd.conf
|
Contient les
paramètres de fonctionnement d’Apache
|
Conf/mime.types
|
Définit les
associations types mimes –extension des fichiers que peut retourner le
serveur
|
2.2 Démarrage d’Apache
A partir du sous répertoire bin d’Apache2, taper:
./apachectl
start
Pour vérifier le démarrage d’apache, à partir d’Internet
explorer ou tout autre navigateur, taper:
http://nomserveur/
On peut aussi indiquer l’adresse IP du serveur abritant
Apache 2.
Exemple:
http://192.168.0.12
Apache doit retourner sa page d’accueil:
2.3 Arrêt Apache 2
A partir du sous répertoire bin d’Apache 2, taper:
./apachectl
stop
2.4 Les modules apache 2 installés
Les modules ci-dessous
sont ceux généralement retenus en production. .
Module
|
Type
|
Fonction
|
http_core.c
|
Statique
|
|
mod_access.c
|
Statique
|
Gère le ccontrôle
d'accès basé sur les noms d'hôtes ou les adresses IP du client.
|
Prefork.c
|
Statique
|
|
mod_actions.c
|
Statique
|
Permet
l'exécution de scripts CGI basés sur un type de média particulier ou une
méthode de requête HTTP
|
mod_alias.c
|
Statique
|
Permet
l'intégration de diverses parties du système de fichiers dans l'arborescence
de documents servis par le serveur, et intègre le mécanisme de re direction
d'URL.
|
mod_auth.c
|
Statique
|
Permet
une authentification des utilisateurs sur la base de fichiers texte.
|
mod_cgi.c
|
Statique
|
Il met en place le
mécanisme qui permet l'exécution de scripts CGI. Tout fichier de type MIME application/x-httpd-cgi
sera traité par ce module.
|
mod_deflate.c
|
Statique
|
|
mod_dir.c
|
Statique
|
Il
gère la redirection d'URL avec "slash final" et renvoie l'index de
répertoire.
|
mod_env.c
|
Statique
|
Il
procure le mécanisme pour passer des variables d'environnement à des scripts
CGI/SSI
|
mod_expires.c
|
Statique
|
Il gère la génération
des champs d'en-tête Expires: en fonction de
critères propres à l'utilisateur
|
mod_include.c
|
Statique
|
Il
permet la composition dynamique de documents HTML par le serveur.
|
mod_info.c
|
Statique
|
Il
permet d'obtenir une vue d'ensemble de la configuration courante du serveur
dont la liste des modules installés et des directives des fichiers de
configuration du serveur.
|
mod_log_config.c
|
Statique
|
Gère l'enregistrement de la trace des requêtes
reçues par le serveur
|
mod_mime.c
|
Statique
|
Donne à Apache la
capacité de déterminer le type de document
|
mod_negotiation.c
|
Statique
|
Gère la
négociation de contenu, ou plus précisément, la sélection de contenu.
Celle-ci consiste en la sélection d'une version de document qui correspond le
mieux aux possibilités du client, parmi un ensemble de documents.
|
mod_proxy.c
|
Statique
|
Ce module implémente un proxy/cache pour Apache
|
proxy_connect.c
|
Statique
|
Gère les fonctionnalités de proxy pour CONNECT.
|
proxy_ftp.c
|
Statique
|
Gère les fonctionnalités
de proxy pour ftp.
|
proxy_http.c
|
Statique
|
Gère les
fonctionnalités de proxy pour http 0.x, 1.x.
|
mod_rewrite.c
|
Statique
|
Fournit un interpréteur de règles dont l'action est de
réécrire "au vol" les URL requises.
|
mod_setenvif.c
|
Statique
|
Gère
la définition des variables d’environnement d’après les informations du
client
|
mod _so.c
|
Statique
|
Gère
les fonctionnalités de chargement de modules dynamiques (EX ; plugin Web
logic, PHP, etc)
|
mod _ssl.c
|
Dynamique
|
Gestion
de la sécurisation SSL
|
mod_status.c
|
Statique
|
Le
module d'état mod_status permet à l’ administrateur du serveur d’obtenir des
informations statistiques sur le fonctionnement du serveur.
|
mod_userdir.c
|
Statique
|
Gère
la définition de répertoires propres à un utilisateur.
|
mod_autoindex.c
|
Statique
|
|
mod_asis.c
|
Statique
|
|
mod_imap.c
|
Statique
|
|
php4_module
|
dynamique
|
Module
PHP 4
|
mod_wl_20.so
|
dynamique
|
Connecteur
WebLogic Server
|
3. La configuration Apache 2
L'installateur Apache 2
met en place des paramètres standards
et minimum dans le fichier de configuration: httpd.conf. Le fichier de
configuration est localisé dans le sous répertoire apache_2.0.49/conf.
3.1 Groupe et Utilisateurs Apache
Comme précisé ci-dessus, des utilisateurs et un groupe
spécifiques sont dédies à Apache, pour des question de sécurités et
d’homogénéité. Ces utilisateurs et groupes possèdent aussi un ‘ID’ bien
définit.
Des utilisateurs et un groupe spécifiques sont dédies à
Apache, pour des questions de sécurités et d’homogénéité. Ces utilisateurs et
groupes possèdent un ‘ID’ bien défini.
Groupe
|
Id
|
Utilisateurs du groupe
|
webgrp
|
2800
|
webadm
|
w3user
|
3.2 Configuration minimale ou standard
Les principaux paramètres à examiner après une
installation standard sont listés ci-après.
# Répertoire de base
d’Apache 2
ServerRoot /apache/apache_2.0.49
ServerRoot /apache/apache_2.0.49
# Enregistrement identifiant process
<IfModule !mpm_netware.c>
PidFile logs/httpd.pid
</IfModule>
DocumentRoot /usr/local/apache2
PidFile logs/httpd.pid
</IfModule>
DocumentRoot /usr/local/apache2
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
# Port d’écoute Apache
listen 80
#
# Dynamic Shared Object (DSO) Support
#
# A activer en fonction
des besoins
#
#
#--------------Added DSO ------------------
LoadModule access_module modules/mod_access.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_module modules/mod_auth.so
#LoadModule auth_anon_module modules/mod_auth_anon.so
#LoadModule auth_dbm_module modules/mod_auth_dbm.so
#LoadModule auth_digest_module
modules/mod_auth_digest.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule cgi_module modules/mod_cgi.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule file_cache_module
modules/mod_file_cache.so
#LoadModule headers_module modules/mod_headers.so
LoadModule imap_module modules/mod_imap.so
LoadModule include_module modules/mod_include.so
#LoadModule info_module modules/mod_info.so
#LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
#LoadModule mime_magic_module
modules/mod_mime_magic.so
LoadModule negotiation_module
modules/mod_negotiation.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule status_module modules/mod_status.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule vhost_alias_module
modules/mod_vhost_alias.so
#LoadModule ssl_module modules/mod_ssl.so
User nobody
Group nobody
Group nobody
ServerAdmin
admin@cloud-france.com
# Nom du serveur ou
adresse IP
ServerName srvr03:80
La signification de tous ces paramètres est fournie dans
les manuels Apache 2 . On peut expliquer très succintement quelques uns des
plus importants.
ServerRoot
/apache/apache_2.0.49
Cette option spécifie le
répertoire principal d'Apache 2. Les différents composants sont placés dans les
sous-répertoires du ServerRoot : bin
pour les programmes, conf pour les fichiers de
configuration, logs pour les journaux d'accès ou d'erreur, modules
pour les modules dynamiques, man pour les pages de manuel, etc.
Cette option prend comme valeur celle spécifiée pour le paramètre
"--prefix" lors de la configuration de la compilation du noyau
Apache.
LoadModule
Les directives LoadModule permettent l'utilisation des modules
dynamiques (ou Dynamic Shared Objects, DSO).
Listen 80
Cette directive spécifie
le port sur lequel le serveur Apache attend des requêtes. 80 est la valeur par
défaut et correspond à la valeur attribuée au service www par les
instances de normalisation.
Remarque : Un
programme devant utiliser un port
inférieur à 1024 doit être lancé avec les droits de root. Apache doit dont
être lancé avec les droits de root, sachant que la sécurité d’accès aux pages
web est garantie par le mécanisme de fonctionnement client/serveur d'Apache.
User nobody
Group nobody
Group nobody
Les directives User
et Group
permettent de spécifier un utilisateur et un groupe fictifs qui détermineront
les droits d'accès du serveur Apache, le but étant de limiter les risques en
cas d'intrusion par un pirate. En effet le
processus père Apache , tournant avec les droits root, attend des
connexions sur le port 80. Lorsqu'une demande de connexion arrive, ce processus
père crée un processus fils (tournant avec les droits nobody) qui va être chargé de satisfaire les demandes du client
venant de se connecter. C'est donc un processus ayant des droits restreints qui
va lire les fichiers et les envoyer au navigateur.
ServerAdmin admin@cloud-france.com
La directive ServerAdmin permet simplement de définir
une adresse email qui sera affichée sur les pages générées par Apache (pages
d'erreur, présentation de répertoire, etc.)
ServerName otr-srv-03 :80
Cette directive permet
de forcer un nom d'hôte qui sera renvoyé au navigateur client, par exemple www
plutôt que le nom d'hôte réel. Toutefois vous ne pouvez pas spécifier n'importe
quel nom ; celui que vous avez choisi devra être défini dans le DNS local.
Si ce n'est pas le cas, il faudra spécifier son adresse IP.
DocumentRoot
/apache/apache_2.0.49
Cette option permet de
spécifier dans quel répertoire sont stockées les pages présentes à la racine du
site.
Les directives de configuration du serveur Apache sont enregistrées dans le fichier httpd.conf situé dans le sous-répertoire conf de l’arborescence d’installation d’Apache (Exemple : /apache/apache_2.0.49/conf). Le fichier httpd.conf contient des valeurs par défaut à adapter en fonction de l’environnement.
Voici les
premières directives du fichier httpd.conf
à ajuster:
ServerRoot /apache/apache_2.0.49
PidFile
/var/apache/run/httpd.pid
Listen 80
ServerAdmin webmaster@cloud-france.com
ServerName <Nom-serveur ou adresse-IP>
DocumentRoot /appli/httpd/htdocs
<Directory "/appli/httpd/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow
from all
</Directory>
3.3.1.1 Répertoire du serveur Apache
La directive ServerRoot
permet d’indiquer le répertoire où est localisé le serveur Apache.
Exemple :
ServerRoot /apache/apache_2.0.49
Les différents composants d’Apache 2 sont placés dans les
sous-répertoires du ServerRoot , en
particulier: bin pour les programmes, conf pour les fichiers de
configuration, logs pour les journaux d'accès ou d'erreur, modules
pour les modules dynamiques.
3.3.1.2 Identificateur du process Apache
La directive PidFile
permet de spécifier le nom complet d’un fichier devant recevoir
l’identification du processus principal du serveur Apache. Cet identificateur
est un numéro pouvant être utilisé pour tuer le processus Apache, avec la
commande kill.
Exemple :
PidFile
/var/apache/run/httpd.pid
3.3.1.3 Ports d’écoute
La directive Listen
ou Port permet de spécifier le port
d’écoute du serveur Apache. Le port à utiliser est le port 80, spécifié avec la directive ‘Listen’. Il est préférable de
choisir la directive Listen, car dans un cas où plusieurs ports sont
spécifiés, les directives Listen fusionnent les ports d’écoute,. Par
ailleurs, il est possible de spécifier
une adresse IP avec le port (ip:port) . Le port 443 est utilisé pour les connexions sécurisés SSL.
Exemples :
Listen 80
Listen 443 (port sécurisé HTTPS)
Remarque : Un
programme devant utiliser un port
inférieur à 1024 doit être lancé avec les droits de root. Apache doit dont
être lancé avec les droits de root, sachant que la sécurité
d’accès aux pages web est garantie par le mécanisme de fonctionnement
client/serveur d'Apache.
3.3.1.4 Adresse e-mail de l’administrateur
La directive ServerAdmin
permet de spécifier l’adresse e-mail de L’administrateur du serveur afin que
celui-ci puisse être contacté en cas de problème.
Exemple :
ServerAdmin webmaster@cloud-France.com
3.3.1.5 Nom
du serveur
La directive ServerName permet de spécifier, soit le nom du serveur, soit son adresse IP. Dans le cas du nom du serveur, le nom indiqué doit être associé à une adresse IP (serveur DNS, ou fichier hosts).
Exemples :
ServerName apache.cloud.net
ServerName 192.168.0.12
ServerName SRVR03
3.3.2 Répertoire d’accueil du serveur Principal
Même lorsqu’on héberge plusieurs sites web dans la même instance Apache, il est
indispensable de spécifier le répertoire d’accueil du serveur principal
d’Apache, avec la directive ‘DocumentRoot’.
Cette directive permet de restreindre les utilisateurs à l’arborescence
spécifiée.
Exemple :
DocumentRoot
/appli/httpd/htdocs
Le répertoire /appli/httpd/htdocs contient des fichiers index permettant de vérifier le fonctionnement du serveur Apache. Il est aussi fourni un fichier info.php permettant de vérifier le fonction d’Apache avec PHP, si ce dernier est est activé.
3.3.3 Utilisateur et groupe Apache
Les directives User et Group permettent de spécifier un utilisateur et un groupe qui détermineront les droits d'accès du serveur Apache, le but étant de limiter les risques en cas d'intrusion. En effet le processus père Apache , tournant avec les droits root, attend des connexions sur le port 80. Lorsqu'une demande de connexion arrive, ce processus père crée un processus fils (tournant avec les droits User) qui va être chargé de satisfaire les demandes du client venant de se connecter. C'est donc un processus ayant des droits restreints qui va lire les fichiers et les envoyer au navigateur.
Exemple:
User httpuser
Group webgrp
3.4 Configuration optimisée
Les principales optimisations du serveur Apache concernent les délais de transaction client/serveur. Les optimisations visent donc à réduire les temps de réponse du serveur Apache, soit en utilisant une compression des flux (mod_deflate, anciennement mod_gzip), soit en modifiants les différents paramètres du fichier httpd.conf (processus pré-chargés, requêtes maximum par client, …), ou encore en jouant sur les caches comme avec mod_expires.3.4.1 Les Modules d’optimisation
3.4.1.1 mod_expires
Cible : Sites
avec de nombreux objets statiques (images, javascript, …) ayant une fréquence
de mise à jour faible.
Gain : Nombre de
Hits diminués
Le module statique apache “ Expires ” permet de ne plus
émettre de requêtes vers le serveur pour récupérer un objet quand celui-ci est
en cache dans le navigateur. Il y a ainsi économie des requêtes de type HTTP
304 (Not Modified).
Exemple d’implémentation :
ExpiresActive On # enable expirations
ExpiresByType
image/gif A2592000 # expire GIF images after a
# month
in the client's cache
ExpiresByType
text/html M604800 # HTML documents are good for
# a
week from the time they
# were
changed, period
Ces directives peuvent être implémentées au niveau d’un
virtual-Host.
3.4.1.2 mod_deflate
Cible : Sites
avec des flux réseaux élevés
Gain :
Compression du trafic réseau émis
depuis le frontal HTTP .
Lorsqu’il est sollicité, ce module permet de compresser les
données avant que celles-ci ne soient envoyées au navigateur. mod_deflate permet
d'économiser de la bande passante, souvent de manière considérable. La
contrepartie de cette compression est une forte charge CPU. mod_deflate
remplace l'ancien module mod_gzip
d'Apache 1.x. Pour que le serveur active la compression avec mod_deflate,
il faut que le navigateur soit récent (Internet Explorer 5.01 au minimum avec
http/1.1 d’activé).
SetOutputFilter
DEFLATE
#
Avec Netscape 4.x on ne compresse
#
que les fichiers de type text/html
BrowserMatch ^Mozilla/4
gzip-only-text/html
#
Avec Netscape 4.06-4.08 on ne
#
compresse rien du tout
BrowserMatch ^Mozilla/4\.0[678]
no-gzip
#
Internet Explorer se fait passer pour
#
Netscape mais on peut tout compresser
BrowserMatch \bMSIE !no-gzip
!gzip-only-text/html
#On
ne compresse pas les images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
#
On s'assure que les serveurs mandataires
#
ne délivrent pas un contenu erroné
Header
append Vary User-Agent env=!dont-vary
#
On ajoute le ratio de compression dans les logs
DeflateFilterNote
ratio
LogFormat
'"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
Pour voir le ratio de compression dans les logs d'Apache,
changez la ligne
CustomLog logs/access_log common
par
CustomLog logs/access_log deflate.
En plus des gains apportés par les modules d’optimisation,
les principales optimisations du serveur Apache concernent les délais de
transaction client/serveur. Le simple fait de modifier certaines valeurs dans
le fichier ‘httpd.conf’ peut grandement influencer le comportement du serveur.
Les optimisations visent donc à réduire les temps de réponse du serveur Apache.
Par défaut, dans le fichier ‘httpd.conf’ les valeurs de ces directives de
connexion sont optimisées pour une machine comportant 512 mo de mémoire.
Sur AIX, Apache 2 met en œuvre un mécanisme multi-process et multi-threads au sein de
chaque process.
Les directives suivantes permettent d’exploiter cette caractéristique:
MaxClients
MaxRequestsPerChild
MaxSpareServers
MinSpareServers
StartServers
MaxClients
La directive MaxClients
indique le nombre limite de requêtes simultanées pouvant être acceptées par le
serveur ; il représente le nombre maximum de processus serveur fils qui peuvent
tourner à un instant donné. Les tentatives de connexions au delà de MaxClients
sont normalement mises en attente ; une fois qu'un processus fils est
libre à la fin d'une requête différente, la connexion en attente est traitée.
MaxRequestsPerChild
La directive MaxRequestsPerChild
indique le nombre limite de requêtes qu'un processus serveur fils peut traiter.
Au-dessus de cette limite, le processus fils meurt. Si ce paramètre est fixé à
0, alors les processus fils ne meurent jamais.
Le fait de mettre ‘MaxRequestsPerChild’ à une valeur non
nulle a deux conséquences bénéfiques :
- Cela limite le volume de mémoire qu'un processus peut consommer et évite une saturation mémoire.
- En donnant à un processus un temps de vie fini, le nombre total de processus impliqués dans le serveur décroît lorsque la charge du serveur retombe.
MaxSpareServers
La directive MaxSpareServers
indique le nombre maximal de processus fils en attente. Un processus en attente
est un processus qui existe, mais qui ne traite pas de requête. S'il existe
plus de processus fils que la limite
fixée par MaxSpareServers, alors le
père viendra tuer les processus supplémentaires. (Fonctionnalité
particulièrement utile dans les
environnements vraiment très chargés).
MinSpareServers
La directive ‘MinSpareServers’ indique le nombre minimum de
processus fils en attente qu'un serveur pourra conserver. S'il existe moins de
processus serveurs fils en attente, le processus père recréera des processus
fils au rythme de 1 par seconde. (Fonctionnalité particulièrement utile
dans les environnements vraiment très
chargés).
StartServers
La directive ‘StartServers’ définit le nombre de processus
fils créés dès le démarrage du serveur. Le nombre de ces processus est contrôlé
dynamiquement en fonction de la charge.
Recommandations
Paramètre
|
Valeur
|
MaxSpareServers
|
MaxClients
|
MinSpareServers
|
MaxClients
|
StartServers
|
MaxClients
|
Pour une machine dédié uniquement à un serveur Apache, il
est recommandé d’appliquer cette politique de paramétrage. Celle-ci vise à
consacrer Apache à répondre exclusivement aux requêtes demandées et non
pas à créer des processus pour s’adapter à la charge courante. Le
paramétrage est déterminé pour profiter des ressources machines disponibles.
Pour un serveur doté de 512 Mo de RAM, le paramétrage sera
le suivant :
MaxClients 50
MinSpareServers 50
MaxSpareServers 50
StartServers 50
MaxRequestsPerChild 10000
Pour un AIX Power PC
de 1,2 Ghz doté de 1 Go de RAM, le paramétrage pourra être le suivant :
MaxClients 250
MinSpareServers 250
MaxSpareServers 250
StartServers 250
MaxRequestsPerChild
10000
4. Les plug-ins
4.1 Définition
Les requêtes http
émanant d’un navigateur sont reçues par le serveur Apache. Pour que
celui-ci puisse router à un processus
quelconque (conteneur J2EE par exemple) les requêtes le concernant, il faut
qu’il dispose d’un agent ou module capable de prendre en charge toute requête
destinée à ce processus. Un tel agent est appelé plug-in ou connecteur. On
parle de connecteur Apache-WebLogic, Apache-Tomcat, Apache-.NET Le support de ce mécanisme de plug-in permet
de placer Apache en frontal de divers moteurs de traitement de requêtes web.
Un connecteur Apache se présente sous la forme d’un Dynamic Shared Object,
équivalent DLL de l’environnement Windows. Si celui-ci est obtenu sous un nom
différent, ce qui est très souvent le cas (ex.: mod_wl_20_wls81.so,
mod_jk_2.0.47.so), il faut le renommer en mod_wl_20.so, mod_jk.so.
4.2 Plug-in Weblogic
Le serveur HTTP Apache
intervient comme point d’entrée pour les solutions d’accueil des applications
client léger. Le plug-in Weblogic permet d’assurer le lien Apache-webLogic
selon le schéma ci-dessous :
Les URL sans indication de port sont normalement
réceptionnées par Apache, sur le port 80 (sauf indication contraire dans le
fichier de configuration. En général on laisse Apache sur le port 80).
L’adressage direct de WebLogic s’effectue par le biais du port 7101 ou 7001
pour l’instance d’administration. Le module d’extension
mod_wl_20.so fourni avec la distribution WebLogic doit être copié dans le
sous-répertoire modules/ d’Apache. La
séquence de directive suivante est ajoutée dans le fichier de configuration
d’Apache, httpd.conf, après le chargement des différents modules DSO.
LoadModule weblogic_module
modules/mod_wl_20.so
<IfModule mod_weblogic.c>
WebLogicHost srv-04
WebLogicPort 7101
MatchExpression *.jsp
</IfModule>
Dans cette séquence:
-
WebLogicHost sépcifie le nom du serveur hébergeant WebLogic;
-
WebLogicPort spécifie
le port d’écoute du serveur WebLogic;
-
MatchExpression
spécifie le filtre permettant à Apache
d’identifer les requêtes à router vers WebLogic.
Plusieurs filtres
MatchExpression peuvent être spécifiés.
Si WebLogic est démarré, une URL du type http://srv-04/console/index.jsp
doit afficher la pache d’accueil de WebLogic.
Par comodité, il est recommandé de placer la séquence de
paramétrage du plug-in dans un fichier texte, weblogic.conf par exemple. Il
faut ensuite placer une directive include dans le fichier de configuration
Apache, à savoir httpd.conf. Exemple:
<IfModule mod_weblogic.c>
Include conf/weblogic.conf
</IfModule>
Le tableau ci-dessous fournit la matrice de compatibilité
des versions de WebLogic avec Apache en terme de plug-in.
Version de WebLogic
|
Version d’Apache
|
Plug-in
Apache-WebLogic
|
6.1 SP2, SP3
|
1.3.X
|
mod_wl.so ou mod_wl_ssl.so
|
6.1 SP4, SP5
|
1.3.X
|
mod_wl.so ou mod_wl_ssl.so
|
6.1 SP4, SP5
|
2.0.44 et supérieur
|
mod_wl_20.so ou
mod_wl128.so
|
7.x et 8.x
|
2.0.44 et supérieur
|
mod_wl_20.so ou
mod_wl128.so
|
4.3 Plug-in Tomcat
Le serveur d’application préconisé est WebLogic et il est
recommandé aux applications fonctionnant avec Tomcat de migre vers
webLogic. Pour les applications en
production qui ne peuvent pas migrer,
cette section présente un mode de mise en œuvre du bplug-in Tomcat avec
Apache 2.0.49.
Le serveur HTTP Apache intervient comme point d’entrée
pour les solutions d’accueil des applications client léger en environnement
sécurisé. Le plug-in Tomcat permet d’assurer le lien Apache-Tomcat selon le
schéma ci-dessous
:
L’intégration de Tomcat avec le serveur Apache s’effectue en trois étapes, une fois Tomcat installé:
1). Mise en place du
plug-in mod_jk;
2). Mise à jour du
fichier de configuration du serveur Apache;
3). Configuration
des processus worker.
4.3.1 Configuration
La configuration du
connecteur a pour but d’indiquer à celui-ci la localisation des différents
worker process et d’identifier précisément à quel worker process router les
requêtes. La configuration doit aussi préciser le niveau de log et l’emplacement des logs.
La mise en place s’effectue en copiant le module jk dans le
répertoire adéquat et en créant un lien symbolique mod_jk.so:
cp mod_jk-2.0.42.so /apache/apache_2.0.49/modules
ln
–s mod_jk-2.0.42.so mod_jk.so
4.3.2 Mise à jour du fichier de configuration du serveur Apache
Cette mise à jour
consiste à indiquer au serveur Apache:
1°) Comment charger le connecteur jk (
directive LoadModule );
2°)
Quelles URL transmettre au connecteur Tomcat (directive JkMount ).
Ainsi, pour transmettre
à Tomcat toutes les URL contenant “/jsp/”, ou “/servlet”, les directives seront
les suivantes:
JkMount
/jsp/*.jsp ajp13
JkMount /servlet/*.jsp ajp13
Ces informations sont
en général placées dans le fichier de configuration Apache-Tomcat nommé mod_jk.conf. Le fichier mod_jk.conf est
placé dans le sous répertoire conf du répertoire de Tomcat et une directive
include introduite à la fin du fichier de configuration du serveur Apache:
Include /tomcat/conf/mod_jk.conf
Pour générer
automatiquement mod_jk.conf, il faut insérer
cette séquence dans le fichier server.xml:
<Listener
className="org.apache.ajp.tomcat4.config.ApacheConfig"
modJk="/etc/httpd/modules/mod_jk.so" jkDebug="info"
jkLog="/tomcat/logs/mod_jk.log" />
Définition
Un “worker process” est
une instance de Tomcat assurant le traitement de servlets et de JSP. Dans les
configurations courantes, on définit un seul worker process. Mais on peut
définir plusieurs process workers pour
assurer la répartion de charges (load-balancing)
Configuration
La configuration des
“processus worker” est spécifiée dans un fichier de configuration nommé workers.properties. Celui-ci est localisé dans le sous répertoire conf/jk/ du
répertoire d’installation de Tomcat
Les trois informations
à préciser dans workers.properties sont:
-
Le répertoire racine de Tomcat;
-
Le répertoire racine du jdk Java;
-
Le séparateur de fichier
“/” ou “\”.
Exemple:
workers.tomcat_home=/tomcat
workers.java_home=/usr/local/jdk
Une fois les
configurations effectuées, Tomcat et Apache peuvent être démarrés, dans l’ordre
suivant:
1) Tomcat
2) Apache
Apache devant router vers WebLogic et Tomcat les mêmes
types de fichier, la desserte de WebLogic et de Tomcat par un même serveur
Apache n’est pas conseillée, bien que possible.
5.1 Plug-in .NET
Le serveur d’application préconisé est WebLogic et il est
recommandé aux applications fonctionnant avec Tomcat de migre vers
webLogic. Pour les applications en
production qui ne peuvent pas migrer,
cette section présente un mode de mise en œuvre du bplug-in Tomcat avec
Apache 2.0.49.
Pour des raisons de sécurité et en substitution à IIS, le
serveur HTTP Apache peut intervenir
comme point d’entrée pour les solutions d’accueil des applications
client léger .NET. Le plug-in Proxy d’Apache permet d’assurer le lien
Apache-.NET selon le schéma ci-dessous :
La séquence de directives suivante est ajoutée dans le
fichier de configuration d’Apache, httpd.conf, après le chargement des
différents modules DSO (Dynamic Shared Objects).
LoadModule proxy_module
modules/mod_proxy.so
LoadModule proxy_connect_module
modules/mod_proxy_connect.so
LoadModule proxy_http_module
modules/mod_proxy_http.so
LoadModule rewrite_module
modules/mod_rewrite.so
ProxyPass /aspnet
http://192.168.0.111:8081
ProxyPassReverse /aspnet http:// 192.168.0.111:8081
Dans cette séquence, ProxyPass spécifie le filtre permettant à Apache d’identifer
les requêtes à router vers .NET (ici, toutes les requêtes commençant par /aspnet).
Exemple:
http://sysref3/aspnet/index.aspx
6. Intégration de PHP 4.3.6
Les fichiers sources compressés de php4 sont placés dans
/usr/work/php4 (php-4.3.6.tar).
Décompression des fichiers:
Tar
–xvf php-4.3.6.tar
Placement dans le répertoire des sources de php4:
cd
/usr/work/php4/php-4.3.6
Configuration de la compilation de php:
./configure --prefix=/php/php-4.3.6
–-with-apxs2=/apache/apache-2.0.49/bin/apxs2
–-with-config-file-path=/php/php-4.3.6 –-with-mysql
Les directive de préparation de la compilation sont
expliquées dans les lignes qui suivent.
--prefix=/php/php-4.3.6:
spécifie le répertoire de php.
–-with-apxs2=/apache/apache-2.0.49/bin/apxs2 : Spécifie
que php sera installé comme module dynamique (DSO).
–-with-config-file-path=/php/php-4.3.6 : indique le
répertoire dans lequel php trouvera son fichier de configuration php.ini.
–-with-mysql : Indique que php
supportera les bases mysql.
Lancement de la compilation:
make
A ce stade, Apache doit être arrêté
s’il est actif:
cd /apache/apache-2.0.49/bin
./apachectl stop
Lancement
l’installation:
make install
7. intégration de mysql
La version de mysql est la 4.0.20 pour Aix 5.2 sur power pc,
téléchargée à partir du site de téléchargement IBM.
Le fichier /mysql/bin/mysql_config contient les informations de configuration de mysql.
Paramètres de démarrage:
/mysql/support-files/mysql_server
datadir=/mysql/data
basedir=/mysql
bindir=./bin
/etc/my.cnf







Aucun commentaire :
Enregistrer un commentaire