2010-11-09 17 views
6

corriendo cherrypy con mod_wsgi en apache junto con otra aplicación php. La aplicación cherrypy NO está montada en la raíz, sino en algo como 'localhost/apps/myapp' a través de WSGIScriptAlias ​​en el archivo de configuración de apache.guindaleza y ruta relativa en la aplicación WSGI

En testapp.py, me han tratado los siguientes, y cuando intento acceder a localhost/aplicaciones/miaplicacion en un navegador:

app = cherrypy.tree.mount(MyApp(), '', 'settings.config') #FAILS WITH 404 

y

app = cherrypy.tree.mount(MyApp(), '/apps/myapp', 'settings.config') # WORKS 

El primer caso falla porque cherrypy espera estar en la raíz del servidor, en lugar de en relación a dónde está montado a través de WSGI en apache.

¿Existe alguna forma preferida de hacer que las aplicaciones de cherrypy funcionen en relación con la ruta en la que están montadas en apache bajo WSGIScriptAlias?

Básicamente, voy a ejecutar varias aplicaciones cerebritos bajo varias rutas diferentes, y preferiría que apache manejara el despacho (es decir, cherrypy solo ejecuta la aplicación y no se preocupa por la ruta relativa). De esta forma puedo evitar actualizar varios archivos/archivos de configuración python cada vez que cambian algunas de las rutas relativas en el servidor.

¿Alguna sugerencia?

por cierto, la aplicación cherrypy Actualmente, se transmite a la aplicación WSGI de la siguiente manera:

app = cherrypy.tree.mount(HelloWorld(), '', 'settings.config') 
return app(environ, start_response) 

Respuesta

1

que estoy haciendo esto, aunque esto requeriría cherrypy saber la ruta relativa:

class Dir: pass 
root = Dir() 
root.apps = Dir() 
root.apps.myapp = MyApp() 
cherrypy.tree.mount(root) 

Este me permite estructurar la aplicación de cualquier manera que necesite. Estoy usando nginx y no Apache, pero no creo que vaya a hacer ninguna diferencia. Aunque se pone un poco prolijo si estás usando rutas largas sin mucho más en el medio.

cherrypy puede ser compatible con other dispatchers que podría ser más adecuado para lo que estás tratando de hacer, o tal vez necesites escribir uno personalizado.

Cuestiones relacionadas