Caminho Base na configuração do paster
Pergunta
Estou tentando implementar algumas Pirâmide código para dotcloud.Infelizmente, alguns caminhos não são mapeados da mesma forma que no local do paster de implantação.Quando estou executando a configuração de desenvolvimento com o servidor local através de paster serve ...
, Eu posso acessar arquivos estáticos configurado em:
config.add_static_view('static', 'appname:static')
no entanto, no dotcloud servidores, quando os scripts são executados através da seguinte 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)
conteúdo estático é procurado no diretório errado.Em vez de /home/dotcloud/current/static/pylons.css
, ele deve procurar em /home/dotcloud/current/appname/static/pylons.css
Existe alguma parte do wsgi de configuração que pode definir o diretório base?O que eu estou ausente?O aplicativo é executado através de nginx
/ uwsgi
.
Eu tentei carregar config:../production.ini
, relative_to=current_dir + '/appname'
mas isso não muda nada.
Solução
No DotCloud, URLs que começam com /static
são tratadas diretamente pelo nginx, não por fenix.O que significa que seu código nunca vai ver essas solicitações:eles vão ser servidos imediatamente a partir do static/
subdiretório do seu aplicativo.
Uma solução possível é a configuração de um link simbólico a partir de static
para appname/static
.
Se você não quer a desordem do seu repositório com um link simbólico, você pode usar um postinstall
script em vez disso:
#!/bin/sh
# This creates the symlink required by DotCloud to serve static content from nginx
ln -s ~/current/appname/static ~/current/static
O link simbólico é elegante, mas a postinstall
scripts dá-lhe a oportunidade de cair em um comentário no arquivo, para explicar a sua finalidade :-)
Versões futuras do DotCloud pode oferecer uma "naked" configuração de alternância, onde o nginx de configuração não incluem qualquer caminho especial de manipulação, apenas no caso de você não quer que eles.
Entretanto, se você quiser ver o nginx configuração padrão do seu DotCloud serviço, você pode apenas dotcloud ssh
para o seu serviço, e inspecionar /etc/nginx/sites-enabled/default
.