Сервер не распространяет django + gunicorn + nginx static

На моей ubuntu 20.04 я пытаюсь развернуть проект Django 3.2.8, используя nginx и gunicorn. Проблема в том, что сервер не может найти статический файл. Из-за этого страницы отображаются без css и изображений.

Я перепробовал много решений из интернета, но ничего не помогло. Заранее благодарю за уделенное мне время!

сначала запускаем этот скрипт (start_gunicorn.sh)

#!/bin/bash
source /root/myapps/zhanna_first_web/env/bin/activate
exec gunicorn -c /root/myapps/zhanna_first_web/zhanna/gunicorn_config.py lawyer>

gunicorn_config.py:

command = '/root/myapps/zhanna_first_web/env/bin/gunicorn'
pythonpath = '/root/myapps/zhanna_first_web/zhanna'
bind = '185.46.8.164:8001'
workers = 3
user = 'root'
limit_request_fields = 32000
limit_request_field_size = 0
raw_env = 'DJANGO_SETTINGS_MODULE=lawyer.settings'

/etc/nginx/sites-enabled/default

server {
   listen 80;
   server_name 185.46.8.164;

   location /static {
      autoindex on;
      root /myapps/zhanna_first_app/zhanna/static;
   }

    location / {
        proxy_pass http://185.46.8.164:8001;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
        add_header Access-Control-Allow-Origin *;
    }
}

Ubuntu отвечает на запуск скрипта start_gunicorn таким выводом.

[2022-01-09 09:53:31 +0300] [76583] [INFO] Starting gunicorn 20.1.0
[2022-01-09 09:53:31 +0300] [76583] [INFO] Listening at: http://185.46.8.164:8001 (76583)
[2022-01-09 09:53:31 +0300] [76583] [INFO] Using worker: sync
[2022-01-09 09:53:31 +0300] [76585] [INFO] Booting worker with pid: 76585
[2022-01-09 09:53:31 +0300] [76586] [INFO] Booting worker with pid: 76586
[2022-01-09 09:53:31 +0300] [76587] [INFO] Booting worker with pid: 76587

После этого сайт запускается и доступен по адресу 185.46.8.164:8001. Я могу открывать различные страницы сайта, но статические недоступны.

Из журнала ошибок я понял, что сервер обращается к правильной папке для static. То есть он ищет его в той папке, где он находится. Но по какой-то причине он ее там не видит и выдает ERROR 404 NOT FOUND

P.S. Я действительно перепробовал много всего. Например, я изменил ip в конфигах с 127.0.01 на реальный ip моего сервера и обратно. Я изменил в конфигах "location /static" на "location /static/" и обратно. Затем я изменил пути с /path/to на path/to/static и обратно. Изменил псевдоним на root и обратно. И многое другое, что предлагается на форумах в интернете

Я надеюсь, что вы сможете мне помочь, потому что у меня полностью иссякли идеи

используйте расположение /static/ вместо /static

server {
            listen 80;
            server_name 185.46.8.164;

        
            location = /favicon.ico { access_log off; log_not_found off; }
            location /static/ {
                root /myapps/zhanna_first_app/zhanna/static;
            }
            location /media/  {
                root /path-to-media-folder;
            }
    
        location / {
        proxy_pass http://185.46.8.164:8001;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
        add_header Access-Control-Allow-Origin *;
    }
    }

Убедитесь, что запустили collectstatic и перезапустили nginx

Я не заметил ошибку 502 Bad gateway nginx. На мой взгляд, именно она мешала нормальной работе проекта. Сейчас я изменил конфигурации nginx и uwsgi и ошибка 502 исчезла. Выражаю огромную благодарность всем, кто помог мне решить проблему! Спасибо!

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