< Un serveur WEB en python sous Linux | Roozeec Linux Blog
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...Loading...

Un serveur WEB en python sous Linux

Le serveur WEB le plus connu est sans conteste APACHE couplé au langage de programmation très répandu PHP. Ce couple est très fort pour la création de site web dynamique. Mais que peut-on faire si on veut faire un petit serveur WEB simple propre a soi ? J’entends par là sans avoir les droits root et sans définir un configuration compliquée ? . J’ai peut etre une solution pour vous….si vous êtes dans les cas suivants, ca va peut-etre vous intéresser.

  • Vous ne connaissez pas PHP
  • Vous connaissez le langage Python (même rien qu’un peu)
  • Vous connaissez le HTML

Bon cet article sera un peu théorique comparé aux autres du site (pas de capture d’écran) mais relativement facile.

Bon je continue, il existe en fait un serveur très sympathique tout en Python qui peut s’installer avec les droits d’un utilisateur sur son répertoire personnel. Pas beau ca ?

Bon, comment s’appelle-t-il alors ? et bien c’est : Karrigell. Voici ses caractéristiques (reprises de la page d’accueil du logiciel) :

Karrigell est un canevas de développement web écrit en Python. Il a été pensé pour être vraiment simple à utiliser : serveur web intégré, base de données (KirbyBase), accès facile aux données d’environnement et aux formulaires, et en même temps complet et puissant : exécution de scripts Python dans le même processus que le serveur (pas de CGI), programmation de pages serveur mêlant HTML et code Python (similaire à PHP, JSP, ASP), gestion simple de l’authentification, des sessions, fonctions pour l’internationalisation

Passons donc à son téléchargement :

Pour accéder directement au fichier compressé bz2, c’est ici : Karrigell-2.2.tar.bz2
Pour d’autres extension c’est ici : Karrigell

Maintenant l’installation

Mon répertoire ou sont mis mes fichiers téléchargé est : /data/Downloads
Dans votre répertoire personnel :

mkdir www
cd www
cp /data/Downloads/Karrigell-2.2.tar.bz2 .
bunzip2 Karrigell-2.2.tar.bz2
tar -xvf  Karrigell-2.2.tar
mv Karrigell-2.2 karrigel (de facon a faciliter l’acces plus tard)
cd karrigel

Comme je ne suis pas root , je ne peux pas utiliser les ports inférieurs à 1024 pour le serveur (par défaut mis à 80 pour un serveur WEB), j’édite le fichier ini ( Karrigell.ini ) pour changer tout ca :
Je décommente la ligne suivante en enlevant le commentaire (le # devant) : port=8080
et je sauvegarde le fichier. Je vérifie aussi que j’ai pas un serveur apache en route.
Et maintenant je lance le serveur :

python Karrigell.py
    Karrigell 2.2 running on port 8080
    Debug level 1
    Press Ctrl+C to stop

Ceci indique que tout est lancé correctement, maintenant je lance mon navigateur et je me positionne sur la page : http://localhost:8080. Et là une page tout en vert s’affiche m’indiquant que tout fonctionne correctement.

Renseignements :

Karrigel fonctionne avec plusieurs types de fichiers, c’est bien pratique suivant ce que l’on veut faire. J’entands par là si on veut ecrire plus de HTML que de python, ce sera un type de fichier, si c’est plus de python que de html ce sera un autre type, et le type par défaut c’est le fichier avec une extension .py (comme python), comme c’est le cas habituellement avec le fichier .php pour le langage PHP. Voyons donc ces extensions (exmples et description reprises du site officiel) :

1) Les scripts python : extension .py

Les scripts Python exécutés avec Karrigell sont des scripts Python ordinaires, sauf que les instructions print envoient les messages vers le navigateur du client au lieu de la fenêtre de la console. Voir la page Scripts python pour plus de détails : http://karrigell.sourceforge.net/fr/pythonscripts.htm

Exemple : print "Bonjour Karrigell !" affichera le message dans le navigateur

2) Les scripts Python dans Html : extension .pih (python inside html)

Python Inside HTML se comporte de façon très proche des Active Server Pages de Microsoft, des Java Server Pages et de PHP : il s’agit à la base d’un document HTML, dans lequel on insère des portions de code écrites dans un langage de programmation – ici Python. Voir la page http://karrigell.sourceforge.net/fr/pythoninsidehtml.htm

Exemple :

La date courante est
< 0mport time
print time.strftime("0:%m:%y",time.localtime(time.time()))
%>

3) HTML dans python : extension .hip (html inside python)

HTML Inside Python (HIP) est l’inverse de Python Inside HTML ; il rend l’inclusion de code HTML dans des scripts Python plus facile que par des instructions print. voir la page http://karrigell.sourceforge.net/fr/htmlinsidepython.htm

Exemple :

import os
repCourant=os.getcwd()
"Le répertoire courant est <b>"+repCourant+"</b>"

Voilà pour ce qui est des extensions de fichier, quelques fonctionnalités sont aussi bien interessantes :

- Inclusion de fichier :

Exemple :

Include("entete.htm")       # fichier statique avec titre, feuille de style, etc
(…) le corps du script
Include("piedDePage.py")    # script qui affichera la date par exemple

- Géneration de HTML en python avec le module HTMLTAGS.

Exemple:

print B(I(‘Roozeec’))  génèrera  <B><I>Roozeec</I></B>


- Commandes du shell

Ce qui est vraiment sympa chez Karrigell c’est que l’appel de commandes linux se fait très simplement. C’est a dire que vous pouvez écrire des scripts qui appellent des commandes linux. Par exemple :

from os import system
cmd = "ps -eaf|grep kwrite > tmp.txt"
system(cmd)

Si ces lignes sont mises dans un script appelé par le navigateur, elle générera le fichier tmp.txt qu’il suffira de relire et d’appeler les fonctions print pour l’afficher. Cool, non?

Voilà je m’arrête là en espérant vous avoir envie d’essayer…

Si vous avez aimé cet article, merci de voter pour lui ! :
Both comments and pings are currently closed.


Contrat Creative Commons
Cet article est sous licence Creative Commons Paternité
Partage des Conditions Initiales à l'Identique 2.0 France License

3 Responses to “Un serveur WEB en python sous Linux”

  1. cyril dit :

    Salut, une idée sur la façon d’installer ça sur linux?

    J’ai des erreurs au niveau des librairies:

    ./Karrigell_async.py: 1: import: not found
    ./Karrigell_async.py: 2: import: not found
    ./Karrigell_async.py: 3: import: not found
    ./Karrigell_async.py: 4: import: not found
    ./Karrigell_async.py: 5: import: not found
    ./Karrigell_async.py: 6: import: not found
    ./Karrigell_async.py: 7: import: not found
    : not found_async.py: 8:
    ./Karrigell_async.py: 10: import: not found
    : not found_async.py: 11:
    ./Karrigell_async.py: 12: import: not found
    ./Karrigell_async.py: 13: import: not found
    : not found_async.py: 14:
    ./Karrigell_async.py: 15: sockets: not found

  2. cyril dit :

    Salut, sais tu comment rendre accessible le serveur sur le reseau local avec une adresse autre que 127.0.0.1

    @+

  3. Roozeec dit :

    et si tu tapes dans ton navigateur : http://HOSTNAMEDETAMACHINE:8080 , ca donne quoi ?

Propulsé par WordPress


Contrat Creative Commons
Site sous licence Creative Commons Paternité
Partage des Conditions Initiales à l'Identique 2.0 France License
Web Analytics