Найти - Пользователи
Полная версия: И снова подключение админки на продакшене
Начало » Django » И снова подключение админки на продакшене
1
dnstuff
Здравствуйте!
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, но стили админки всё равно не грузятся.
Что еще нужно сделать?
Спасибо!
FishHook
Не знаю насколько это правильно, я делаю симлинк на …django/contrib/admin/static/admin/ с именем admin в каталог static проекта.
DOOMer
dnstuff
Что у вас за дистрибутив Linux?
У меня на девелоперской машине в Gentoo была схожая проблема, которую решил довольно костылно - в /etc/nginx/nginx.conf назначил работу nginx-f от своего локального пользователя. Т.е было

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

Но на продакшене, на Debian\Ubuntu крутится пара готовых сайтов, там такой финт делать не пришлось - все работало “из коробки” после выполнения .manage.py collectstatic
dnstuff
Ось Debian.
В результате всяческих комбинаций оказался вполне рабочим вариант, когда в директорию с сайтовой статикой скопирована директория admin джанговской статики. Причем я пытался всё сделать по честному, настроив STATIC_ROOT и сделав python manage.py collectstatic. Вся статика объединилась в static-root папке. Это не сработало. На кой хрен это всё вообще надо было, я так и не понял.
Может, мне только кажется, что статику отдает nginx, а реально она идет через django? Вот что меня беспокоит.
DOOMer
оказался вполне рабочим вариант, когда в директорию с сайтовой статикой скопирована директория admin джанговской статики.
А collectstatic разве не собрал статику админки (именно в static/admin/)? Руками вске скопировать конечно тоже несложно, но…

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

Спасибо за наводку про логи.
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