Найти - Пользователи
Полная версия: Выдача статики на продакшн сервере!
Начало » Django » Выдача статики на продакшн сервере!
1
MikaMika
Привет.
У меня очень нубский вопрос, на который я к сожалению ответа не нашёл.
Зачем при деплое проекта на сервер делать:
python manage.py collectstatic
и собирать статику в определённую папку.
У меня сейчас на dev - сервере в проекте есть общая статика, что то типа:
-ProjectFolder
—-Project
——–static
——–img
——–css
———js
И в некоторых apps используется своя статика.
Разве нельзя всё это просто перенести на сервер?
Статика ведь остаётся в нужных местах, финдеры статики включены!
В чём тут подвох?
FishHook
На боевом сервере у Вас будет работать Апач, Нжинкс или еще какой-либо веб-сервер, который и будет (и должен) раздавать статику. Финдеры статики там работать не будут.
MikaMika
FishHook
На боевом сервере у Вас будет работать Апач, Нжинкс или еще какой-либо веб-сервер, который и будет (и должен) раздавать статику. Финдеры статики там работать не будут.
Спасибо!
А вот например, файлы шаблонов расширяющие основной, он ищет в моих app проекта на продакшене.
И я не делаю что то типа:
python manage.py collecttemplate
Получается не работают только финдеры статики, а вот:
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)
работает всегда.
Я правильно понимаю?
newca9h
Здравствуйте! Для статики вам необходимо настроить htaccess на сервере. К примеру, вот статья на сей счет. Поиском шаблонов занимается сама Django.
MikaMika
FishHook
На боевом сервере у Вас будет работать Апач, Нжинкс или еще какой-либо веб-сервер, который и будет (и должен) раздавать статику. Финдеры статики там работать не будут.
Получается можно заставить работать и отдавать статику Django и на продакшене:
settings.py
DEBUG = False
TEMPLATE_DEBUG = DEBUG
urls.py
# Кажется мне, что на продакшене это будет слишком медленно?!
# Или нет?
if not settings.DEBUG:
    urlpatterns += patterns("django.views",
                            url(r"%s(?P<path>.*)$" % settings.STATIC_URL[1:],
                                "static.serve",
                                {"document_root": settings.STATIC_ROOT,
                                 'show_indexes': True, },
                                name='static_image'),
                            url(r"%s(?P<path>.*)$" % settings.MEDIA_URL[1:],
                                "static.serve",
                                {"document_root": settings.MEDIA_ROOT,
                                 'show_indexes': True, },
                                name='dynamic_image'),)
 
И в принципе не важно какой сервер будет работать.
Ведь можно сделать так?
barabansheg
Сервер джанги расчитан только на разработку, более-менее среднюю нагрузку, мне кажется, он не выдержит. Может еще какие нюансы есть. Самому интересно :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB