[mod_python] python's directives in httpd.conf

Alan Kennedy modpython at xhaus.com
Sun Feb 17 07:36:32 EST 2002


Daniel,

> I managed to run mptest.py ("Hello World" of official
> doc) with Apache win32 but I don't manage to run the
> others python scripts :
> When I run the other python scripts, my browser show
> me "hello world"...the same result than mptest.py !!

The answer to this question depends on your configuration. 
If your configuration looks something like this

<Directory "/some/directory/">
    AddHandler python-program .py
    PythonHandler mptest
</Directory>

Then what you're telling Apache is "Run mptest.py whenever 
anyone requests a URI in the directory "/some/directory" 
which has the extension ".py". So *all* of the following 
URIs result in the same call to the "handler" function 
of "mptest.py".

http://someserver.com/some/directory/mptest.py
http://someserver.com/some/directory/anotherscript.py
http://someserver.com/some/directory/theScriptNameDoesNotMat
ter.py

The important section of the manual to understand is 
section 3.2: So what Exactly does Mod-python do? 

http://www.modpython.org/live/mod_python-2.7.6/doc-html/tut-
what-it-do.html

In particular, you must understand the section at the 
bottom called "Some food for thought".

> I think I must add or modify other apache python's 
directives. So 
> - I woud like to get a good httpd.conf for Apache win32 
and Python
> module which works.

"Works" is a relative thing. "Works" for what purpose is 
more the right question to ask. I've found that the bare 
minimum changes to a httpd.conf for mod_python are two 
changes, 

1. to load the modpython module, and 
2. to set up a handler module/function. 

These are handled as follows

1. Start with a clean httpd.conf from the Apache 
installation, and add the following entries.

LoadModule python_module modules/mod_python.{dll|so}

There should be a list of "LoadModule"s in the default 
httpd.conf, just put it with them. Probably best to put it 
before any other "LoadModule".

Then add a python handler for whichever directories you 
wish. The following directive indicates that 
myPythonHandler.py should be run whenever any URI ending 
in ".py" is requested anywhere in the document tree.

<Directory /my/document/root/>
   AddHandler python-program .py
   PythonHandler myPythonHandler
</Directory>

So whenever a request arrives for any URI ending in ".py", 
anywhere in the document hierarchy, at any level, then 
the "handler" function in the module "myPythonHandler.py" 
will be run. 

> - some information about the "standard" headers of python 
scripts
> running in Apache web server.

I'm not sure what you mean by "headers". This is not CGI, 
so you don't need shebang lines, or anything like that. The 
only headers you need to know about are the HTTP headers 
sent back with each http response, such as "Content-
type", "Content-length", "Content-encoding", and so on. 
These are set in your handler function as follows

def	handler(req):
	req.content_type = "text/html"
	req.headers_out['Content-Length'] = str(length)

Hopefully this well help you get configured and running.

Bon chance,

Alan.


---------------------------------------------
This message was sent using WebMail by CyberGate.
http://www.gate.net/webmail





More information about the Mod_python mailing list