Apache+DSO+mod_ssl+mod_perl+php+mod_auth_nds+mod_auth_mysql+mod_fastcgi

Ray Van Dolson, rayvd@firetail.org ;
version fran�aise : Xavier FACQ, xavier.facq@free.fr.

v0.91, 5 avril 2000
Ce document traite de la mise en place d'un serveur Apache int�grant des modules DSO (Dynamic Shared Object, NdT : biblioth�que d'objets partag�e) comme par exemple mod_perl, mod_ssl et php.

1. Copyright

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.

2. Introduction

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).

2.1 Description des composants

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 :

2.2 Historique

v0.91 (5 avril 2000)

v0.9 (4 avril 2000)

v0.1 (mars 2000)

3. Installation des composants

3.1 Pr�requis

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.

3.2 mod_ssl

Installation et compilation de OpenSSL

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.

Installation et compilation de RSAREF 2.0

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.

Installation et compilation de MM

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.

Installation et compilation de mod_ssl

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 :

Ainsi, vous ne devriez plus avoir de probl�me.

3.3 Apache

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�.

3.4 MySQL

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.

3.5 PHP 3.0.15

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).

GD

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.

IMAP

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

OpenLDAP

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).

Installation et compilation de PHP 3.0.15

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.

3.6 mod_perl

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.

Modules perl requis

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 :

  1. MIME::Base64
  2. URI
  3. HTML::Parser
  4. Digest-MD5
  5. libnet
  6. libwww

Installation et compilation de mod_perl 1.2x

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.

3.7 mod_auth_mysql

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.

3.8 mod_auth_nds

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.

ncpfs

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.

Installation et compilation de mod_auth_nds

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 !

3.9 mod_fastcgi

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.

4. Mots de la fin

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.

4.1 Remerciements

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�.

4.2 Contact

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

4.3 Autre

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.