Python / Apache config issue

Alan McKay alan.mckay+python at gmail.com
Thu Feb 16 10:16:47 EST 2012


OK, since you all said to send it, here it is :-)  Though I think it may be
an apache issue, I'll send it anyway.

I'm using the software called "Open Freezer" which is used to track
reagents and other chemicals in research labs.

I also posted this here on their discussion forums but have not heard
anything yet.  In general their install and config instructions are pretty
incomplete and even asking the authors direct questions sometimes does not
get very good answers

https://sourceforge.net/p/openfreezer/discussion/openfreezer/thread/789d5cdb/

It was working fine on Ubuntu 11.04 and RHEL 5.7 but I'm having issues on
Ubuntu 11.11 - in all cases the versions of python that come with the
respective OS

In the working version on Ubuntu 11.04 the entire apache instance was
dedicated to this app - something I cannot do on the RHEL and Ubuntu 11.11
machines

---snip---

The specific problem I am having is that I go to "Search Projects", and
then select a project and hit "Go", and it does not execute the python. In
one configuration, it downloads the .py script instead of executing it. In
the other configuration it tells me 404 cannot find it. I had this working
fine on RHEL 5.7 but now it is broken on Ubuntu (with the same config file)

Details below.

I had the basic CGI functions working fine on RHEL but had to move to the
latest version of Ubuntu server and am having trouble. One different aspect
of both my RHEL and Ubuntu setups is that I cannot dedicate the entire
Apache instance to Open Freezer, so my URL is not
http://MYIP/<https://sourceforge.net/nf/redirect/?path=http%3A//MYIP/>
it
is http://MYIP/openfreezer/<https://sourceforge.net/nf/redirect/?path=http%3A//MYIP/openfreezer/>
 .

On RHEL my openfreezer.conf file looks like this. Note there is no
VirtualHost because as mentioned I cannot dedicate this apache instance to
just open freezer, and I also do not have control over DNS so I cannot
assign a 2nd DNS name to this server.

Alias        "/openfreezer"    "/var/www/OpenFreezer"
Alias        "/openfreezercgi"    "/var/www/OpenFreezer/cgi"
<Directory /var/www/OpenFreezer/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    #AddHandler python26-mod_python .py
    #AddHandler mod_python .py
        PythonDebug On
        #PythonHandler mod_python.publisher</Directory>
<Directory /var/www/OpenFreezer/cgi/>
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    AddHandler mod_python .py
        #PythonDebug On
        PythonHandler mod_python.cgihandler
    PythonPath "['/var/www/OpenFreezer/cgi'] + sys.path"
</Directory>

This works fine on RHEL 5.7 with apache 2.2.3 . I select a project, hit
"Go" and it executes cgi/project_request_handler.py as it should. But with
the exact same config file on Ubuntu it instead tries to download the .py
instead of execute it. But I also try putting a couple of test programs in
my CGI directory. This first one tries to download as well with the above
config :

test.py
def index(req):
return "Test successful";


But this second one executes correctly :

testcgi.py
#!/usr/bin/python
print "Content-type: text/html"
print
print ""
print "
Hello!"
print ""

So I talk to the other guy here who started out working on this for us,
because he had it running on Ubuntu as well (a slightly older version -
11.04 versus my 11.11). He has apache 2.2.16 and I have 2.2.20

His config file looks like this - note that he does have the entire apache
server dedicated to Open Freezer so his URL is
http://HISIP/<https://sourceforge.net/nf/redirect/?path=http%3A//HISIP/>

<VirtualHost *:80>
    ServerAdmin webmaster at localhost
    ServerName localhost

    DocumentRoot /var/www/OpenFreezer/
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/OpenFreezer/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler mod_python .py
            PythonDebug On
            #PythonHandler mod_python.publisher

    </Directory>

    <Directory /var/www/OpenFreezer/cgi/>
        AllowOverride All
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
        #AddHandler mod_python .py
            #PythonDebug On
            #PythonHandler mod_python.cgihandler
    </Directory>

    #<Directory /var/www/OpenFreezer/cgi/>
        #
    #</Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

If I strip out the two Directory sections from that and make mine look the
same, then instead of trying to download the .py file what I get is this
error :

Not Found
The requested URL /openfreezer/cgi/project_request_handler.py was not
found on this server

and checking the apache error.log that is of course a 404

But that file definitely exists at that location - no question about it.

And interestingly, now my test programs have the opposite reaction. test.py
works under this config, but testcgi.py gives me the 404

So I'm just stumped at this point. I've googled everywhere loooking for
help.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120216/5f8ec8db/attachment.html>


More information about the Python-list mailing list