Статические файлы в 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
,