Mod_wsgi pylons (ckan) installation not working
Question: I am setting up CKAN, a pylons application according to these instructions:
<http://packages.python.org/ckan/deployment.html>

But when I point to the server (no DNS setup yet) using IP or hostname, I only
see apache's greeting page, sugesting the ckan app is not being loaded.

here is my mod_wsgi script:

    
    
    import os
    instance_dir = '/home/flavio/var/srvc/ckan.emap.fgv.br'
    config_file = 'ckan.emap.fgv.br.ini'
    pyenv_bin_dir = os.path.join(instance_dir, 'pyenv', 'bin')
    activate_this = os.path.join(pyenv_bin_dir, 'activate_this.py')
    execfile(activate_this, dict(__file__=activate_this))
    from paste.deploy import loadapp
    config_filepath = os.path.join(instance_dir, config_file)
    from paste.script.util.logging_config import fileConfig
    fileConfig(config_filepath)
    application = loadapp('config:%s' % config_filepath)
    

here is my virtual host configuration:

    
    
    <VirtualHost *:80>
    
    ServerName dck093
    
    ServerAlias dck093
    
    WSGIScriptAlias / /home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/bin/ckan.emap.fgv.br.py
    # pass authorization info on (needed for rest api)
    WSGIPassAuthorization On
    
    ErrorLog /var/log/apache2/ckan.emap.fgv.br.error.log
    CustomLog /var/log/apache2/ckan.emap.fgv.br.custom.log combined
    <Directory /home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/bin>
        Order deny,allow
        Allow from all
    </Directory>
    </VirtualHost>
    

I try to disable the 000-default site (with a2dissite), but that dind't
help.After doing this I get an Internal server error page. After a fixing some
permissions I managed to get this Pylons error log:

    
    
    sudo tail /var/log/apache2/ckan.emap.fgv.br.error.log 
    [Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]     app_iter = self.application(environ, start_response)
    [Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]   File "/usr/lib/pymodules/python2.6/repoze/who/middleware.py", line 107, in __call__
    [Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]     app_iter = app(environ, wrapper.wrap_start_response)
    [Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]   File "/home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/lib/python2.6/site-packages/pylons/middleware.py", line 201, in __call__
    [Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]     self.app, environ, catch_exc_info=True)
    [Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]   File "/home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/lib/python2.6/site-packages/pylons/util.py", line 94, in call_wsgi_application
    [Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]     app_iter = application(environ, start_response)
    [Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]   File "/usr/lib/pymodules/python2.6/weberror/evalexception.py", line 226, in __call__
    [Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110]     "The EvalException middleware is not usable in a "
    [Wed Mar 30 12:38:32 2011] [error] [client 10.250.48.110] AssertionError: The EvalException middleware is not usable in a multi-process environment
    

Can anyone point out what am I missing?


Answer: Since you're deploying on apache, ensure that you are not in interactive debug
mode - which uses EvalException. In your Pylons config file
(ckan.emap.fgv.br.ini) ensure you have this:

    
    
    [app:main]
    set debug = false
    

