Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » И снова подключение админки на продакшене [RSS Feed]

#1 Янв. 20, 2013 18:32:07

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

И снова подключение админки на продакшене

Здравствуйте!
Debian+nginx+uwsgi+django1.4
Проект настроен и работает. Но понадобилось подключить админку. Админка подключилась, но без css.
Исходные настройки:
settings.py

MEDIA_ROOT = '/home/nule/proj/mapsbank/files/media' #В этой папке ничего нет
MEDIA_URL = '/media/'
STATIC_ROOT = '/home/nule/proj/mapsbank/files/static_root' #В этой папке ничего нет
STATIC_URL = '/static/'
STATICFILES_DIRS = (
"/home/nule/proj/mapsbank/files/static", #Статика сайта здесь
)
nginx.conf
server {
listen 80;
listen 443;

server_name xxx;

access_log /home/nule/proj/mapsbank/logs/nginx_access.log;
error_log /home/nule/proj/mapsbank/logs/nginx_error.log;

root /home/nule/proj/mapsbank/mapsbank ;

location /
{
uwsgi_pass unix:///var/tmp/mapsbank_uwsgi.sock;
include uwsgi_params;

uwsgi_buffers 8 128k;
}
location /static/ {
alias /home/nule/proj/mapsbank/files/static/;
expires 30d;
}
}
Что пробовал:
Добавить к STATICFILES_DIRS путь к статике админки
/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/
и выполнить python manage.py collectstatic
Вся статика объединилась в STATIC_ROOT, но стили админки всё равно не грузятся.
Что еще нужно сделать?
Спасибо!

Отредактировано dnstuff (Янв. 21, 2013 09:00:19)

Офлайн

#2 Янв. 21, 2013 05:14:31

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

И снова подключение админки на продакшене

Не знаю насколько это правильно, я делаю симлинк на …django/contrib/admin/static/admin/ с именем admin в каталог static проекта.



Офлайн

#3 Янв. 21, 2013 19:34:30

DOOMer
От: Russia.MO.Balashikha
Зарегистрирован: 2013-01-09
Сообщения: 37
Репутация: +  9  -
Профиль   Отправить e-mail  

И снова подключение админки на продакшене

dnstuff
Что у вас за дистрибутив Linux?
У меня на девелоперской машине в Gentoo была схожая проблема, которую решил довольно костылно - в /etc/nginx/nginx.conf назначил работу nginx-f от своего локального пользователя. Т.е было

user nginx nginx;
а стало
user doomer nginx;

Но на продакшене, на Debian\Ubuntu крутится пара готовых сайтов, там такой финт делать не пришлось - все работало “из коробки” после выполнения .manage.py collectstatic

Офлайн

#4 Янв. 21, 2013 19:46:40

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

И снова подключение админки на продакшене

Ось Debian.
В результате всяческих комбинаций оказался вполне рабочим вариант, когда в директорию с сайтовой статикой скопирована директория admin джанговской статики. Причем я пытался всё сделать по честному, настроив STATIC_ROOT и сделав python manage.py collectstatic. Вся статика объединилась в static-root папке. Это не сработало. На кой хрен это всё вообще надо было, я так и не понял.
Может, мне только кажется, что статику отдает nginx, а реально она идет через django? Вот что меня беспокоит.

Офлайн

#5 Янв. 21, 2013 20:21:25

DOOMer
От: Russia.MO.Balashikha
Зарегистрирован: 2013-01-09
Сообщения: 37
Репутация: +  9  -
Профиль   Отправить e-mail  

И снова подключение админки на продакшене

оказался вполне рабочим вариант, когда в директорию с сайтовой статикой скопирована директория admin джанговской статики.
А collectstatic разве не собрал статику админки (именно в static/admin/)? Руками вске скопировать конечно тоже несложно, но…

Может, мне только кажется, что статику отдает nginx, а реально она идет через django? Вот что меня беспокоит.
Ну так в логах nginx-а оно должно быть, т.к. для location /static/ у вас в конфиге не выыставлено access_log off;
И при этом в логе uWSGI записей о статике быть не должно.

Офлайн

#6 Янв. 21, 2013 20:32:47

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

И снова подключение админки на продакшене

collectstatic собрал статику из папки static и из дефолтной папки со статикой админки в папку static_root. вот только этот вариант не заработал. админка так и осталась “голой”. пробовал в nginx.conf

location /static/ {
alias /home/nule/proj/mapsbank/files/static/;
expires 30d;
}
менять на
location /static/ {
alias /home/nule/proj/mapsbank/files/static_root/;
expires 30d;
}
- никакого толку.
Т.е. фактически получилось, что вся эта канитель с определением static_root и collectstatic не работает, а работает тупое копирование джанговской папки admin в static.

Спасибо за наводку про логи.

Отредактировано dnstuff (Янв. 21, 2013 20:35:45)

Офлайн

  • Начало
  • » Django
  • » И снова подключение админки на продакшене[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version