Hi Graham,

My modwsgi cannot find /error/style in the request "GET /error/style/black.css 
HTTP/1.1" in the HelloWorld debugger example.  I get

File does not exist: /var/www/error/style, referer: 
http://pf-client1:8800/hello/debugger

Note, that it works fine from the "paster serve" cmd and from the 
simple_server.  Also, if I set debug = true in the development.ini, I get the 
interactive debugger page just fine from modwsgi.

My setup is below.  Thank you for your help!
/Val
------------
/etc/httpd/conf.d/wsgi.conf:
------------
LoadModule wsgi_module modules/mod_wsgi.so

  # place sockets here
WSGISocketPrefix run/wsgi

Listen 8800
NameVirtualHost *:8800
<VirtualHost *:8800>

    ServerName pf-client1
    LogLevel info

      # Logfiles
    ErrorLog logs/wsgi-error_log
    CustomLog logs/wsgi-access_log common

    DocumentRoot /var/www/wsgi
    <Directory /var/www/wsgi>
        Order deny,allow
        Allow from all
    </Directory>

      # Setup mod_wsgi
    WSGIScriptAlias / /var/www/wsgi/dispatch.wsgi
      # Run wsgi as a single daemon process with 15 threads
    WSGIDaemonProcess pf-client threads=15 display-name=%{GROUP}
    WSGIProcessGroup pf-client

</VirtualHost>
------------------
/var/www/wsgi/dispatch.wsgi:
------------------
# Add the virtual Python environment site-packages directory to the path
import site
site.addsitedir('/u0/home/vshkolni/performance/pyl/lib/python2.6/site-packages')

import sys
sys.path.append('/u0/home/vshkolni/performance/HelloWorld')

  # Suppress Python 3 deprecation warning in ToscaWidgets (tw/core/view.py)
from warnings import simplefilter
simplefilter('ignore',DeprecationWarning,223)

# Keep cache in Pylons dir
import os
os.environ['PYTHON_EGG_CACHE'] = '/var/www/wsgi/pylons/egg-cache'
if __name__ == '__main__':
  os.environ['PYTHON_EGG_CACHE'] = 
'/u0/home/vshkolni/performance/HelloWorld/wsgi/pylons/egg-cache'

# Load the Pylons application
from paste.deploy import loadapp
application = 
loadapp('config:/u0/home/vshkolni/performance/HelloWorld/development.ini')

    # test run as python /var/www/wsgi/dispatch.wsgi
if __name__ == '__main__':
  from wsgiref import simple_server
  httpd = simple_server.WSGIServer(('',8000),simple_server.WSGIRequestHandler)
  httpd.set_app(application)
  httpd.serve_forever()

-------------
HelloWorld/development.ini:
-------------
[DEFAULT]
debug = true

[server:main]
use = egg:Paste#http
#host = 127.0.0.1
host = pf-client1
port = 5000

[app:main]
use = egg:HelloWorld
full_stack = true
static_files = true

cache_dir = %(here)s/data
beaker.session.key = helloworld
beaker.session.secret = somesecret

set debug = false


# Logging configuration
[loggers]
keys = root, routes, helloworld

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console

[logger_routes]
level = INFO
handlers =
qualname = routes.middleware
# "level = DEBUG" logs the route matched and routing variables.

[logger_helloworld]
level = DEBUG
handlers =
qualname = helloworld

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S

-----------
HelloWorld/helloworld/config/routing.py;
-----------
from pylons import config
from routes import Mapper

def make_map():
    """Create, configure and return the routes Mapper"""
    map = Mapper(directory=config['pylons.paths']['controllers'],
                 always_scan=config['debug'])
    map.minimization = False

    # The ErrorController route (handles 404/500 error pages); it should
    # likely stay at the top, ensuring it can always be resolved
    map.connect('/error/{action}', controller='error')
    map.connect('/error/{action}/{id}', controller='error')
    map.connect('/error/{action}/{id}', controller='error')
    map.connect('/var/www/error/{action}/{id}', controller='error')

    # CUSTOM ROUTES HERE

    map.connect('/', controller='hello', action='index')
    map.connect('/{controller}/{action}')
    map.connect('/{controller}/{action}/{id}')

    return map

------------
HelloWorld/helloworld/controllers/error.py
------------
import cgi

from paste.urlparser import PkgResourcesParser
from pylons import request
from pylons.controllers.util import forward
from pylons.middleware import error_document_template
from webhelpers.html.builder import literal

from helloworld.lib.base import BaseController

class ErrorController(BaseController):

    def document(self):
        """Render the error document"""
        resp = request.environ.get('pylons.original_response')
        content = literal(resp.body) or cgi.escape(request.GET.get('message', ''
))
        page = error_document_template % \
            dict(prefix=request.environ.get('SCRIPT_NAME', ''),
                 code=cgi.escape(request.GET.get('code', str(resp.status_int))),

                 message=content)
        return page

    def img(self, id):
        """Serve Pylons' stock images"""
        return self._serve_file('/'.join(['media/img', id]))

    def style(self, id):
              """Serve Pylons' stock stylesheets"""
        return self._serve_file('/'.join(['media/style', id]))

    def _serve_file(self, path):
        """Call Paste's FileApp (a WSGI application) to serve the file
        at the specified path
        """
        request.environ['PATH_INFO'] = '/%s' % path
        return forward(PkgResourcesParser('pylons', 'pylons'))

--

You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.


Reply via email to