Mini-HOWTO Apache+mods pour systèmes Linux.
Copyright © 2000 Ray Van Dolson.
Cette documentation est libre, vous pouvez la redistribuer et/ou la modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation (version 2 ou bien toute autre version ultérieure choisie par vous).
Cette documentation est distribuée car potentiellement utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU pour plus de détails.
Vous pouvez obtenir une copie de la Licence Publique Générale GNU en
écrivant à la Free Software Foundation, Inc.,
675 Mass Ave, Cambridge, MA02139, États-Unis.
Ou bien sur le site suivant :
http://www.gnu.org/copyleft/gpl.html.
Ce document va expliquer l'installation d'Apache et de ses modules sur un serveur du Walla Walla College (www.wwc.edu). Bien qu'il soit spécifique à notre système, il peut servir d'aide précieuse pour faire d'autres installations.
Ce document tentera d'expliquer les étapes exactes utilisées pour installer le serveur. Des remarques seront faites lorsque les choses ont été réalisées différemment, mais la marche à suivre originale sera donnée (en supposant que ça marche).
L'installation a été réalisée sur une Red Hat 6.1, noyau 2.2.14, fonctionnant sur un Dual PIII 600 avec RAID5 et plein d'autres choses alléchantes.
Le serveur-web est Apache 1.3.12. Les modules suivants ont été ajouté au serveur :
v0.91 (5 avril 2000)
v0.9 (4 avril 2000)
v0.1 (mars 2000)
Vous aurez besoin des logiciels suivant :
Voici l'arborescense que j'ai utilisé et que je vous recommande :
+ /usr/src | +-+ apache | +-+ apache-1.3.12 | +-+ modules | | | +-+ mod_perl | | | | | +- mod_perl-1.21 | | | | | +-+ depend | | | | | +- <perl modules here> | | | +-+ mod_ssl | | | | | +- mod_ssl-2.6.2-1.3.12 | | | | | +-+ depend | | | | | +- openssl-0.9.5 | | | | | +- rsaref-2.0 | | | | | +- mm-1.0.12 | | | +-+ mod_fastcgi_SNAP | | | +-+ php | | | | | +- php-3.0.15 | | | | | +-+ depend | | | | | +- gd-1.3 | | | | | +- imap-4.5 | | | | | +- openldap-1.2.9 | | | +-+ mod_auth_nds | | | | | +- mod_auth_nds-0.4 | | | | | +-+ depend | | | | | +- ncpfs-2.2.0.17 | | | +-+ mod_auth_mysql | +-+ mysql
Vérifiez que les logiciels cités ci-dessus sont déjà installés sur votre système. En général, ça ne peut pas faire de mal de tous les télécharger et de les réinstaller au cas où, car vous pouvez avoir une ancienne version sur votre machine.
mod_ssl a besoin qu'un moteur SSL soit installé. OpenSSL est le choix
« naturel » pour un environnement Linux. Vous pouvez soit l'installer
à partir d'un RPM (comme moi), soit compiler les sources. Si vous
choisissez de le compiler, il faut ensuite l'installer sur le système
dans /usr/local
par exemple, ou faire pointer les applications qui en
ont besoin vers celui-ci.
Les RPM installeront OpenSSL dans le répertoire du système.
Créez un répertoire rsaref-2.0 où vous le souhaitez.
Personnellement, j'ai utilisé
/usr/src/apache/modules/mod_ssl-blah/depend/
.
Déplacez vous dans ce répertoire.
cd rsaref-2.0
cp -rp install/unix local
cd local
make
mv rsaref librsaref.a
Ces commandes doivent compiler la librarie rsaref ! Quand vous aurez besoin d'y faire référence, configurez votre script dans ce répertoire.
Décompressez mm-1.0.12 (ou une version plus récente) dans le
sous-répertoire depend
de mod_ssl-blah. Puis suivez les instructions
suivantes :
cd mm-1.0.12
./configure --disable-shared
make
Cela devrait compiler la librarie mm. Comme ci-dessus, référencez le répertoire quand vous en aurez besoin. Vous pouvez aussi installer cette librairie sur le système.
La procédure normale avec apxs est de compiler Apache en premier, puis, en utilisant apxs, de compiler les modules que vous souhaitez utiliser et de les insérer sur le serveur. Cependant, mod_ssl doit être compilé sur le serveur avant que vous ne puissiez l'utiliser via apxs. Une fois que mod_ssl est sur le serveur, vous pouvez alors le mettre à jour via apxs sans recompiler Apache entièrement.
Allez dans le répertoire où vous avez compilé mod_ssl et exécutez les commandes suivantes pour la première compilation :
#!/bin/sh
./configure \
--with-apache=/usr/src/apache/apache_1.3.12 \
--with-ssl \
--with-rsa=../depend/rsaref-2.0/local \
--with-mm=../depend/mm-1.0.12 \
--enable-shared=ssl
Vous n'avez pas besoin de faire un make ou quoi que ce soit d'autre. Quand vous compilerez Apache, tout se fera en même temps.
Ces lignes de configuration donnent deux exemples de comment votre système
peut être configuré.
Dans mon cas, OpenSSL était déjà installé quelque part (probablement dans
/usr/lib
, /usr/include
).
Par conséquent, je n'ai pas eu besoin de lui passer en paramètre le répertoire,
contrairement à rsa and mm qui n'étaient pas déjà présent. J'ai donc du les
compiler et laisser les sources dans leur répertoire (ne faites pas de
make install ni rien).
Dans ce cas, vous devez indiquer lors du « configure » le répertoire
adéquate pour qu'il puisse trouver les en-tête et les libraires.
À ce point, à moins que vous ne mettiez à niveau Apache (auquel cas, vous devrez refaire le point précédent pour la nouvelle version), vous pouvez utiliser apxs pour mettre à jour et recompiler mod_ssl. Voici mon script de configuration :
./configure \
--with-apxs=/apps/apache-1.3.12/bin/apxs \
--with-ssl=../depend/openssl-0.9.4 \
--with-rsa=../depend/rsaref-2.0/local \
--with-mm=../depend/mm-1.0.12
Ou quelque combinaison de ce qui précède. Puis exécutez :
make
make install
make distclean
pour mettre fin à l'installation.
Note : MM n'est pas nécessaire pour compiler mod_ssl. Si vous avez des problèmes, ne le compilez pas et enlevez-le des paramètres de « ./configure ».
Quand j'ai compilé mod_ssl, j'ai eu des erreurs avec DBM. Pour résourdre cela, j'ai ajouté -lndbm dans le Makefile :
LIBS_SHLIB=-lm -lcrypt -lndbdm
Ainsi, vous ne devriez plus avoir de problème.
Désarchivez apache-1.3.12.tar.gz dans /usr/src/apache
ou autre
part.
Ensuite, vous devez compiler Apache avec les options suivantes :
Voici le fichier de configuration que j'utilise pour compiler Apache :
#!/bin/sh
SSL_BASE=../depend/openssl-0.9.4 \
RSA_BASE=../depend/rsaref-2.0/local \
EAPI_MM=../depend/mm-1.0.12 \
./configure \
--enable-module=ssl \
--enable-module=proxy\
--enable-shared=proxy\
--enable-module=rewrite \
--enable-shared=rewrite \
--prefix=/apps/apache-1.3.12 \
--enable-shared=ssl \
--enable-rule=SHARED_CORE \
--enable-rule=SHARED_CHAIN \
--enable-module=so
Puis :
make
make certificate
make install
Apache doit maintenant être compilé et installé dans le répertoire
que vous avez spécifier avec --prefix
. Vérifez qu'il fonctionne
correctement.
/path/to/apache/bin/apachectl start
ou
/path/to/apache/bin/apachectl startssl
Si tout va bien, Apache doit fonctionner normalement. Sinon, reprennez les manipulations depuis le début, et vérifiez que vous n'avez rien oublié.
php, tout comme mod_auth_mysql et peut-être mod_perl, à besoin que MySQL soit installé et qu'il fontionne. Il est au-delà des intentions de ce document que d'entrer dans les détails de l'installation de MySQL. Mais vous pouvez télécharger l'archive et suivre les instructions des fichiers INSTALL. C'est assez simple de mettre en service MySQL. Ça doit être quelque chose comme :
./configure
make
make install
Comme vous devriez avoir tout d'installé, vous pouvez maintenant compiler les autres modules d'Apache.
Vous allez maintenant compiler php-3.0.15 comme une bibliothèque, ce qui veut dire que c'est un module qui peut être démarré ou arrêté indépendamment du serveur. C'est ainsi plus facile de mettre à niveau php sans avoir à tout recompiler (ce qui peut être pénible si vous utilisez beaucoup de modules avec Apache).
Dans mon installation d'Apache, php utilise gd pour créer des images et d'autres choses. J'utilise une vieille version de gd (installée via RPM) pour faire la liaison avec php. Comme cela, on peut utiliser des fichiers GIF en sortie. Cela n'est peut être pas très bien vis à vis des copyright, ainsi vous devriez utiliser une version supérieure à la 1.3 qui ne supporte que les fichiers PNG.
Vous pouvez l'installer soit à partir d'un RPM (rpm -i gd*.rpm), soit compiler les sources et l'installer sur votre système.
Si vous voulez avoir le support IMAP, la procédure est similaire à gd. J'ai aussi utilisé un RPM puisque je suis sur une Red Hat, mais l'installer à partir des sources est une procédure assez simple :
./configure
make
make install
Vous pouvez aussi installer OpenLDAP à partir de RPM ou des sources. J'ai choisi de le faire à partir des sources, car la dernière version n'était pas encore disponible en RPM au moment de mon installation.
./configure
make
make install
devrait faire l'affaire
(ou bien rpm -i openldap*.rpm).
Maintenant que les modules ci-dessus sont installés et qu'ils fonctionnent, vous pouvez compiler php comme une bibliothèque. Le principe est simple et rapide :
cd /usr/src/apache/modules/php/php-3.0.15
./configure \
--with-apxs=/apps/apache/bin/apxs \
--with-config-file-path=/apps/etc \
--with-gd \
--with-imap \
--with-mysql=/apps/mysql \
--with-ldap=/apps \
--with-zlib \
--enable-track-vars
Soyez sûr que si vos libraries --with
ne sont pas installées
dans /usr/local
ou /usr
, vous les rajoutiez sur une
ligne =/localisation/, pour que configure puisse trouver les trucs
dont il a besoin !
make
make install
Si tout c'est bien passé, « make install » va utiliser apxs pour
installer libphp3.so dans /apache/libexec/libphp3.so
, ajouter
les entrées nécessaires dans httpd.conf et activer php3.
Cette section explique l'installation de mod_perl comme une bibliothèque d'Apache. Il y a beaucoup de modules perl (en plus, bien sûr, de perl5 que je suppose vous avez déjà installé) qui doivent être ajoutés avant mod_perl pour compiler sans problèmes. Si vous n'installez pas ces modules, mod_perl devrait se plaindre et vous indiquer lesquels manquent.
Il y a un certain ordre à respecter dans l'installation de ces modules. Certains dépendent d'autres, j'ai donc énuméré l'ordre dans lequel je les ai installé sans problème.
Les modules perl peuvent être trouvés aux url données plus haut dans ce document. Téléchargez-les et mettez-les où vous le souhaitez ou dans le répertoire que j'ai utilisé (voir aussi arborescense utilisée). L'installation d'un module est simple. Après l'avoir désarchivé dans le répertoire (normalement avec : tar xvfz), il suffit de faire :
perl Makefile.PL
make
make install
Si tout ce passe bien, cela devrait configurer, compiler et installer le module perl à votre place. Bien sûr vous pouvez lire les fichiers README en cas d'erreurs.
Voici l'ordre de l'installation des modules nécessaires pour mod_perl :
Après avoir installé les modules perl, vous êtes prêt pour compiler et installer mod_perl dans Apache. Allez dans le répertoire où vous avez extrait mod_perl, et lancez le script suivant :
perl Makefile.PL \
USE_APXS=1 \
WITH_APXS=/path/to/apache/bin/apxs \
EVERYTHING=1
Cela devrait configurer votre Makefile et dire à mod_perl de se compiler tout seul comme une bibliothèque en utilisant apxs (dans le répertoire que vous devez spécifier). Après, vous n'avez plus qu'à faire :
make
make install
Ainsi, mod_perl sera déplacé dans le répertoire approprié, et les lignes ajoutées à votre fichier httpd.conf.
mod_auth_mysql permet à Apache d'accéder à la base utilisateur MySQL. L'installation comme une bibliothèque n'est pas très bien documentée dans le fichier README, mais c'est possible.
Premièrement, allez dans le répertoire où vous avez extrait mod_auth_mysql.
Normalement, vous avez MySQL d'installé (avec les fichiers d'en-tête, etc.).
Regardez où sont installées les libraries MySQL et les fichiers d'en-tête.
Dans le doute, vérifiez dans /usr/lib/mysql
et dans
/usr/include/mysql
.
Pour compiler mod_auth_mysql, vous devez renommer le fichier « config.h » en « auth_mysql_config.h ». Je ne sais pas pourquoi ce fichier n'a pas le bon nom, mais faites-le grâce à cette commande :
cp config.h auth_mysql_config.h
Et pour finir :
/path/to/apache/bin/apxs -i -a -I/usr/include/mysql -L/usr/lib/mysql \
-lmysqlclient -c mod_auth_mysql.c
Il faudra peut-être l'exécuter en super-utilisateur (root) si vous n'avez pas les droits de lecture/écriture sur le répertoire d'Apache.
Dans mon école, le réseau Windows choisi est de type Netware. C'est resté comme ça longtemps, et bien qu'il fonctionnait bien, maintenant on l'utilise uniquement pour le partage de fichiers et le courriel. Tous les étudiants ont un compte Netware dans lequel les fichiers personnels, ainsi que les pages web, sont stockés. Chacun peut monter ses répertoires à partir du serveur Linux, ainsi on peut protéger les données avec les informations du compte Netware. Avec ce module, Apache peut faire l'authentification à travers le réseau Netware.
Pour compiler mod_auth_nds, il faut que ncpfs soit installé (ainsi que les fichiers d'en-tête). Avant de compiler ncpfs, vous devez vous assurer que votre noyau supporte IPX. Si c'est le cas, faites juste :
./configure
make
make install # optionnel
qui copira (et installera) les libraries.
Si ncpfs est installé, en lancant les commandes suivantes, cela devrait compiler mod_auth_nds comme une bibliothèque :
/path/to/apache/bin/apxs -c -lncp -L/usr/lib -I/usr/include mod_auth_nds.c
/path/to/apache/bin/apxs -i mod_auth_nds.so
Ensuite, ajoutez les lignes suivantes au fichier httpd.conf (à la main) :
LoadModule nds_auth_module libexec/mod_auth_nds.so
AddModule mod_auth_nds.c
Il ne vous reste plus qu'à redémarrer Apache !
L'installation de mod_fastcgi est nécessaire si vous voulez accéder à votre serveur Zope avec Apache. C'est plus pratique, car Apache est plus sécurisé et plus configurable que le serveur Zope.
La version stable actuelle de mod_fastcgi est 2.2.2, mais cette version ne fonctionne pas correctement avec Zope. Vous devez donc vous procurer SNAP release qui date du 06 octobre 1999 dont le lien est donné plus haut.
Allez dans le répertoire de mod_fastcgi et lancez ces commandes :
/path/to/apache/bin/apxs -o mod_fastcgi.so -c *.c
/path/to/apache/bin/apxs -i -a -n fastcgi mod_fastcgi.so
Voir la documentation pour la description de son utilisation.
La plupart de ces informations peuvent être obtenues en lisant les fichiers README et INSTALL de chacuns des modules. Cependant, ce document est utile dans le cas où ça ne fonctionne pas ou que la documentation n'est pas très explicite. Mais il a surtout l'avantage d'exister et d'être plus simple à suivre et à comprendre que de passer d'un README à un autre.
Phillip R. Wilson <pwilson@drew.edu>, auteur de mod_auth_nds, pour m'avoir aidé à compiler et installer cmod_auth_nds avec apxs. John Ash <jash@wwc.edu>, mon patron, pour son aide et surtout pour mon travail. Marcus Faure <marcus@faure.de>, auteur de Apache SSL PHP/FI frontpage mini-HOWTO, dont le document m'a beaucoup aidé.
Si vous avez trouvé des fautes de frappe ou de grammaire dans ce document, n'hésitez pas à m'envoyer un courriel.
Ray Van Dolson Courriel : rayvd@firetail.org IRC : DALnet, #Bludgeon (nick Variant)
NdT : le lecteur francophone pourra en faire autant...
Xavier Facq Courriel : xavier.facq@free.fr
Tout ce qui est mentionné dans ce document sera éventuellement disponible en ftp sur ftp.wwc.edu/pub/apache. Il y aura tout ce qui est présenté ci-dessus, ainsi que les scripts d'installation.