Paster Configurationのベースパス
質問
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.ini
、relative_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
を検査することができます。