我正在尝试向dotcloud部署一些金字塔代码。不幸的是,有些路径的映射方式与本地粘贴部署中的不同。当我通过paster serve ...
使用本地服务器运行开发配置时,我可以访问在以下位置配置的静态文件:
config.add_static_view('static', 'appname:static')
但是在dotcloud服务器上,当脚本通过以下
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)
在错误的目录中搜索静态内容。它应该查看
/home/dotcloud/current/static/pylons.css
而不是/home/dotcloud/current/appname/static/pylons.css
wsgi配置中是否有可以定义基本目录的部分?我错过了什么?应用程序通过
nginx
/uwsgi
运行。我试着加载
config:../production.ini
,relative_to=current_dir + '/appname'
,但没有改变什么。 最佳答案
在DotCloud上,以/static
开头的url直接由nginx处理,而不是由uwsgi处理。这意味着您的代码将永远看不到这些请求:它们将直接从应用程序的static/
子目录中服务。
一种可能的解决方法是设置一个从static
到appname/static
的符号链接。
如果您不想用这样的符号链接扰乱存储库,可以使用postinstall
脚本:
#!/bin/sh
# This creates the symlink required by DotCloud to serve static content from nginx
ln -s ~/current/appname/static ~/current/static
symlink很漂亮,但是
postinstall
脚本让您有机会在文件中插入注释,以解释其用途:-)未来的DotCloud版本可能会提供一个“裸配置”切换,nginx配置不会包含任何特殊的路径处理,以防您不需要它们。
同时,如果您想查看您的DotCloud服务的nginx默认配置,您只需
dotcloud ssh
到您的服务,并检查/etc/nginx/sites-enabled/default
。