我尝试使用django
和mezzanine
设置amazon s3
和cms包django-storages
以使用django-s3-folder-storage
存储空间。一切都运行良好,我可以毫无问题地使用collectstatic
并将我的文件上传到亚马逊,并且图像也可以像css / js一样正确地提供。
但是,如果用户尝试将图片上传到media-library
或作为featured-image
上传博客帖子。我在浏览器中只需HTTP Error
,在控制台中只有POST /admin/media-library/upload_file/ HTTP/1.1" 500 146580
。这是DEBUG=True
设置的,所以我很惊讶没有更多的跟踪/反馈。
我不知道该怎么做才能修复甚至开始调试为什么会这样,有人帮忙吗?
我的相关settings.py是:
AWS_STORAGE_BUCKET_NAME = 'my_bucket'
AWS_SECRET_ACCESS_KEY = 'my_key'
AWS_ACCESS_KEY_ID = 'my_id'
AWS_PRELOAD_METADATA = True
AWS_QUERYSTRING_AUTH = False
AWS_S3_SECURE_URLS = False
AWS_S3_ENCRYPTION = False
from boto.s3.connection import ProtocolIndependentOrdinaryCallingFormat
AWS_S3_CALLING_FORMAT = ProtocolIndependentOrdinaryCallingFormat()
DEFAULT_FILE_STORAGE = 's3_folder_storage.s3.DefaultStorage'
DEFAULT_S3_PATH = "media"
MEDIA_ROOT = ''
MEDIA_URL = ''
STATICFILES_STORAGE = 's3_folder_storage.s3.StaticStorage'
STATIC_S3_PATH = "static"
STATIC_ROOT = "/%s/" % STATIC_S3_PATH
STATIC_URL = '//s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
答案 0 :(得分:0)
我遇到了同样的问题。对我来说问题是在我的设置中我需要更改此目录(及其所有子目录)的权限,以便由我的nginx.conf
使用的用户拥有:
/var/lib/nginx
为了纠正这个问题我做了:
sudo chown -R <myuser>:<myuser> /var/lib/nginx
myuser是nginx.conf
中指定的nginx用户。
在上传到Amazon S3之前,将您上传的图片放在那里的临时文件夹中,并且此临时文件夹没有允许此操作的正确权限。
让我在正确的轨道上解决这个问题的原因是我将调试更改为DEBUG = True
,然后当我在错误日志中收到500错误时,我看到了:
[crit] 26489#0: *374 open() "/var/lib/nginx/tmp/client_body/0000000050" failed (13: Permission denied),
还看看这个: