Базовый путь в конфигурации пастера - PullRequest
2 голосов
/ 06 мая 2011

Я пытаюсь развернуть некоторый код 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.ini, relative_to=current_dir + '/appname', но это ничего не изменило.

1 Ответ

4 голосов
/ 06 мая 2011

В DotCloud URL-адреса, начинающиеся с /static, обрабатываются непосредственно nginx, а не uwsgi. Это означает, что ваш код никогда не увидит эти запросы: они будут обслуживаться сразу из подкаталога static/ вашего приложения.

Одним из возможных способов решения этой проблемы является установка символической ссылки от 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 может быть предложен переключатель «голой конфигурации», в котором конфигурация nginx не будет включать никакой специальной обработки пути, на случай, если вы не хотите их.

Между тем, если вы хотите просмотреть конфигурацию nginx по умолчанию для вашей службы DotCloud, вы можете просто dotcloud ssh обратиться к вашей службе и проверить /etc/nginx/sites-enabled/default.

...