2012-11-03 18 views
5

Sto usando il sistema AppFog PaaS per alcuni giorni, e lo adoro, probabilmente è il miglior sistema PaaS che ho provato (ho usato altri 3 in precedenza), ma non ha trovato informazioni su come servire il contenuto statico con il server Web in frontend (Apache https o nginx) Non sono sicuro di quale server venga utilizzato.Come servire contenuto statico con Apache in AppFog (app WSFI Python)

La mia app è un Python WSGI con CherryPy e funziona perfettamente in AppFog ma non voglio che CherryPy serva contenuto statico, penso che Apache httpd o nginx sia un'opzione migliore per questo.

+0

penso che ho sbagliato e AppFog uso nginx come proxy server, invece di Apache httpd per le applicazioni Python, comunque, ho ancora bisogno di configurare l'accesso diretto al contenuto statico. – Roberto

+0

Se la mia risposta è stata utile, impostala come soluzione. Grazie! –

risposta

0

Modifica il file nginx.conf. Nella sezione Server entrare ...

# serve static files 
     location ~ ^/(images|javascript|css)/ { 
     root /var/www/html/appname; 
    } 

immagini, JavaScript e CSS sarebbe cartelle nella cartella principale del documento. Aggiorna tutti i tuoi URL di conseguenza.

+1

Grazie Andrew, ma per quanto ne so AppFog non consente l'accesso al file apache http.conf :-( – Roberto

+0

Risposta aggiornata per il server nginx. –

+0

Ciao Andrew come ho detto prima non ho accesso al file di configurazione del server, la mia app viene eseguito in AppFog e posso solo modificare i file nella directory dell'app. Ho aperto un ticket in Appfog per assicurarmi che questa funzionalità sia possibile o meno (in altri sistemi PaaS come OpenShift è possibile farlo). la tua risposta – Roberto

2

Con il supporto di Ryan, sono finalmente in grado di caricare file statici! Ecco i passaggi:

  1. creato una directory 'statica' nella root del progetto - qui tutti i file statici saranno raccolti eseguendo il comando collectstatic.

  2. Modificare il file settings.py:

    STATIC_ROOT = os.path.join (os.path.abspath (os.path.dirname (file di)), '../static') # Può cambiare a seconda di dove si trova il file settings.py!

    STATIC_URL = '/ static /'

  3. Aggiungete la seguente riga nel urlpatterns variabile urls.py di file:

    url (r '^ statico/(P *) $?.', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),

  4. Infine, eseguire il comando collectstatic nella macchina locale. Ciò copierà tutti i file statici dalle applicazioni in uso:

    pitone manage.py collectstatic

Questo è tutto. Spingere AF :)

Downside: necessario eseguire collectstatic ogni volta che abbiamo un nuovo file statico ...

+1

Ciao @ giga, la domanda iniziale riguarda come pubblicare il contenuto statico dal frontend di AppFog (apache httpd o nginx), non dall'app Python. In realtà, sto già servendo file statici dalla mia app Python usando CherryPy (l'ho detto nel mio post originale), ma il programma Python (o Java o qualsiasi altra cosa) non è efficiente nel servire file statici come server web maturi. – Roberto

+0

Oops. In primo luogo, stavo avendo problemi con il servizio statico di python ...: P – giga

+0

Quindi in AppFog non è possibile modificare ngix.conf? –