Tutoriel : générer une page en Python chez OVH

Un très court tutoriel afin d’expliquer comment générer une page avec le langage Python sur un hébergement chez OVH. C’est-à-dire faire du CGI 😉

Logo de Python

Python c’est bon, mangez-en !

Le fait est qu’il est tout à fait possible de faire tourner des scripts écrits en Python (et même C) sur un hébergement mutualisé OVH (toutes les offres actuelles) !

Le gros problème est que la documentation à ce sujet est inexistante ou alors très bien cachée : je n’ai rien trouvé dans leur documentation en ligne… D’autant qu’il ne suffit pas de « balancer » un fichier « .py » et espérer qu’il fonctionne sans autre forme de procès !

Voici le canevas d’un script qui génère une page web :

#!/usr/bin/python
print "Content-type: text/html\n\n"
print "<html><head><title>Page de test</title></head><body>\n"
print "<p>Hello World</p>\n"
print "</body></html>\n"

Remarquez que les deux premières lignes sont obligatoires ! La première indique le chemin vers l’interpréteur Python et la deuxième l’entête de type de contenu envoyé au navigateur : elle doit contenir deux retours à la ligne !

Enregistrez le code dans un fichier avec l’extention « .cgi » (et pas « .py ») et envoyez-le sur votre espace FTP, dans n’importe quel dossier. Vous devez impérativement lui donner les droits (chmod) 705 pour que l’exécution puisse se faire !

Si vous avez fait comme il faut, un « Hello World » doit s’afficher quand vous accédez au script, sinon vous obtiendrez un code d’erreur 500 du plus bel effet…

Si je résume :

  • S’assurer que le script contient le chemin de l’exécutable et l’entête ;
  • Donner l’extension « .cgi » ;
  • Donner les droits 705 ;
  • Placer n’importe où sur l’espace d’hébergement ;
  • Exécuter !

J’espère que ce tutoriel vous est utile et bonne programmation !

Share Button

10 réflexions sur « Tutoriel : générer une page en Python chez OVH »

  1. C’est bien mais … c’est du CGI!

    Pas efficace donc, les ressources ne sont pas gardées en mémoire et rechargées constamment :/

    Personnellement, j’avais également à le placer dans le dossier /cgi-bin/ (qui n’est pas dans /www/ mais était quand même accessible comme s’il se situait dans /www/).

    Enfin, je rajouterais au moins ça si vous tentez vraiment à faire du CGI:

    import cgi
    import cgitb

    cgitb.enable()

    Le module cgi contient pas mal d’outil sympathique, le plus important étant cgi.escape (permettant d’échapper l’HTML ;)) et
    form = cgi.FieldStorage() pour récupérer les données GET. (Je me suis jamais penché sur les données POST avec CGI …)

    Enfin, attention que parfois, juste réuploader le fichier lui enlève ses droits (et du coup pouf l’erreur 500 qui explique rien).

    La norme c’est de faire du WSGI. Seul problématique c’est que généralement il vous faudra un dédié ou un VPS pour faire ça … Contacter le support en cas de doute 🙂

    Je vous conseille WSGI.

    • Merci JeromeJ pour ces informations complémentaires pertinentes 🙂

      A ma décharge, je ne connais pas plus le CGI ni le Python que cela… De fait, cet article est volontairement très sommaire et n’explique que la base 😉

  2. Pour ce qui est de la première ligne, ça marche pas tel quel (du moins sur mon mutu).
    Par contre :

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    print "Content-type: text/html\n\n"
    print "Page de test\n"
    print "Hello World\n"
    print "\n"

    Fonctionne normalement quel que soit l’emplacement de l’exécutable.
    La deuxième ligne permet de travailler avec les caractères accentués.
    Le reste est pareil.

    Dans tous les cas, merci pour le tuto 😛

  3. Bonjour, merci pour ce tuto, j’ai testé et ca marche très bien même… Mon seul problème est de savoir si on peut importer des modules externes (les modules dont on importe avec la commande pip…)
    Merci d’avance.

  4. pour moi, ca ne marche pas si mon hebergement OVH. je me demande s’il n’y a pas un autre reglage qq part.
    j’ai ca

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

  5. Pour moi ca ne marche que si le fichier est à la racine. J’ai tout essayé et verifié les droits – le meme script tourne s’il est dans « www », et pas s’il est partout ailleurs…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *