Alianwebserver.com

Installation de l'environnement CGI

Un peu de théorie ...

D'abord entendons-nous sur le terme de CGI : Il s'agit d'un traitement coté serveur provoqué par un appel HTTP. Ce CGI est une Interface entre l'utilisateur et le systême d'exploitation. Donc pour executer des CGI, on doit d'abord avoir un serveur Web:

Tous ces serveurs Web permettent d'utiliser les CGI.

Ensuite il faut choisir le langage utilisé pour faire vos CGI: Perl, C, Php, ASP, ...La manière la plus "propre" serait de produire un executable à l'aide d'un compilateur. Seulement c'est loin d'être la manière la plus souple et la plus efficace !

Si vous devez faire de la manipulation de chaînes de caractères,.le langage le plus utilisé pour les CGI est Perl , un langage interprété.

Si vous devez faire une application tournant autour d'une base de données, je vous conseille PHP.

Installation du serveur Web

CGI Apache :

Sources :

Vous pouvez soit récupérer les sources, soit obtenir une version déjà compilée pour votre systême.

Installation :

Pour Windows, cliquez sur l'executable téléchargé. Pour les sources, décompressez l'archive, puis lancer "Configure","make" et "make install".

Pour une installation avec des options supplémentaires (mod_perl, mod_php, mod_ssl, ...) voir ici.

Configuration :

D'abord, pour que le serveur tourne, il faut généralement modifier le fichier httpd.conf pour ajuser la variable ServerName à votre nom de machine.

Ex : ServerName 192.168.100.70

CGI IIS & PWS

CGI Netscape Entreprise

Téléchargez le serveur pour votre version ici: http://www.iplanet.com/downloads/download/index.html

Installation de Perl

CGI Pour Windows:

Téléchargez la dernière version à cette adresse http://www.ActiveState.com/. Vous aurez surement à télécharger également le programme d'installation de l'archive téléchargé précedemment.

CGI Pour Unix :

L'interpréteur Perl est habituellement déjà installé dans le répertoire /usr/local/bin ou /usr/bin ou /opt/LWperl/bin ou ... . Essayez whereis perl ou find / -name "perl" -print pour le localiser et perl -v pour obtenir le numero de version .

La démarche va changer suivant votre OS. Peut-être devriez-vous utilisez rpm, ou un autre systeme d'installation pour ne pas avoir à recompiler Perl. Sinon vous pouvez récupérez les sources ici !

Procédure d'installation depuis les sources : (nécessite compilateur C)

% gunzip -d perl5_004_01_tar.gz
% tar xvf perl5_004_01_tar
% ./Configure
% make
% make test
# make install 

CGI Netscape Entreprise
CGI Apache
CGI IIS3
CGI IIS4

Configuration du serveur Web pour les CGI

Il s'agit de donner les droits en execution à un répertoire ou à une extension de fichiers. Remarque: la démarche est sensiblement la même pour PHP ou pour Perl, ou un exe. Seul Netscape montre les 2 en exemple.

CGI Sous Netscape Entreprise Server :

Perl :
  1. Déclarer un répertoire comme un répertoire ShellCGI dans l'administration netscape
  2. Ajouter la ligne " type=magnus-internal/shellcgi exts=pl" dans c:\netscape\server\https-...\config\mime.types
  3. Associer les fichiers .pl avec l'executable c:\perl\bin\perl.exe : Double-clic sur un fichier plpuis recherche de perl.exe ou bien taper ces deux commandes dans une boite dos :
    assoc .pl=plfile
    ftype plfille=c:\perl\bin\perl.exe
PHP3:
  1. Déclarer un répertoire comme un répertoire ShellCGI dans l'administration netscape
  2. Ajouter la ligne " type=magnus-internal/shellcgi exts=php " dans c:\netscape\server\https-...\config\mime.types
  3. Associer les fichiers .php avec l'executable c:\php3\php.exe : Double-clic sur un fichier php puis recherche de php.exe ou bien taper ces deux commandes dans une boite dos :
    assoc .php=phpfile
    ftype phpfile=c:\php3\php.exe

CGI Sous Apache :

rouge.gif (870 octets) Dans le fichier httpd.conf: redéfinir la variable ScriptAlias qui définit les répertoires contenant les CGI

# ScriptAlias : 
# Liste des repertoires contenant 
# les scripts CGI autorisés à etre executer
# Format: ScriptAlias URL chemin_complet
ScriptAlias /cgi-bin/ /usr/local/httpd/cgi-bin/
# Pour les scripts CGI
# Seul les fichiers avec l'extension 
# .pl sont autorisés
AddHandler cgi-script .pl
AddHandler cgi-script .cgi
AddHandler cgi-script .exe
# Pour PHP :
AddType application/x-httpd-php3 .php3
<Directory /usr/local/www/cgi-bin>  
  <Limit GET POST>
    Option None 
    Order allow,deny
    Allow from all 
  </Limit> 
</Directory>
<Directory /usr/local/www/cgi-bin>  
   <Limit PUT DELETE>
     Option All 
     Deny from all 
   </Limit> 
</Directory>

CGI Sous IIS3 :

Document Word résumant l'installation

1/ Vérifier la présence dans la base des registres après l'installation de Perl :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Services\W3SVC\Parameters\Script Map]
".idc"="C:\\WINNT\\System32\\inetsrv\\httpodbc.dll"
".pl"="C:\\Perl\\bin\\Perl.exe %s %s"
".plx"="C:\\Perl\\bin\\PerlIS.dll"

2/ Vérifier que le répertoire à les droits en execution:

  1. Aller dans le gestionnaire de services d'IIS via le menu démarrer/Microsoft Internet Server
  2. Clic droit sur WWW =>Propriété du service
  3. Choisir /Scripts =>Modifier les propriétés
  4. Vérifier que le répertoire c:\inetpub\scripts (ou votre équivalent cgi-bin) à les droits en exécution

rouge.gif (870 octets) Pour éviter "l'erreur 403: Accès interdit" Assurez vous que le répertoire à les droits d'execution (Ce qui correspond au chmod sous unix (755))

  1. Cliquez sur "menu Démarer/Programmes/Microsoft Internet Server(commun)/Gestionnaire de services"
  2. Une boîte arrive avec la liste des services que NT peut utiliser, nous disant si ils sont en marche ou non. Double-cliquez sur le service WWW ( assurez vous que celui est en marche ).
  3. Double cliquez sur le répertoire cgi-bin ( c:\inetpub\wwwroot\cgi-bin celui qui contient vos scripts).
  4. Sélectionnez la permission en execution ( vous pouvez aussi sélectionner la permission en lecture si vous voulez ).

rouge.gif (870 octets) Pour éviter "l'Erreur 500 : Erreur de serveur" vous devez faire l'étape définie au 1. c'est à dire ajouter une valeur à la clé de registre: d'accès au script Perl ( L'URL traduite en un chemin d'accès local). Le deuxième est la chaîne de requête ( information venant de l'URL). Elle est transmise en tant que paramêtre de la ligne de commande à condition de ne pas contenir de signe '='

Pour permettre au navigateur d'executer un script, vous devez toujours lui dire quel type de fichier est un programme éxécutable (Vous devez donc les mapper ajouter l'extension comme pour les .idc, .pl, .cfm, .asp, etc...).

Sous IIS 4

Document Word résumant l'installation

  1. Vérifier que les variables d'environnement pointant vers Perl (PATH) sont bien des variables systèmes et non des variables utilisateurs. (Clic droit " Poste de travail ", " Propriétés ")
  2. Aller dans le Microsoft Management Console
  3. Dans la fenêtre de gauche, vérifier la présence d'un répertoire /scripts ou /cgi-bin en dessous de l'arborescence " Site Web par défaut " .
  4. Si Ok voir 6/. Sinon :clic droit dans la fenêtre de gauche, sur Site Web par défaut, Nouveau, Répertoire virtuel.
  5. Choisir Autoriser l'accès script "Script" et "Executer". Puis "terminer", et redémarrez le serveur Web.
  6. Faire Clic droit dans la fenêtre de gauche sur le répertoire scripts ou cgi-bin, (celui ou se trouve le fichier save_fichier.pl), choisir " Propriétés ". Vérifier les droits : " Exécuter (y compris le script) ", et ni droit en lecture et écriture.
  7. Choisir Configuration. Si la ligne .pl n'est pas présente, Faire "Ajouter". Mettre "C:\Perl\bin\Perl.exe %s %s",".pl","PUT,DELETE", et cocher vérifier l'existence du fichier.Puis " ok ", " ok ", et redémarrez le serveur Web.

Configuration des serveurs Web pour les CGI/perl sous Windows (version englaise)

3 - Configuration des scripts

Cela dépend du concepteur du script ! Si vous êtes sous Unix, vous devez d'abord vérifier le chemin de l'interpréteur dans le cas d'un script Perl.

Certains chemins inscrits dans un fichier de configuration ou en haut de programme sont certainement également à modifier. Commencez par traiter les CGI interactivement depuis une ligne de commande.
Vous saurez ensuite si vous avez un problème que cela vient de la configuration du serveur ou des droits sur le fichier.

Pour avoir la liste des problèmes les plus fréquents, venez ici.