Point de d�part

Le serveur Apache est install� dans le r�pertoire APACHE_DIR, qui contient les fichiers/r�pertoires suivants:

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:

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.