Статика не загружается при развертывании проекта django

Я пытаюсь деплоить свой django сайт, и я сделал это на свой ip-адрес, но когда я загружаю страницу онлайн, она не загружает статические файлы. Я пробовал менять различные настройки на сервере и в файлах django, но у меня нет идей. Буду благодарен за пару свежих глаз.

Обратите внимание, что я следовал этому руководству (https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu) и все шло хорошо, как объясняется в руководстве, кроме загрузки статических файлов. Когда я тестировал порт :8000, статические файлы были загружены.

для сайтов-доступных я сделал так:

sudo nano /etc/nginx/sites-available/django-site

Вывод:

server {
    listen 80;
    server_name xx.xx.xxx.xx; #my ip address

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

    location /static/ {
        alias /home/muser/django-site/staticfiles/;
    }

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

это settings.py

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

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

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

Возможно, все правильно, но может быть, что урлы настроены неправильно. Поэтому, пожалуйста, посмотрите urls.py

urlpatterns = i18n_patterns(
    path(_('admin/'), admin.site.urls),
    path('rosetta/', include('rosetta.urls')),
    path('', include('my_app.urls', namespace='my_app')),
)
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)

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

вы используете static в настройках, но добавляете staticfiles в nginx conf.

server {
    ...
    location /static/ {
        # alias /home/muser/django-site/staticfiles/;
        alias /home/muser/django-site/static/;
    }
    ...
}

Мое предложение - изменить имя папки, в которой ВСЕ СТАТИЧЕСКИЕ ФАЙЛЫ БУДУТ СОБИРАТЬСЯ с помощью команды collectstatic на static, а базовую папку static, которую используют все приложения, на staticfiles или любое другое имя, которое вы предпочитаете, например, такое:

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

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

и тогда это должно сработать и все ваши статические файлы будут обслуживаться, конечно же, оставьте все конфигурации nginx и gunicorn как есть.

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