CSS не работает после применения collectstatic в Django
Я только что развернул свой проект django на сервере nginx. Я подключился к домену и все, сайт работает. Однако проблема возникла, когда я использовал python3 manage.py collectstatic. Все по-прежнему работает, но css не загружается, и сайт выглядит не так, как должен быть.
Вот код и варианты, которые я пробовал. части из settings.py
BASE_DIR = Path(__file__).resolve().parent.parent
ALLOWED_HOSTS = ['my-wow-site.com', 'www.my-wow-site.com', 'xx.xx.xxx.xx']
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = 'static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
urls.py
urlpatterns = i18n_patterns(
path(_('admin/'), admin.site.urls),
path('rosetta/', include('rosetta.urls')),
path('', include('main_app.urls', namespace='main_app')),
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
path('ckeditor/', include('ckeditor_uploader.urls')),
)
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
У меня все загружено/развернуто в корневой папке... и я установил это с помощью команды
sudo nano /etc/nginx/sites-available/default
Контент - это...
server {
listen 80;
server_name my-wow-site.com www.my-wow-site.com;
return 301 https://$host$request_uri;
root /root/wow_site/
location /static/ {
alias /root/wow_site/staticfiles/;
}
location /media/ {
alias /root/wow_site/media/;
}
}
server {
listen 443 ssl;
server_name my-wow-site.com www.my-wow-site.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:8000; # Adjust as necessary for your application
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Обычно источники из Интернета подсказывают мне, как установить это (ниже), что я и сделал.
location /static/ {
alias /root/wow_site/staticfiles/;
}
Не знаю, что еще можно сделать или в чем я ошибся. Любая помощь будет более чем приветствоваться. Заранее спасибо!
вы используете соединение https, но разрешаете статическое соединение только http.
Итак, я думаю, проблема в том...
нужно изменить конфигурацию и перезапустить nginx.
server {
listen 80;
server_name my-wow-site.com www.my-wow-site.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name my-wow-site.com www.my-wow-site.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /static/ {
alias /root/wow_site/staticfiles/;
}
location /media/ {
alias /root/wow_site/media/;
}
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}