Apache et les scripts CGI


La question la plus souvent posée sur le site RebolFrance est : comment configurer le serveur HTTP Apache pour exécuter des scripts CGI en Rebol ? En fait, ça n’a rien de bien difficile. Ce petit article va tenter d'apaiser rapidement vos inquiètudes :-)

Activer le support des scripts CGI
Pour que Apache puisse utiliser des scripts CGI, un module dédié doit être chargé en mémoire. Vous devez donc trouver dans le fichier de configuration httpd.conf, les deux lignes suivantes activées :

LoadModule cgi_module         libexec/httpd/mod_cgi.so
AddModule mod_cgi.c
 
Vous devez ensuite indiquer à Apache quels sont les suffixes des noms de fichier, correspondants aux scripts exécutables. Le plus souvent, les fichiers *.cgi sont des applications (mais rien ne vous empêche de modifier ce paramètre). La directive concernée est AddHandler et a par défaut, la valeur suivante :
AddHandler cgi-script .cgi
 
Enfin, vous devez trouver la directive ScriptAlias qui permet d’associer un chemin d’accès logique à un chemin physique. Sur mon iMac sous MacOS X, cette directive est initialisée avec la valeur suivante :
ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/"
 
Cette directive est des plus importantes puisque c’est elle qui vous permet de spécifier où se trouvent les scripts CGI sur votre serveur.

Où placer les scripts ?
La première idée importante qu’il faut retenir est qu’un serveur web n’exécute pas n’importe quoi ! Un script CGI doit obligatoirement être rendu exécutable par l’utilisateur à l’aide de la commande chmod +x nom_du_script.cgi sous Unix. Il faut ensuite le placer dans un répertoire membre de l’arborescence du serveur web et autorisé à accueillir des fichiers exécutables. Par défaut, le répertoire cgi-bin de votre serveur Apache est configuré pour ce travail et l’URL d’accès sera : http://localhost/cgi-bin/nom_du_script.cgi. Ce répertoire peut contenir des sous-répertoires qui seront également autorisé à lancer des programmes.

Etendre l’exécution à d’autres répertoires
Pour autoriser d’autres répertoires de l’arborescence du serveur à exécuter des scripts CGI, vous devez simplement ajouter quelques directives à votre fichier httpd.conf. Supposez que vous vouliez créer une application web accessible par l’url : http://www.serveur.org/catalogue. Il vous suffit d’ajouter les lignes suivantes à la configuration du serveur Apache :

Alias /musique "/Library/WebServer/catalogue/"
 <Directory "/Library/WebServer/catalogue"> 
 AllowOverride None
 Options ExecCGI 
 </Directory>
 

Une fois le fichier modifié, n’oubliez pas de relancer Apache pour que celui-ci prennent en compte vos modification. Sur les Unix tels que MacOS X, AIX ou certains Linux, vous pouvez utiliser la commande apachectl restart. Sur une Red Hat, vous disposez de la commande service httpd restart.

 

Olivier Auverlot

Retour