У меня проблема с рабочим сервером Django.
Когда я пытаюсь загрузить изображения, они всегда попадают в папку app/media/
.
Однако я хочу, чтобы они загружались в /mnt/data
.
В панели администратора, когда я загружаю изображение, оно всегда загружается в папку app/media/
.
Я попытался настроить файл конфигурации Nginx и файл settings.py, но, похоже, я потерялся.
Вот моя конфигурация Nginx:
location /static/ {
root /home/somthing/something/;
}
location /media/ {
root /mnt/data/;
}
и Настройки.py:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# Media files
MEDIA_URL = '/media/'
MEDIA_ROOT = (
os.path.join(BASE_DIR, 'media')
)
и в моей модели я создаю изображение так:
pictures = models.ImageField(
upload_to='postings/',
verbose_name=_('Posting_picture'),
blank=True, null=True,
validators=[validate_image],
)
Я предполагаю, что после этой конфигурации загруженное изображение должно быть в mnt/data/media/postings
.
Медиа-папка на mnt/data/
- это chmod 777
, я сделал это, когда потерял надежду писать/читать папку.
В настоящее время вы загружаете на:
MEDIA_ROOT = (
os.path.join(BASE_DIR, 'media')
)
В основном означает:
/path/to/project/media
В вашем случае это должно быть:
MEDIA_ROOT = '/mnt/data'
760 подойдет для nginx. Nginx нужен только доступ для чтения. Так что 760 достаточно
извините еще раз, но теперь у меня другая проблема: файлы загружаются в mnt/data/postings, но читаются из mnt/data/media/postings.
Извини, я не смог тебя достать.
Я, наконец, понял, Debendera был правильным для пути, но конфигурация Nginx была неправильной. Я изменил его на:
location /media/ {
alias /mnt/data/;
}
и тогда это сработало. Если не ошибаюсь, лучше было использовать псевдоним вместо root. Это мой референс: Nginx — статический файл, вызывающий путаницу с корнем и псевдонимом
Спасибо, у вас есть какие-нибудь идеи о правах доступа к папке? Я хочу держаться подальше от разрешения 777.