#django #caching #django-settings
#django #кэширование #django-настройки
Вопрос:
Я продолжаю получать эту проблему с моего веб-сайта django, каждый раз, когда мне приходится переходить по пути, чтобы удалить root-доступ для всех файлов и предоставить доступ текущему пользователю с помощью chown user_name:user_group *
, и это работает. Но после того, как веб-сайт генерирует несколько новых кэшированных файлов, проблема возвращается.
Internal Server Error: /
PermissionError at /
[Errno 13] Permission denied:'/var/tmp/project_cache/a92ccb8f0f5dc3d17dbaae74ac7.djcache'
Я использую кэш django на основе файлов. Вот мои настройки
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/project_cache',
'TIMEOUT': 60 * 15,
'OPTIONS': {
'MAX_ENTRIES': 1000
}
}
}
Нужно ли мне никогда не использовать пользовательский кэш с файлами?
Комментарии:
1. Вам необходимо сменить владельца на пользователя процесса вашего процесса django. Не текущий пользователь. Вы используете uwsgi для запуска django или что-то еще?
2. Да, я использую wsgi. Я меняю владельца каждый раз, когда получаю ошибку
3. Если вы установили параметр
uid
иgid
в своем файле конфигурации uwsgi, вам необходимо изменить право собственности на эти значения.uid
= идентификатор пользователя иgid
= идентификатор группы.
Ответ №1:
/tmp/
и /var/tmp/
доступны для записи всеми пользователями.
Я прошу Django создать папку для каждого отдельного пользователя, чтобы меня не беспокоили [Errno 13] Permission denied
.
import os
from pwd import getpwuid
__USERNAME = getpwuid(os.getuid()).pw_name
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': f'/tmp/{__USERNAME}-django/',
},
}
Например, /tmp/ubuntu-django/
и /tmp/www-data-django/
будут созданы соответственно.