我正试图在Heroku部署我的项目,但媒体文件(图像)过了一段时间就被删除了,所以有人告诉我需要使用一个名为“Amazon S3”的服务,我的问题是,如何配置我的项目来使用该服务。谁能帮帮我吗?
先看看这个http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
基本上,这里不需要Django来提供任何服务,而是需要确保静态引用指向另一个域(S3域),而不是Heroku域。
您可以按照本文中的步骤操作:
http://blog.doismellburning.co.uk/2012/07/14/using-amazon-s3-to-host-your-django-static-files/
但要做到这一点,有一个小教程可以:
步骤1-安装boto和django存储:
$ pip install boto django-storages
将django存储添加到已安装的应用程序:
INSTALLED_APPS += ('storages',)
步骤2-创建S3存储桶:
转到https://console.aws.amazon.com/s3/home并创建它。
步骤3-获取您的凭据:
转到https://console.aws.amazon.com/iam/home?#security_credential,单击“访问密钥”并创建它。
步骤4-将凭据添加到django设置:
首先,创建一个名为s3utils的文件。项目文件夹中的py,包含以下内容:
from storages.backends.s3boto import S3BotoStorage
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media')
我更喜欢使用所有这些配置作为环境变量,因此我建议您执行以下操作:
$ heroku config:set AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY S3_BUCKET_NAME=YOUR_BUCKET_NAME
然后,将此项放入您的设置中:
AWS_STORAGE_BUCKET_NAME = os.environ['S3_BUCKET_NAME']
MEDIA_ROOT = '/media/'
S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
MEDIA_URL = S3_URL + MEDIA_ROOT
DEFAULT_FILE_STORAGE = 'YOUR_PROJECT.s3utils.MediaRootS3BotoStorage'
STATICFILES_STORAGE = 'YOUR_PROJECT.s3utils.StaticRootS3BotoStorage'
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
第5步-再次运行集合静态
您需要再次收集静态文件,以便将其放入Amazon。
heroku run python manage.py collectstatic
我希望这有帮助!
当我将dockerised django应用程序部署到digital ocean时,我在提供静态文件和媒体文件方面遇到问题。我在这里读过很多类似的问题,但到目前为止,没有一个答案对我有效。 大致按照这个指南,,https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/#nginx,我现在的状态是,我
问题内容: 我在磁盘上有一个现有文件(例如/folder/file.txt),在Django中有一个FileField模型字段。 当我做 它将文件另存为file_1.txt(下次是_2,等等)。 我知道为什么,但是我不想要这种行为-我知道我想要与该字段关联的文件确实在那里等着我,我只想让Django指向它。 问题答案: 如果要永久执行此操作,则需要创建自己的FileStorage类 现在在模型中,
问题内容: 我正在配置一个Django项目,该项目使用服务器文件系统来存储应用程序的静态文件()和用户上传的文件()。 我现在需要将所有内容托管在Amazon S3上,因此我为此创建了一个存储桶。使用django-storages与存储后端,我设法收集静态上传到S3斗: 然后,我遇到一个问题:存储桶中未使用和,因此存储桶根目录同时包含静态文件和用户上载的路径。 因此,我可以设置: 并在模板中使用这
/** 设置超媒体自定义参数 @param parameter 自定义参数 例如:@{@"token": @"18231yy31hh12",@"xxx": @"yyyy"} */ [Ntalker ntalker_setHyperMediaData:@{@"token": @"18231yy31hh12",@"xxx": @"yyyy"}];
在本章中,我们将研究Joomla Media Settings 。 Joomla媒体设置有助于配置全局媒体文件选项,如文件格式,MIME规范,文件上传,文件大小等。 Joomla媒体设置 以下是用于设置Joomla媒体选项的简单步骤 - Step (1) - 进入System → Global Configuration ,如下面的屏幕所示。 单击Joomla Global Configurati
问题内容: 我想爱Django,但是开发环境中的静态文件和媒体文件业务让我发疯。请把我从愚蠢中解救出来。 我在开发机器上。我的项目目录的根目录中有文件夹。 在settings.py我有:和。 在我有: 但是我获取媒体文件的唯一方法是通过引用/media/media/例如 。 我期望(并且想要) 谁能告诉我这里发生了什么,并给我一个设置媒体文件处理的简单方法吗? 非常感谢你。 但这留下了两个问题: