29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
29-01-2012 : Parce que nous sommes un peuple debout, agissons pour rester dignes et responsables !
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / Internet / Serveur web Apache / Apache 1.3.37 : compiler et installer le module mod_gzip (XI)





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox

Apache 1.3.37 : compiler et installer le module mod_gzip (XI)

Date de publication: le jeudi 5 mars 2009 à 23h19
Dernière modification: par Pascal BOYER le vendredi 6 mars 2009 à 16h55
« Article précédent: Apache 1.3.37 : compiler et installer eAccelerator (X)
» Article suivant: Apache 2 : installer le module mod_deflate

Présentation du module mod_gzip

Ce module permet aux versions 1.3 du serveur Apache de compresser à la volée toutes sortes de données: les pages HTML, les fichiers javascript, les feuilles de style, etc...

L'algorithme de compression utilisé par mod_gzip est identique à celui du binaire gzip que l'on trouve sur toutes les distributions Linux.

Les gains, en terme de poids de fichier, sont d'autant plus importants que les objets compressés appartiennent au type MIME text/*. Ainsi, le poids de ces fichiers compressés représente souvent moins de 30% du poids initial du document.

En terme de bande passante, l'économie est donc substantielle.

La compression des documents accroit également sensiblement la rapidité d'affichage des pages web d'un site.

Le projet est hébergé sur SourceForge: page officielle du projet mod_gzip

Méthode d'installation de mod_gzip proposée

Dans la suite de l'article nous allons voir comment installer le module mod_gzip en tant que module externe d'un serveur Apache 1.3 compilé à la main.

Il est donc nécessaire, comme indiqué dans ce précédent article , que le module mod_so soit compilé pour votre serveur. Ce module permet au serveur Apache de prendre en compte des objets partagés (so = share object).

Compilation du module mod_gzip

Ce placer dans le répertoire ServeurWeb:

cd /usr/local/ServeurWeb

Télécharger l'archive du module:

wget http://downloads.sourceforge.net/mod-gzip/mod_gzip-1.3.26.1a.tgz?use_mirror=freefr

:
La dernière version produite de ce module date du 1er Octobre 2002.

Extraire le contenu de l'archive:

tar zxfv mod_gzip-1.3.26.1a.tgz

La commande ci-dessus extrait le contenu de l'archive dans un nouveau répertoire mod_gzip-1.3.26.1a.

Modifier les droits du nouveau répertoire créé et de son contenu:

chown -R root:root mod_gzip-1.3.26.1a

Ce placer dans le nouveau répertoire:

cd mod_gzip-1.3.26.1a

...dont le contenu est:

ls -la

-rw-r--r--  1 root root   4866 oct  1  2002 ChangeLog
drwxr-xr-x  3 root root   4096 oct  1  2002 docs
-rw-r--r--  1 root root    298 mar  5 23:23 Makefile
-rw-r--r--  1 root root    252 oct  1  2002 Makefile.libdir
-rw-r--r--  1 root root   2042 oct  1  2002 Makefile.tmpl
-rw-r--r--  1 root root 227701 oct  1  2002 mod_gzip.c
-rw-r--r--  1 root root  71415 oct  1  2002 mod_gzip_compress.c
-rw-r--r--  1 root root  19671 oct  1  2002 mod_gzip_debug.c
-rw-r--r--  1 root root   4322 oct  1  2002 mod_gzip_debug.h
-rw-r--r--  1 root root  10099 oct  1  2002 mod_gzip.h

Modifier dans le fichier Makefile l'emplacement du binaire apxs:

Par défaut, le fichier Makefile contient un chemin vers le binaire apxs qui ne correspond certainement pas à votre cas particulier.

La commande suivante:

man /usr/local/ServeurWeb/apache_1.3.37/man/man8/apxs.8

...affiche la documentation de apxs installée lors de la compilation du serveur.

:
Traduction de la définition de apxs donnée par la page apxs.8:
« apxs est un outil servant à construire et à installer des modules d'extension pour le serveur de Protocole de Transfert HyperTexte (HTTP) Apache. Cette tâche est accomplie en construisant un objet dynamique partagé (DSO : Dynamic Share Object ) à partir d'un ou plusieurs fichiers source ou objet. Cet objet dynamique pourra être alors chargé par le serveur Apache en fonctionnement par le biais de la directive LoadModule du module mod_so.
Afin d'utiliser ce mécanisme, votre système doit supporter la fonction DSO et votre binaire Apache httpd être compilé avec le module mod_so. Dans le cas contraire, l'outil apxs se plaint systématiquement. Pour contrôler la présence de mod_so utilisez la commande suivante:
# httpd -l »

Vioci ce que doit contenir la première ligne du fichier Makefile:

APXS?=/usr/local/ServeurWeb/apache_1.3.37/bin/apxs

Compilation du module mod_gzip:

make build

/usr/local/ServeurWeb_1.3.41/apache_1.3.41/bin/apxs -Wc,-Wall,-O3,-fomit-frame-pointer,-pipe -c mod_gzip.c mod_gzip_debug.c mod_gzip_compress.c -o mod_gzip.so
 gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DNO_DBM_REWRITEMAP -DMOD_SSL=208131 -DMOD_PERL -DUSE_PERL_SSI -D_REENTRANT  -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DMOD_DEFLATE -DEAPI -DEAPI_MM -O3 -fpic -DSHARED_MODULE -I/usr/local/ServeurWeb_1.3.41/apache_1.3.41/include -Wall,-O3,-fomit-frame-pointer,-pipe  -c mod_gzip.c
 cc1: error: unrecognized command line option "-Wall,-O3,-fomit-frame-pointer,-pipe"
 apxs:Break: Command failed with rc=1
 make: *** [build] Erreur 1

Si la commande est interrompue par le message d'erreur ci-dessus, modifiez la syntaxe du fichier Makefile.

La ligne suivante:

$(APXS) -Wc,-Wall,-O3,-fomit-frame-pointer,-pipe -c mod_gzip.c mod_gzip_debug.c mod_gzip_compress.c -o mod_gzip.so

doit être remplacée par cette syntaxe:

$(APXS) -Wc "-Wall -O3 -fomit-frame-pointer -pipe" -c mod_gzip.c mod_gzip_debug.c mod_gzip_compress.c -o mod_gzip.so

Puis relancez la commande:

make build

/usr/local/ServeurWeb_1.3.41/apache_1.3.41/bin/apxs -Wc "-Wall -O3 -fomit-frame-pointer -pipe" -c mod_gzip.c mod_gzip_debug.c mod_gzip_compress.c -o mod_gzip.so
 gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DNO_DBM_REWRITEMAP -DMOD_SSL=208131 -DMOD_PERL -DUSE_PERL_SSI -D_REENTRANT  -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DMOD_DEFLATE -DEAPI -DEAPI_MM -O3 -fpic -DSHARED_MODULE -I/usr/local/ServeurWeb_1.3.41/apache_1.3.41/include  -c mod_gzip.c
 gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DNO_DBM_REWRITEMAP -DMOD_SSL=208131 -DMOD_PERL -DUSE_PERL_SSI -D_REENTRANT  -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DMOD_DEFLATE -DEAPI -DEAPI_MM -O3 -fpic -DSHARED_MODULE -I/usr/local/ServeurWeb_1.3.41/apache_1.3.41/include  -c mod_gzip_debug.c
 gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -DNO_DBM_REWRITEMAP -DMOD_SSL=208131 -DMOD_PERL -DUSE_PERL_SSI -D_REENTRANT  -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DMOD_DEFLATE -DEAPI -DEAPI_MM -O3 -fpic -DSHARED_MODULE -I/usr/local/ServeurWeb_1.3.41/apache_1.3.41/include  -c mod_gzip_compress.c
 gcc -shared -o mod_gzip.so mod_gzip_compress.o mod_gzip_debug.o mod_gzip.o -o mod_gzip.so -Wc -Wall -O3 -fomit-frame-pointer -pipe

Installer le module mod_gzip

make install

/usr/local/ServeurWeb/apache_1.3.37/bin/apxs -A -i mod_gzip.so
 [preparing module `gzip' in /usr/local/ServeurWeb/apache_1.3.37/conf/httpd.conf]
 cp mod_gzip.so /usr/local/ServeurWeb/apache_1.3.37/libexec/mod_gzip.so
 chmod 755 /usr/local/ServeurWeb/apache_1.3.37/libexec/mod_gzip.so
 cp /usr/local/ServeurWeb/apache_1.3.37/conf/httpd.conf /usr/local/ServeurWeb/apache_1.3.37/conf/httpd.conf.bak
 cp /usr/local/ServeurWeb/apache_1.3.37/conf/httpd.conf.new /usr/local/ServeurWeb/apache_1.3.37/conf/httpd.conf
 rm /usr/local/ServeurWeb/apache_1.3.37/conf/httpd.conf.new
  • Le fichier mod_gzip.so est copié dans le répertoire /usr/local/ServeurWeb/apache_1.3.37/libexec/
  • Il est rendu exécutable par la ligne 4
  • La ligne 5 fais une sauvegarde de votre fichier httpd.conf en httpd.conf.bak
  • La ligne 6 copie le fichier apache_1.3.37/conf/httpd.conf.new en apache_1.3.37/conf/httpd.conf
  • La ligne 7 supprime le fichier httpd.conf.new

Modification du fichier de configuration httpd.conf

Pour savoir quelles lignes ont été ajoutées au nouveau fichier httpd.conf vous pouvez utiliser cette commande:

diff ../apache_1.3.37/conf/httpd.conf ../apache_1.3.37/conf/httpd.conf.bak

1123d1122
< #LoadModule gzip_module        libexec/mod_gzip.so
1125d1123
< #AddModule mod_gzip.c

...vous indiquant que deux lignes, 1123 et 1125, contiennent le nouveau code suivant:

#LoadModule gzip_module        libexec/mod_gzip.so
#AddModule mod_gzip.c

Ces deux lignes doivent être décommentées pour que le module soit chargé.

Configurer le module

A la suite des deuc précédentes lignes, ajoutez celles-ci:

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_minimum_file_size 300            /* taille minimum des fichiers à encoder - en octet */
mod_gzip_maximum_file_size 500000     /* taille maximum des fichiers à encoder - en octet */
mod_gzip_maximum_inmem_size 100000
mod_gzip_item_include file \.htm$
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.shtml$
mod_gzip_item_include file \.shtm$
mod_gzip_item_include file \.jsp$
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.pl$
mod_gzip_item_include file \.cgi$
mod_gzip_item_include mime text/.*
mod_gzip_item_include mime ^application/x-httpd-php
mod_gzip_item_include mime httpd/unix-directory
mod_gzip_item_include handler ^perl-script$
mod_gzip_item_include handler ^server-status$
mod_gzip_item_include handler ^server-info$
mod_gzip_item_exclude file .css$
mod_gzip_item_exclude file .js$
#mod_gzip_item_exclude mime ^image/.*
mod_gzip_dechunk yes
mod_gzip_temp_dir /tmp
mod_gzip_keep_workfiles No
mod_gzip_can_negotiate yes
mod_gzip_send_vary Off
mod_gzip_item_exclude mime ^image/.$
mod_gzip_item_exclude mime ^image/
mod_gzip_item_exclude rspheader Content-Type:image/*
</IfModule>

Relancer le serveur Apache

/etc/init.d/apachectl restart

Tester mod_gzip en ligne

En vous rendant à l'adresse suivante

vous pouvez tester le bon fonctionnement de votre module.

Parmi les information renvoyées par la page de test, vous devez voir quelque chose comme ça:

Description des directives du module mod_gzip

La page suivante:

présente une description complète (en anglais) des différentes directives du module mod_gzip.

Commentaires