Почему может подгружаться не вся статика?

У меня django проект стоит на vps, пару дней назад все отлично работало, я перезапустил gunicorn, чтобы у меня обновились формы. Все было хорошо, но посмотрев через день, у меня стала подгружаться не вся статика введите сюда описание изображения

Все файлы лежат в директории, collectstatic делал. При запуске gunicorn`а не выводило что он не находит статику. введите сюда описание изображения В чем может быть причина этого? Статика у меня подгружается через django, а не через nginx.


Ответы (1 шт):

Автор решения: Kers

Причина в DEBUG = False с отключенной отладкой Django не обрабатывает статические файлы для этого можно использовать например nginx.
Примерная настройка под linux:

Установка

apt install python3
apt install python3-pip
apt install nginx
apt install nano
pip3 install django
pip3 install gunicorn

Создаем наш проект

django-admin.py startproject myproject

не забываем про collectstatic перед выкладкой, чтобы nginx мог ее корректно подгружать.

python3 manage.py collectstatic

Проект лучше создавать в виртуальном окружении.

Проверяем gunicorn

Из папки проекта там где лежит manage.py запускаем gunicorn указав Ваш IP

gunicorn myproject.wsgi:application --bind 111.111.111.111:8000

При этом сайт будет отображаться без статических файлов это нормально!

Иногда gunicorn может оставаться в памяти

killall gunicorn

Создадим конфиг файл для gunicorn

cd /opt/my_site/myproject/myproject` # каталог с settings.py
touch gunicorn.conf.py

Открываем

nano gunicorn.conf.py

Пишем

bind = '127.0.0.1:8000'
workers = 3
user = "nobody"

Настроим nginx

Перейдем в /etc/nginx/sites-available/

cd /etc/nginx/sites-available/

и откроем default

nano default

Удаляем оттуда все и пишем

server {
    listen 80;
    server_name 111.111.111.111; # ip или доменное имя
    access_log  /var/log/nginx/site.log;

    location /static/ {
        root /opt/my_site/myproject/;  # где manage.py
        expires 30d;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }

Сохраняем, выходим, перезапускам nginx

service nginx restart

Если все правильно переходим в браузере по адресу сайта и радуемся итогу.

Автозапуск - systemd

Создадим и отредактируем файл настроек systemd создадим конфиг и отредактируем его

cd /etc/systemd/system/
touch myproject.service
nano myproject.conf

Содержимое файла:

[Unit]
Description=My_Project
After=nginx.service

[Service]
Type=forking
ExecStart=/opt/my_site/env/bin/gunicorn myproject.wsgi:application -c /opt/my_site/myproject/myproject/gunicorn.conf.py
Restart=always

[Install]
WantedBy=multi-user.target

Проверяем статус и подключаем его и запускаем:

systemctl status myproject
systemctl enable myproject
systemctl start myproject

P.S. Обратите внимание что в nginx у меня папка статики = static (location /static/) У вас как понимаю будет папка assets. И настроена работа по http

→ Ссылка