Installer un serveur web local Apache avec interface CGI pour scripts python

Niveau : NSI – Procédure pour environnement (c) MS-Windows

Etape 1 – Téléchargement et installation de Laragon

  • Télécharger…
  • Lancer l’installation…
  • A la fin de l’installation assurez vous que le dossier dans lequel est installé Laragon est bien accessible en lecture et écriture pour tous les utilisateurs du poste de travail. Sinon modifiez les droits (clic droit sur le dossier, “propriétés” onglet “sécurité”).

Etape 2 – Téléchargement et installation de Python

  • Télécharger…
  • Lancer l’installation…
  • Il est possible d’installer Python dans Laragon lui-même.
  • Cette étape est inutile si vous posséder déjà une installation de Python via un éditeur comme Pyzo : il suffit de repérer l’emplacement du fichier python.exe

Etape 3 – Création d’un sous-répertoire “cgi-bin” dans le répertoire “www” de Laragon.

  • Lancer l’exécution de Laragon…
  • Cliquer sur le bouton “Dossier www”
  • Le répertoire “www” est le répertoire “racine” du serveur
  • C’est dans ce répertoire que seront placés les fichiers “html”, “css” et “js” du site.
  • Créer un sous-répertoire “cgi-bin” : c’est dans ce sous-répertoire que seront placés les fichiers des scripts écrits en python.

Etape 4 – Activation de l’interface CGI

  • Dans le répertoire Laragon, rechercher le sous-répertoire “bin” puis “apache” et “conf”
    • exemple de chemin : C:\laragon\bin\apache\httpd-2.4.35-win64-VC15\conf
  • Editer – avec notepad.exe par exemple – le fichier “httpd.conf” : rechercher la directive suivante :
<Directory "${SRVROOT}/cgi-bin">
   AllowOverride None
   Options None
   Require all granted	
</Directory>
  • Commenter ces lignes en plaçant un # en début de chacune d’elles, et ajouter de nouvelles directives de la façon qui suit :
#<Directory "${SRVROOT}/cgi-bin">
#   AllowOverride None
#   Options None
#   Require all granted	
#</Directory>

<IfModule alias_module>
	Alias /cgi-bin "C:/laragon/www/cgi-bin"
</IfModule>

<Directory "C:/laragon/www/cgi-bin">
	Options FollowSymLinks Indexes
	AllowOverride All
	AddHandler cgi-script .cgi .exe .pl .py .vbs
	Options ExecCGI
	Order allow,deny
	Allow from all
	Require all granted
</Directory>
  • “C:/laragon/” est le répertoire d’installation par défaut. Si Laragon est installé dans un répertoire différent, il faut adapter le chemin en conséquence.

Etape 5 – Tester !

  • Avec un éditeur de développement intégré (EDI) écrire le code html et css d’une page “web” simple comportant un lien hypertexte qui pointe vers un fichier “test.py” qui sera placé dans le répertoire “cgi-bin” (donc l’attribut ‘href’ de la balise <a> prendra la valeur : href =”cgi-bin/test.py”).
  • Sauvegarder ce fichier avec le nom “index.html” dans le répertoire “www” situé à la racine du serveur web local.
  • Avec un éditeur de développement intégré (EDI) écrire le code en python d’un fichier qui sera sauvegarder avec le nom “test.py” dans le répertoire ‘cgi-bin’.
  • Ce fichier comportera :
    • un commentaire particulier (obligatoire) écrit de la manière suivante : “#!” suivi du chemin (“C:\….\”) permettant d’accéder jusqu’à l’interpréteur “python.exe”. Par exemple :
#!C:\laragon\bin\python\python-3.6.1\python.exe
    • une deuxième instruction permettant d’écrire un entête dans le message ‘réponse’ (protocole http) et une troisième instruction permettant d’écrire une ligne ‘vide’ servant de séparateur entre les entêtes (headers) et le corps (body) du message ‘réponse (protocole http). Par exemple :
# Envoi d'un entête (header) dans le message 'réponse'
print("Content-Type: text/html; charset=ISO-8859-15")

# Envoi d'une ligne vide de séparation de la zone d'entêtes et de 'body' du message 'réponse'
print() 
    • Et pour terminer une instruction permettant d’écrire dans le corps (body) du message ‘réponse’ (protocole http) du code html, css, js… que le client interprétera quand il le recevra. Par exemple :
# Envoi du contenu du 'body' du message 'réponse'
print ("""
<!DOCTYPE html>
<html lang="fr-fr">
	<head>
.....
	</body>
</html>
""")
  • Dans un client (=navigateur), taper l’URL “localhost” et valider. Le contenu de la page “index.html” doit s’afficher.
  • En cliquant sur le lien hypertexte, le code html + css contenu dans le fichier “test.py” doit être transmis au client et interprété : une “nouvelle” page s’affiche.
  • Des fichiers prêts à l’emploi sont disponibles ici.

Problème : Erreur 403 (‘Forbidden’)

  • Cette erreur m’a été rapportée à plusieurs reprises.
  • Je n’ai pas réussi à en identifier la cause.
  • Je suis preneur de toute explication permettant de la résoudre.

Problème : Erreur 500 ! – “Page Blanche”

  • Si l’exécution de votre script python conduit à l’affichage d’une erreur ‘500’ ou d’une ‘page blanche’ c’est que votre script python contient des erreurs.
  • Ce n’est pas un problème de fonctionnement du serveur web local.
  • Ouvrez le fichier ‘error.log’ qui se trouve dans le dossier ‘\bin\apache\httpd-2.4.35-win32-VC15\logs’ avec un éditeur de texte basique (ex : bloc-notes).
  • Prenez connaissance des éventuels messages qui y figurent.
  • Vous trouverez peut-être la réponse à votre problème…

Les commentaires sont fermés.