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:
- Apache: 70% des serveurs en utilisation sur Internet. Existe en version Unix et Windows.
- IIS et PWS (20% des serveurs) le(s) serveur(s) de Microsoft (Version NT et version 95/98/00). Fournis avec les CD de Windows.
- Netscape Entreprise 5% du marché, fournit de nombreuses interfaces avec des produit professionnels
- Omni HTTP
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
Apache :
Sources :
Vous pouvez soit récupérer les sources, soit obtenir une version déjà compilée pour votre systême.
- Sources :http://www.apache.org/dist
- Versions précompilées: http://www.apache.org/dist/binaries
- Version Windows: http://www.apache.org/dist/binaries/win32
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
IIS & PWS
Netscape Entreprise
Téléchargez le serveur pour votre version ici: http://www.iplanet.com/downloads/download/index.html
Installation de Perl
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.
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
Netscape Entreprise
Apache
IIS3
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.
Sous Netscape Entreprise Server :
Perl :
- Déclarer un répertoire comme un répertoire ShellCGI dans l'administration netscape
- Ajouter la ligne " type=magnus-internal/shellcgi exts=pl" dans c:\netscape\server\https-...\config\mime.types
- 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:
- Déclarer un répertoire comme un répertoire ShellCGI dans l'administration netscape
- Ajouter la ligne " type=magnus-internal/shellcgi exts=php " dans c:\netscape\server\https-...\config\mime.types
- 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
Sous Apache :
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>
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:
- Aller dans le gestionnaire de services d'IIS via le menu démarrer/Microsoft Internet Server
- Clic droit sur WWW =>Propriété du service
- Choisir /Scripts =>Modifier les propriétés
- Vérifier que le répertoire c:\inetpub\scripts (ou votre équivalent cgi-bin) à les droits en exécution
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))
- Cliquez sur "menu Démarer/Programmes/Microsoft Internet Server(commun)/Gestionnaire de services"
- 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 ).
- Double cliquez sur le répertoire cgi-bin ( c:\inetpub\wwwroot\cgi-bin celui qui contient vos scripts).
- Sélectionnez la permission en execution ( vous pouvez aussi sélectionner la permission en lecture si vous voulez ).
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
- 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 ")
- Aller dans le Microsoft Management Console
- 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 " .
- Si Ok voir 6/. Sinon :clic droit dans la fenêtre de gauche, sur Site Web par défaut, Nouveau, Répertoire virtuel.
- Choisir Autoriser l'accès script "Script" et "Executer". Puis "terminer", et redémarrez le serveur Web.
- 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.
- 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.