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.
