Статические файлы обслуживаются только при debug = True и не обслуживаются при False в production для nginx ubuntu 22.04

Я выполнил процедуры установки здесь https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-22-04 и мое приложение Django работает, но всякий раз, когда я включаю debug = False, оно не загружает мои статические файлы.

Ниже приведена моя конфигурация nginx:

server {
    listen 80;
    server_name server_domain_or_IP;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/sammy/myprojectdir;
    }

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

и мой settings.py:

STATIC_URL = 'static/'

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

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

Я старался изо всех сил, много исследовал в Интернете и переходил по многим ссылкам, но все равно безрезультатно.

Я думаю, что это связано с тем, что в вашем проекте url.py есть строка:

if settings.DEBUG:
    urlpatterns += static(....)

Я также рекомендую заменить root на alias:

location /static/ {
        alias /home/sammy/myprojectdir;
    }

и выполните команду statiс collection:

python3 manage.py collectstatic

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

UPDATE: Убедитесь, что nginx ищет статику там, где у вас STATIC_ROOT:

location /static/ {
        alias /home/sammy/myprojectdir/static/;
    }

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
Вернуться на верх