3. Le serveur Web
Le serveur web intégré est un serveur asynchrone, sur le même principe que les modules
asyncore et asynchat de la distribution standard de Python. Pour
autant que j'ai pu le tester, il est très efficace, avec des temps de réponse excellents
(1)
Le Répertoire Racine est l'endroit où placer les fichiers qui seront atteints au sommet de la
hiérarchie des url ; si vous placez monfichier.htm dans ce répertoire, il sera appelé
par http://hote/monfichier.htm où hote est le nom
d'hôte du serveur (localhost si vous travaillez en local)
A l'installation, le Répertoire Racine est le même que le Répertoire Serveur. Vous pouvez le
modifier dans le fichier de configuration (cf 3.4)
3.2 Servir des fichiers statiques
Pour servir des fichiers "statiques" (pages HTML, images GIF ou JPEG, etc) tout ce
qu'il y a à faire est de les créer en utilisant votre outil favori et de les sauvegarder dans le
Répertoire Racine
Supposons que vous ayez créé un document HTML, monFichier.htm, et que
vous l'ayez mis dans le Répertoire Racine. Lancez votre navigateur web préféré et entrez l'URL
http://localhost/monFichier.htm ; vous devriez voir votre fichier
s'afficher dans le navigateur
Si vous sauvegardez le fichier dans un sous-répertoire il faut ajouter son nom au début de l'URL.
Si vous avez un fichier monImage.gif dans le sous-répertoire Images
, son URL sera http://localhost/Images/monImage.gif
Pour atteindre des fichiers en-dehors du Répertoire Racine, utilisez les alias (cf 3.4)
Si on ne spécifie pas de nom de fichier et que l'url correspond à un répertoire, le serveur
cherche dans ce répertoire s'il y a des fichiers de nom index.html, index.htm,
index.py, index.pih, index.hip ou index.ks.
S'il n'en trouve pas, il affiche la liste des sous-répertoires et des fichiers dans le
répertoire ; s'il en trouve plus d'un, il déclenche une exception.
Si l'extension d'un fichier n'est pas spécifié, le serveur cherchera un fichier avec l'une
des extensions html, htm, py, pih, hip ou ks . S'il en trouve un, il est utilisé ; s'il en trouve
plus d'un, une exception est déclenchée ; s'il n'en trouve aucun, une exception est
également déclenchée.
3.3 Options de ligne de commande
La ligne de commande est de la forme :
python Karrigell.py [-P port] [-S] [-D] [initFile]
où
port est le numéro de port HTTP (80 par défaut)
S spécifie le mode "silencieux". Par défaut, Karrigell affiche une trace pour
chaque requête qu'il reçoit. Avec l'option -S rien n'est affiché
D donne à debug la valeur 1 (voir ci-dessous, dans "Fichier de
configuration")
initFile est le fichier de configuration (voir ci-dessous). Par défaut
c'est le
fichier Karrigell.ini dans le répertoire du serveur
3.4 Le fichier de configuration
Les options de configuration sont définies dans un fichier de configuration. Par défaut il s'agit du
fichier Karrigell.ini dans le répertoire du serveur. On peut définir un autre fichier dans la ligne
de commande
Le fichier de configuration est divisé en plusieurs sections
[Directories]
root
Donnez à l'option root le nom du répertoire depuis lequel vous voulez servir des
fichiers. A l'installation, cette option n'est pas initialisée et le répertoire est celui du
serveur.
Dans le reste de cette documentation ce répertoire sera appelé le Répertoire
Racine
protected
une liste de répertoires "protégés" : pour chaque script dans ces
répertoires, un script AuthentScript.py sera automatiquement exécuté en premier. Ce script
AuthentScript.py doit être écrit par l'administrateur et placé dans le répertoire à
protéger. Par défaut, seul le répertoire admin est protégé.
Utilisez ";" pour en ajouter d'autres
allow_directory_listing
Si une url correspond à un répertoire dans lequel on ne trouve aucun fichier
index, cette option détermine qui a l'autorisation de lire le contenu du répertoire :
- all = tous les utilisateurs
- none = aucun utilisateur
La valeur par défaut est "none"
[Applications]
Fait correspondre à des extensions de fichiers des types MIME ; autant que je sache ceci
fonctionne avec Netscape, mais Internet Explorer écrase ces correspondances avec ses propres
paramètres
[Alias]
On peut associer un alias à un chemin dans le système de fichier.
Par exemple, si vous créez cet alias : scripts=c:\Mes documents\Scripts Karrigell ,
alors
l'url htpp://localhost/scripts/index.htm cherchera le fichier c:\Mes
documents\Scripts Karrigell\index.htm
[Server]
port
L'option port permet de changer le port HTTP (80 par défaut)
debug
L'option debug spécifie un niveau de débogage. Avec la valeur 1,
les modules importés sont rechargés à chaque import . Ceci évite
d'avoir à relancer le serveur à chaque fois qu'une modification est apportée à
un script importé
silent
Si on donne la valeur 1 à l'option silent , rien n'est imprimé sur la
fenêtre de console
gzip
Si l'option gzip a la valeur 1, et que le client supporte l'encodage
gzip (c'est le cas de la plupart des navigateurs), le serveur comprime les données
envoyées au client. ceci réduit l'occupation du réseau, mais ralentit un peu le
serveur
global
Dans l'option global , vous pouvez spécifier le chemin des modules qui
doivent être importées dans chaque script exécuté par Karrigell. Si vous avez une ligne
comme
global=%(base)s/monScript.py;%(base)s/monScript1.py
alors les modules monScript et monScript1
seront disponibles dans l'espace de noms de tous les scripts
ignore
Une liste d'urls à ignorer si elles ne sont pas trouvées (renvoie le code HTTP 204
au lieu de 404). Sert par défaut à ignorer l'url /favicon.ico ,
recherchée par la plupart des navigateurs
[Translation]
Specifie la langue utilisée dans l'application, indépendamment des options définies dans
le navigateur. Faites lang=default si vous ne voulez pas de traduction,
lang=en si vous voulez une traduction en anglais, etc
Une variable base est initialisée par Karrigell avant le chargement du fichier
de configuration, sa valeur est le répertoire serveur. Voir un exemple de son utilisation par
%(base)s/ dans le fichier par défaut Karrigell.ini
[VirtualHost nom:port]
Karrigell prend en charge la notion d'hôte virtuel, qui permet de servir
plusieurs hôtes de noms différents sur le même serveur
Pour spécifier un hôte virtuel vous devez ajouter une ligne comme celle-ci
dans le fichier de configuration :
[VirtualHost nom[:port]]
où nom est le nom de l'hôte (comme www.test.org )
et port est le numéro de port (80 par défaut)
Vous devez spécifier un répertoire depuis lequel les requêtes à cet hôte seront
servies :
root = /web/monrep
(1) vous pouvez aussi vous servir d'un autre serveur web intégré,
basé sur les modules SocketServer , BaseHTTPServer et
SimpleHTTPServer de la distribution standard Python : faites
python Karrigell_SocketServer.py
Si vous préférez un serveur multi-thread utilisez
python Karrigell_ThreadedSocketServer.py
|