2010-11-09 15 views
6

cherrypy in esecuzione con mod_wsgi su apache insieme ad un'altra app php. L'applicazione cherrypy NON è montata su root, ma piuttosto su qualcosa come "localhost/apps/myapp" tramite WSGIScriptAlias ​​nel file di configurazione di apache.cherrypy e relativo percorso nell'app WSGI

In testapp.py, ho provato quanto segue, e quando provo ad accedere localhost/apps/myapp in un browser:

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

e

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

Il primo caso fallisce perché cherrypy si aspetta di essere alla radice del server, invece che in relazione a dove è montato tramite WSGI in Apache.

C'è un modo preferito per far funzionare le app di cherrypy rispetto al percorso in cui sono montate in apache sotto WSGIScriptAlias?

Fondamentalmente, eseguirò diverse app di cherrypy in diversi percorsi e preferirei se Apache gestisse l'invio (ad esempio cherrypy esegue semplicemente l'app e non si preoccupa del percorso relativo). In questo modo posso evitare di aggiornare diversi file python/file di configurazione ogni volta che cambiano alcuni dei percorsi relativi sul server.

Qualche suggerimento?

btw, l'app CherryPy è attualmente approvato per l'applicazione WSGI come segue:

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

risposta

1

sto facendo questo, anche se ciò richiederebbe cherrypy conoscere il percorso relativo:

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

Questo mi consente di strutturare l'applicazione in qualsiasi modo mi serva. Sto usando nginx e non Apache, ma non credo che farà alcuna differenza. Anche se diventa un po 'prolisso se stai usando percorsi lunghi con poco altro in mezzo.

cherrypy può supportare other dispatchers che potrebbe essere più adatto a ciò che si sta tentando di fare, o forse è necessario scrivere uno personalizzato.

Problemi correlati