2

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'何も変わりませんでした。

4

1 に答える 1

4

DotCloudでは、で始まるURL/staticは、uwsgiではなくnginxによって直接処理されます。つまり、コードでこれらのリクエストが表示されることはありません。これらのリクエストstatic/は、アプリケーションのサブディレクトリからすぐに提供されます。

static考えられる回避策の1つは、からへのシンボリックリンクを設定すること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

シンボリックリンクは洗練されていpostinstallますが、スクリプトを使用すると、ファイルにコメントを挿入して、その目的を説明することができます:-)

DotCloudの将来のリリースでは、「ネイキッド構成」トグルが提供される可能性があります。この場合、nginx構成には、必要がない場合に備えて、特別なパス処理が含まれません。

一方、DotCloudサービスのnginxのデフォルト構成を確認したい場合は、サービスにアクセスしdotcloud sshて検査することができます/etc/nginx/sites-enabled/default

于 2011-05-06T06:11:14.593 に答える