Сервер Nginx не загружает статические файлы css

Я пытаюсь развернуть свой django сайт на сервере ubuntu nginx, следуя этому руководству (https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu).

Развертывание работает, но css не работает. Я решил, что это что-то с collectstatic, но не уверен. Забавно, что css работает правильно для порта 0.0.0.0:8000.

Это из файла settings.py

STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

Я заметил в учебнике, что у них нет STATICFILES_DIRS... и... STATIC_URL и STATIC_ROOT одинаковы 'static'. Может ли это быть проблемой?

также, попробовал отредактировать путь к статике с помощью sudo nano /etc/nginx/sites-available/django_project

server {
    listen 80;
    server_name xxx.xx.xx.xxx; #my ip, just hide it for purpose of question

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
        alias /home/muser/django_project/static/;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

Есть идеи, что я сделал не так? Заранее спасибо!

Вы используете неправильные настройки. Насколько я знаю, статические корни используются только в режиме отладки. Если режим отладки не включен, то должен использоваться статический корень. А статический корень, который вы установили, отличается от статического корня nginx.

и не забудьте python manage.py collectstatic.

STATIC_ROOT = os.path.join(BASE_DIR, 'static'),

STATICFILES_DIRS = []

Если вы умеете читать по-корейски, эта ссылка может оказаться полезной.

https://django.seolpyo.com/entry/31/

https://django.seolpyo.com/entry/29/

я увидел проблему в конфигурации nginx в блоке статического расположения, где вы указали путь к статической папке

location /static/ {
        alias /home/muser/django_project/static/;
}

в местоположении вы указываете путь к папке static, который нужно изменить на staticfiles

location /static/ {
        alias /home/muser/django_project/staticfiles/;
}

потому что вы указали имя корневой папки static_root - staticfiles

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

и не забудьте выполнить эту команду, чтобы создать папку staticfiles.

python manage.py collectstatic

Надеюсь, это решит вашу проблему.

Вернуться на верх