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/