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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top