Django - CSS-файл не загружается на производственном сервере (отладка: False)
Используем: nginx, gunicorn, linode для сервера
Debug=False
Когда я сохраняю debug=False в production, файл css не загружается. Я также создал страницу 404.html. Предположим, кто-то посетит mydomain.com/abcd, тогда он/она получит страницу 404, которую я создал. Это хорошо. Проблема в том, что файл css не загружается.
Debug True
Когда я сохраняю debug=True в production, css файл загружается. Все идет правильно. Но когда кто-то посещает mydomain.com/abcd, он/она получает страницу ошибки django defaualt. Если я сохраняю debug=True в production, все идет правильно, но я слышал, что сохранение debug=True в production не рекомендуется и может вызвать проблемы безопасности на сайтах
В настоящее время в моем settings.py и nginx cofig есть следующее :
settings.py :
DEBUG =True
ALLOWED_HOSTS = ['ip','mydomain.com','www.mydomain.com']
Файл конфигурации Nginx :
server {
server_name mydomain.com www.mydomain.com;
location = /favicon.ico { access_log off; log_not_found off; }
location projectdir/static/ {
autoindex on ;
root /home/user/projectdir;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
Пожалуйста, помогите мне решить проблему, так как я борюсь с ней уже 1 неделю. В настоящее время сайт работает и css загружается при сохранении debug=True. Но я не хочу, чтобы в дальнейшем возникли проблемы с безопасностью.
В файле settings.py:
Вы можете просто добавить следующий код:
DEBUG = bool(int(os.environ.get('DEBUG', 0))) #Note: 0 means false and 1 means true
Попробуйте этот способ и проверьте, решит ли он вашу ошибку
config требуется в вашем settings.py
...
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = "/static/"
убедитесь, что вы выполнили следующее, чтобы django нашел все ваши статические файлы и поместил их в одно место
$python manage.py collectstatic
Статическая конфигурация nginx должна выглядеть более похоже на
...
location /static/ {
autoindex on;
alias /home/user/projectdir/static/;
}