Джанго [Errno 13] В доступе отказано: '/ var / www / media / animals / user_uploads'

Я разрабатываю django API, который будет работать поверх Apache2 через WSGI на сервере под управлением Ubuntu.

Пользователи смогут загружать фотографии, сделанные на сервер, с помощью запроса POST. API обрабатывает этот запрос, а затем пытается записать изображение в/var/www/media/animals/user_uploads/<animal_type>/<picture_name>.jpg, В случае, если нет каталога/var/www/media/animals/user_uploads/<animal_type>/ это создаст это.

При тестировании во время разработки все было хорошо, как с использованием Windows, так и Scientific Linux. При тестировании на сервере развертывания я получаю эту ошибку:

Насколько я понимаю, сервер Apache2 работает с использованием пользователяwww-data, В моем случае работаетcat /etc/passwd чтобы получить список пользователей, это то, что я получаю заwww-data:

WWW-данные: х: 33: 33: WWW-данные: / Var / WWW: / бен / ш

Я предполагаю, что это означает, чтоwww-data имеет доступ ко всему в/var/www/, Я пытался:

chmod 777 -R media

Это сработало, но это, очевидно, очень плохой способ решить эту проблему. Есть ли лучший способ решить эту проблему?

Это мой wsgi.py:

import os, sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "serengeti.settings")
sys.path.append('/serengeti/django/serengeti')
sys.path.append('/serengeti/django')

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

У меня есть это в моемsettings.py файл:

MEDIA_ROOT = '/var/www/media/'
MEDIA_URL = os.path.join(BASE_DIR,'/media/')

мойvhost.conf содержит это:

Alias /media/ /var/www/media/

Ответы на вопрос(4)

Ваш ответ на вопрос