【问题标题】:Base path in paster configuration粘贴配置中的基本路径
【发布时间】:2011-08-19 19:16:32
【问题描述】:

我正在尝试将一些 Pyramid 代码部署到 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.inirelative_to=current_dir + '/appname',但这并没有改变任何东西。

【问题讨论】:

    标签: python wsgi pyramid paster dotcloud


    【解决方案1】:

    在 DotCloud 上,以/static 开头的 URL 由 nginx 直接处理,而不是由 uwsgi 处理。这意味着您的代码将永远不会看到这些请求:它们将直接从您的应用程序的 static/ 子目录提供。

    一种可能的解决方法是设置从staticappname/static 的符号链接。

    如果您不想用这样的符号链接弄乱您的存储库,您可以改用 postinstall 脚本:

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

    符号链接很简洁,但 postinstall 脚​​本让您有机会在文件中添加评论,以解释其用途 :-)

    DotCloud 的未来版本可能会提供“裸配置”切换,其中 nginx 配置不会包含任何特殊路径处理,以防万一您不想要它们。

    同时,如果您想查看 DotCloud 服务的 nginx 默认配置,您可以将 dotcloud ssh 发送到您的服务,然后检查 /etc/nginx/sites-enabled/default

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 2021-02-01
      • 2014-03-03
      • 1970-01-01
      相关资源
      最近更新 更多