【问题标题】:Amazon S3 for django in production生产环境中用于 django 的 Amazon S3
【发布时间】:2013-04-01 16:38:11
【问题描述】:

我正在使用 django-s3-folder-storage 来存储我的静态和媒体文件。我遵循了文档中提到的所有说明,但仍然无法提供我的静态文件。我能够为我的用户上传的文件提供服务,但即使在运行 collectstatic 命令后静态文件也不会显示在网站上,该命令将文件复制到存储桶中。我没有在我的域中创建任何 CNAME 记录(不确定这是否有任何区别,因为我能够看到用户上传的图像)。

我的设置文件:

DEFAULT_FILE_STORAGE = 's3_folder_storage.s3.DefaultStorage'
DEFAULT_S3_PATH = "media"
STATICFILES_STORAGE = 's3_folder_storage.s3.StaticStorage'
STATIC_S3_PATH = "static"
AWS_ACCESS_KEY_ID = # omitted
AWS_SECRET_ACCESS_KEY = # omitted
AWS_STORAGE_BUCKET_NAME = # omitted

MEDIA_ROOT = '/%s/' % DEFAULT_S3_PATH
MEDIA_URL = '//s3.amazonaws.com/%s/media/' % AWS_STORAGE_BUCKET_NAME
STATIC_ROOT = "/%s/" % STATIC_S3_PATH
STATIC_URL = '//s3.amazonaws.com/%s/static/' % AWS_STORAGE_BUCKET_NAME
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

STATICFILES_DIRS = (
       root('static'),
)

还有我的项目目录:

website_name
    static
    website_name
      settings.py

【问题讨论】:

  • 我正在使用 s3fox,由于某种原因,我无法在 collectstatic 之后检查文件是否进入存储桶。我在这里发布了另一个关于此的问题。 (stackoverflow.com/questions/15747933/…)。我也无法使用他们的直接 URL 访问它们?我没有设置任何指向 s3.amazon.com 的 CNAME 记录点?我需要设置才能访问静态文件吗?
  • 尝试通过 Amazon 的 Web 界面登录 S3 并以这种方式检查存储桶的内容。另外,您能否将您的 Django 版本、MEDIA_URL 和 STATIC_URL 设置添加到问题中? (如果您尚未将 _URL 设置更改为新域名,那么不,您的 CNAME 还不是问题。)
  • 嗨,我已经用我的设置编辑了我的问题。当我使用亚马逊用户界面登录时,我还可以看到存储桶,我也可以看到我所有的静态文件。
  • 嗨,我在我的设置中指定了存储桶名称,它也存在于亚马逊 s3 上。我能够为用户上传的文件提供服务。这只是我遇到问题的静态文件。当我在浏览器中检查元素时,静态图像的路径就像我在 edit2 中提到的那样。您能否让我知道是否需要在 s3.amazonaws.com 等开始之前添加存储桶名称,如我的编辑 2 中那样?
  • 您好,更改静态网址后,它现在可以正常工作了。我也用编辑更新了我的问题。

标签: django django-storage


【解决方案1】:

我已将 STATIC_URL 更改为如下所示,现在工作正常。

STATIC_URL = '//bucketname.s3.amazonaws.com/static/'

但是 MEDIA_URL 就像文档本身中提到的那样,MEDIA_URL 工作正常。只有STATIC_URL需要修改。

看起来文档有误。

【讨论】:

  • 我认为这并不是文档完全错误,而是它没有说明您的配置的某些方面。
【解决方案2】:

通常 S3 可以使用子域或子文件夹路径格式。此特定存储使用的django-storages 的默认值是子域。所以有趣的是,更改为子文件夹解决了这个问题。 OP 提到在 different question 中使用欧洲区域,我怀疑这里的根本问题与正在使用的端点或 S3/S3BotoStorage 影响区域的配置设置之一有关(例如 AWS_CALLING_FORMAT)。

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2019-10-14
    • 2021-04-10
    • 2012-05-30
    相关资源
    最近更新 更多