Джанго [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/