Point de d�part
Le
serveur Apache est install� dans le r�pertoire
APACHE_DIR, qui contient les fichiers/r�pertoires suivants:
- bin
- cgi-bin
- conf
- error
- icons
- logs
- modules
- des fichiers "*.txt"
Le
service HTTPD est pr�sent sur la machine, accessible dans l'outil
de gestion de l'application, dans la rubrique "Services et
applications" pour Windows.
Python
est install� dans le r�pertoire PYTHON_DIR, qui
contient les fichiers/r�pertoires suivants:
- DLLs
- Doc
- include
- Lib
- libs
- Scripts
- tcl
- tools
- le fichier "python.exe"
- des autres fichiers
Installation et configuration
Le module mod_python est un fichier ".so" qui est copi� dans le r�pertoire APACHE_DIR/modules/, reste � configurer apache pour le prendre en compte.
Fin du fichier "APACHE_DIR/conf/httpd.conf" | ||
---|---|---|
[...] # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for requests without a known # server name. # #<VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com # DocumentRoot /www/docs/dummy-host.example.com # ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common #</VirtualHost> # ==[ chargement du module mod_python ]== LoadModule python_module modules/mod_python.so |
||
Lancement d'un programme PYTHON unique pour toutes les requ�tes
Dans ce cas, le design pattern du proxy est impl�ment� par ce programme python. Cette m�thode est aussi pratique lorsque le traitement de la requ�te a besoin de plusieurs donn�es dont les sources sont diff�rentes. L'appel � la requ�te est le d�clencheur du processus.
Ajout au fichier "APACHE_DIR/conf/httpd.conf" | ||
---|---|---|
Alias /metalib "C:/home/j_co/workspace/metalib" <Directory "C:/home/j_co/workspace/metalib"> Options Indexes FollowSymLinks AddHandler python-program .py PythonHandler test PythonDebug On </Directory> |
||
L'appel � l'URL "http://localhost/metalib/this_file_does_not_exist.py" executera le programme "C:/home/j_co/workspace/metalib/test.py" ; comme toutes les URL "http://localhost/metalib/*.py".
Programme "test.py" | ||
---|---|---|
from mod_python import apache def handler(req): req.content_type = 'text/plain' req.write("Hello World!") return apache.OK |
||
Dans le programme, "req" est un objet qui encapsule la
structure "Apache request_rec", contenant toutes les informations
Consulter l'API de l'objet Request (http://www.modpython.org/live/current/doc-html/pyapi-mprequest.html).
Lancement d'un programme sp�cifique pour chaque URI
Cette m�thode pr�sente l'avantage de faire le lien direct entre l'URI demand�e et une fonction python qui �xecutera la requ�te.
Ajout au fichier "APACHE_DIR/conf/httpd.conf" | ||
---|---|---|
Alias /metalib "C:/home/j_co/workspace/metalib" <Directory "C:/home/j_co/workspace/metalib"> Options Indexes FollowSymLinks AddHandler mod_python .pub PythonHandler mod_python.publisher PythonDebug On </Directory> |
||
Le module apache associera l'URI "*.pub" � un code python "*.py".
Programme "publish.py" | ||
---|---|---|
def try_me(req, name, email, comment): return """Thank you, %s. I will send you a mail at %s, with comment [%s]""" % (name, email, comment) |
||
Ce code permet de r�pondre � l'URI
"/metalib/publish.pub/try_me?name=tommy&email=t@me.com&comment=hello".
La configuration Apache sp�cifie � python d'executer le programme
"C:\home\j_co\workspace\metalib\publish.py".
La fonction prend en param�tre des donn�es que fournira un formulaire HTML.
Page accedée 1 fois.