Domanda

Sto cercando di distribuire un codice piramide per DotCloud.Sfortunatamente alcuni percorsi non sono mappati allo stesso modo della distribuzione locale di Paster.Quando eseguo la configurazione dello sviluppo con il server locale tramite paster serve ..., posso accedere ai file statici configurati in:

config.add_static_view('static', 'appname:static')
.

Tuttavia sui server DotCloud, quando gli script vengono eseguiti tramite il seguente wsgi.py:

import os, sys
from paste.deploy import loadapp
current_dir = os.path.dirname(__file__)
application = loadapp('config:production.ini', relative_to=current_dir)
.

Contenuto statico viene cercato in una directory errata.Invece di /home/dotcloud/current/static/pylons.css, dovrebbe guardare in /home/dotcloud/current/appname/static/pylons.css

C'è una parte della configurazione WSGI che può definire la directory di base?Cosa mi manca?L'applicazione viene eseguita tramite nginx / uwsgi.

Ho provato a caricare config:../production.ini, relative_to=current_dir + '/appname' ma che non ha cambiato nulla.

È stato utile?

Soluzione

On DotCloud, gli URL che iniziano con /static vengono gestiti direttamente da nginx, non da UWSGI. Ciò significa che il tuo codice non vedrà mai quelle richieste: saranno serviti immediatamente dalla sottodirectory static/ della tua applicazione.

Una soluzione possibile è configurare un link simbolico da static a appname/static.

Se non si desidera ingombrare il repository con un tale collegamento simbolico, è possibile utilizzare invece uno script postinstall:

#!/bin/sh
# This creates the symlink required by DotCloud to serve static content from nginx
ln -s ~/current/appname/static ~/current/static
.

Il simbolo Symlink è elegante, ma gli script postinstall ti danno la possibilità di abbandonare un commento nel file, per spiegare il suo scopo: -)

Rilasci futuri di DotCloud potrebbero offrire una commutazione "configurazione nuda", in cui la configurazione NginX non includerà alcuna gestione speciale del percorso, nel caso in cui non li desideri.

Nel frattempo, se si desidera visualizzare la configurazione predefinita NGINX del tuo servizio DotCloud, è possibile semplicemente generarecodicitagcode sul tuo servizio e ispezionare dotcloud ssh.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top