質問

DotCloudにピラミッドコードを展開しようとしています。残念ながら、いくつかのパスは、ローカルPaster展開と同じ方法でマッピングされません。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'をロードしようとしましたが、それは何も変わらなかった。

役に立ちましたか?

解決

DotCloudでは、/staticから始まるURLは、UWSGIではなくNGINXによって直接処理されます。これは、コードがこれらの要求を表示することは決してないことを意味します。static/サブディレクトリからすぐに提供されます。

1つの可能な回避策は、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
.

シンボリックリンクは存在していますが、postinstallスクリプトでは、その目的を説明するために、ファイル内のコメントを削除する機会を提供します。 - )

DotCloudの将来のリリースでは、「NIGHX構成」切り替えが、NGINX構成には特別なパス処理が含まれていない場合があります。

一方、DotCloudサービスのNGINXのデフォルト設定を見たい場合は、サービスにdotcloud sshを作成し、/etc/nginx/sites-enabled/defaultを検査することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top