|
Sous Windows, les DLL ISAPI offrent l'avantage par rapport aux
langages scriptés d'être compilées, et par rapport aux CGI
d'être chargées une fois pour toutes en mémoire ! Sous
linux, les modules DSO (Dynamic Shared Object) ouvrent les mêmes
perspectives quant à la rapidité d'exécution
d'applications serveur web. Pourtant la création et la configuration de
ces modules et loin d'être simples et bien documentées. L'aide de
kylix est assez succinte sur le sujet. Je vous propose donc de suivre pas
à pas le déploiment de tels modules.
La plupart des distributions Linux installent le serveur web
Apache dans une configuration standard et statique. Pour que les modules DSO
fonctionnent il faut impérativement avoir la librairie libhttpd.so.
Cette librairie s'obtient en recompilant Apache pour gérer les DSO. Les
sources n'etant pas toujours livrées avec, il faut donc
télécharger ces dernières sur
http://httpd.apache.org/dist/apache_1.3.19.tar.gz
Sauvegardez ce fichier dans le répertoire /tmp.
Décompressez ensuite les sources:
> cd /tmp
> tar xzvf apache_1.3.19.tar.gz
> cd apache_1.3.19
Créez à l'aide de votre éditeur de texte
favori le fichier config.status avec le code suivant:
#!/bin/sh
CFLAGS="-g" \
CFLAGS_SHLIB="-g" \
LIBS="/usr/lib/libpthread.so" \
./configure \
"--with-layout=Apache" \
"--enable-module=so" \
"--enable-rule=SHARED_CORE" \
"$@"
Donnez ensuite les droits d'exécution sur ce
fichier:
chmod 755 config.status
Executez le fichier:
/tmp/apache_1.3.19 > ./config.status
Lancez la compilation:
/tmp/apache_1.3.19 > make
Lancez l'installation:
/tmp/apache_1.3.19 > make install
Par
défaut, apache s'installe dans /usr/local/apache/
Créez un nouveau projet : File | New... -> Web Server
Application -> Apache DSO
Configurez le projet dans : Project | Options -> onglet
Directories/Conditionals dans le champ Output directory, indiquez /usr/local/apache/libexec
Enregistrez votre projet. Par exemple Hello.dpr . A la
compilation, le fichier généré sera libHello.so
Dans les sources du projet : Project | View Source
Remplacez le nom du module par défaut 'Project1_module' par le nom de votre
projet, par exemple 'Hello_module' (Attention la casse est
importante !)
Maintenant il nous faut configurer Apache pour qu'il charge
notre module : Editez le fichier de configuration /usr/local/apache/conf/httpd.conf et rajoutez les
lignes suivantes:
LoadModule Hello_module libexec/libHello.so
et
<Location /HelloBin>
SetHandler libhello-handler
</Location>
ATTENTION: la casse est toujours importante ! le
Handler est en faite le nom du fichier en minuscule sans '.so' et avec
'-handler' L'option Location crée un alias HelloBin qui va correspondre
à l'appelle de notre module.
Il ne reste plus qu'a redémarrer Apache:
/usr/local/apache/bin > ./apachectl restart
Pour invoquer votre module, supposons que l'on est
créé une action HelloWorld:
http://localhost/HelloBin/HelloWorld
Par comparaison,
cet URL est equivalente sous Windows à:
http://localhost/scripts/Hello.dll/HelloWorld
|