Статические файлы в OpenShift/Python27/Django в пользовательской сборке

Я активно искал решение моей проблемы; однако из-за отсутствия успеха я решил опубликовать вопрос.

Вкратце: я создал приложение / сборку OpenShift на основе этого репо (в сочетании с картриджем DIY 0.1):

https://github.com/ehazlett/openshift-diy-py27-django

У меня (очевидно, довольно распространенная) проблема в том, что я не могу получить доступ к статическим файлам, работающим; Я много пробовал.

Вот несколько вещей из всего, что я пробовал до сих пор (и я предполагаю, что wsgi для этой сборки - / app / (?)):

  • STATIC_ROOT
    • Я попытался установить это почти во всех возможных местах в моем репо при размещении статической папки с соответствующими статическими файлами, например
      • / статический
      • / Приложение / статический
      • / Приложение / приложение / статический
      • и т.п.
  • STATIC_URL
    • Я оставил этот параметр равным '/static/', так как это всего лишь префикс URL, если я не полностью ошибаюсь
  • STATICFILES_DIRS
    • установите для этого абсолютного пути в файловой системе, не должно быть много, что может быть неправильно с этим.
  • .htaccess пробовал несколько вещей с переписыванием в.htaccess, но слегка в дикой природе, поскольку я не совсем уверен, как работает поток связи между Django и Apache / как Django передает статические запросы в Apache и где в файловой системе / в репозитории Корневой каталог Apache (?)

Я могу дать больше информации, если это необходимо, но пока это важно.

Следует отметить, что это похоже на уникальный случай с этой сборкой, так как у меня нет проблем при создании приложения на основе полностью поддерживаемого картриджа Python26/Django.

Любые предложения будут с благодарностью...!

Приветствия ~

2 ответа

Эта статья "Обслуживание статических ресурсов Django в OpenShift", кажется, предлагает решение.

Статические файлы должны обслуживаться непосредственно Apache, а не Django. Процесс выглядит следующим образом (при условии, что ваша кодовая база /srv/code/project):

  • Поместите ваши статические файлы в /srv/code/project/app/static/ (где app указан в INSTALLED_APPS)
  • Если вам нужны статические файлы, не связанные с приложением (или общие для многих), определите каталог в STATICFILES_DIRS (обычно в вашей кодовой базе, например /srv/code/project/static/) и поместите туда файлы.
  • Определить STATIC_ROOT вне вашей кодовой базы, например /srv/www/example.com/static/, Это будет действовать как кеш всех статических файлов.
  • При каждом развертывании новой версии проекта запускайте python manage.py collectstatic, Это пройдет все статические каталоги и скопирует файлы в STATIC_ROOT,
  • Настройте Apache для обслуживания всех запросов в /static/ от STATIC_ROOT,
Другие вопросы по тегам