Статика не загружается при развертывании проекта 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 как есть.