Nginx активен, но я не вижу статических файлов

У меня есть проект django.

Settings.py:

STATIC_URL = 'static/'
STATIC_ROOT = 'static'

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

Я сделал collectstatic и все работало нормально. Теперь папка static на моем сервере содержит все файлы.

Nginx: enter image description here

У меня были проблемы с nginx, потому что я изменил имя в sites_available и он начал выдавать ошибки, поэтому я переустановил его и теперь все в порядке, судя по логам:

nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset:>
     Active: active (running) since Wed 2024-05-01 14:47:13 UTC; 11min ago
       Docs: man:nginx(8)
    Process: 6843 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_proce>
    Process: 6844 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (c>
   Main PID: 6845 (nginx)
      Tasks: 2 (limit: 1026)
     Memory: 3.1M
        CPU: 60ms
     CGroup: /system.slice/nginx.service
             ├─6845 "nginx: master process /usr/sbin/nginx -g daemon on; master>
             └─6846 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "">

May 01 14:47:13 23210 systemd[1]: nginx.service: Deactivated successfully.
May 01 14:47:13 23210 systemd[1]: Stopped A high performance web server and a r>
May 01 14:47:13 23210 systemd[1]: Starting A high performance web server and a >
May 01 14:47:13 23210 systemd[1]: Started A high performance web server and a r>
~
~
~
~
~
~
 ESCOC
 server and a reverse proxy server
/nginx.service; enabled; vendor preset: enabled)
2024-05-01 14:47:13 UTC; 11min ago

/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
inx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)





ss /usr/sbin/nginx -g daemon on; master_process on;"
ss" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >

service: Deactivated successfully.
d A high performance web server and a reverse proxy server.
ng A high performance web server and a reverse proxy server...
d A high performance web server and a reverse proxy server.
~
~
~
~
~
~
 ESCOD
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset:>
     Active: active (running) since Wed 2024-05-01 14:47:13 UTC; 11min ago
       Docs: man:nginx(8)
    Process: 6843 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_proce>
    Process: 6844 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (c>
   Main PID: 6845 (nginx)
      Tasks: 2 (limit: 1026)
     Memory: 3.1M
        CPU: 60ms
     CGroup: /system.slice/nginx.service
             ├─6845 "nginx: master process /usr/sbin/nginx -g daemon on; master>
             └─6846 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "">

May 01 14:47:13 23210 systemd[1]: nginx.service: Deactivated successfully.
May 01 14:47:13 23210 systemd[1]: Stopped A high performance web server and a r>
May 01 14:47:13 23210 systemd[1]: Starting A high performance web server and a >
May 01 14:47:13 23210 systemd[1]: Started A high performance web server and a r>
~
~
~
~
~
~
lines 1-18/18 (END)
[2]+  Stopped                 systemctl status nginx
^Z

Однако я не знаю, почему возникают ошибки.

Nginx config:

server {
    listen 80;
    server_name 77.777.77.77;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/ubuntu/portfolio-server;
    }

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

Django не имеет встроенного решения для обслуживания статических файлов, по крайней мере, не в производстве, когда DEBUG должен быть False.

Для этого нам придется использовать стороннее решение.

Установите WhiteNoise

pip install whitenoise

Модификация Settings.py

MIDDLEWARE = [
    'django...............Middleware',
    'django...............Middleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django...............Middleware',
    'django...............Middleware',
]

Затем соберите статические файлы

python manage.py collectstatic
Вернуться на верх