Django [Errno 13] Permiso denegado: '/ var / www / media / animals / user_uploads'

Estoy desarrollando una API de django que se ejecutará sobre Apache2 a través de WSGI en un servidor que ejecuta Ubuntu.

Los usuarios podrán subir fotos que tomen al servidor mediante una solicitud POST. La API procesa esta solicitud y luego intenta escribir la imagen en/var/www/media/animals/user_uploads/<animal_type>/<picture_name>.jpg. En caso de que no haya directorio/var/www/media/animals/user_uploads/<animal_type>/ lo creará

Al probar durante el desarrollo, todo estaba bien, tanto con Windows como con Scientific Linux. Al probar en el servidor de implementación, recibo este error:

Por lo que entiendo, el servidor Apache2 se está ejecutando con el usuariowww-data. En mi caso, corriendocat /etc/passwd para obtener la lista de usuarios, esto es lo que obtengo porwww-data:

www-data: x: 33: 33: www-data: / var / www: / bin / sh

Supongo que esto significa quewww-data tiene acceso a todo en/var/www/. Yo he tratado:

chmod 777 -R media

Esto funcionó, pero obviamente es una muy mala manera de resolver esto. ¿Hay una mejor manera de resolver esto?

Este es mi 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()

Tengo esto en misettings.py archivo:

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

Mivhost.conf contiene esto:

Alias /media/ /var/www/media/

Respuestas a la pregunta(4)

Su respuesta a la pregunta