粘贴配置中的基本路径
我正在尝试将一些 Pyramid 代码部署到 dotcloud。不幸的是,某些路径的映射方式与本地粘贴器部署中的方式不同。当我通过pasterserve...
在本地服务器上运行开发配置时,我可以访问以下配置的静态文件:
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/appname/static/pylons.css
中查找,而不是 /home/dotcloud/current/static/pylons.css
wsgi 配置的一部分可以定义基本目录?我缺少什么?该应用程序通过 nginx
/ uwsgi
运行。
我尝试加载 config:../development.ini
, relative_to=current_dir + '/appname'
但这并没有改变任何东西。
I'm trying to deploy some Pyramid code to dotcloud. Unfortunately some paths are not mapped in the same way as in local paster deployment. When I'm running the development configuration with local server through paster serve ...
, I can access static files configured in:
config.add_static_view('static', 'appname:static')
however on the dotcloud servers, when the scripts run via the following 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)
static content is searched for in a wrong directory. Instead of /home/dotcloud/current/static/pylons.css
, it should look in /home/dotcloud/current/appname/static/pylons.css
Is there some part of wsgi configuration which can define the base directory? What am I missing? The application is run via nginx
/ uwsgi
.
I tried to load config:../production.ini
, relative_to=current_dir + '/appname'
but that didn't change anything.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 DotCloud 上,以
/static
开头的 URL 直接由 nginx 处理,而不是由 uwsgi 处理。这意味着您的代码永远不会看到这些请求:它们将直接从应用程序的static/
子目录提供服务。一种可能的解决方法是设置从
static
到appname/static
的符号链接。如果您不想让这样的符号链接弄乱您的存储库,您可以使用
postinstall
脚本来代替:符号链接很简洁,但是
postinstall
脚本为您提供了机会在文件中添加注释,解释其目的:-)DotCloud 的未来版本可能会提供“裸配置”切换,其中 nginx 配置不会包含任何特殊的路径处理,以防万一您不想要他们。
同时,如果您想查看 DotCloud 服务的 nginx 默认配置,您只需
dotcloud ssh
到您的服务,然后检查/etc/nginx/sites-enabled/default
。On DotCloud, URLs starting with
/static
are handled directly by nginx, not by uwsgi. That means that your code will never see those requests: they will be served straight away from thestatic/
subdirectory of your application.One possible workaround is to setup a symlink from
static
toappname/static
.If you don't want to clutter your repository with such a symlink, you can use a
postinstall
script instead:The symlink is sleek, but the
postinstall
scripts gives you the opportunity to drop in a comment in the file, to explain its purpose :-)Future releases of DotCloud might offer a "naked configuration" toggle, where the nginx configuration won't include any special path handling, just in case you don't want them.
Meanwhile, if you want to see the nginx default configuration of your DotCloud service, you can just
dotcloud ssh
to your service, and inspect/etc/nginx/sites-enabled/default
.