簡體   English   中英

使用AWS S3 for django在heroku上提供靜態文件?

[英]Serve static files on heroku using AWS S3 for django?

我正在使用heroku和AWS S3為靜態文件部署django應用程序,問題是我沒有找到有關如何鏈接Heroku的Postgres數據庫和S3服務的信息。

我已經設置了AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,S3_BUCKET,添加CORS配置,但我的問題是如何將S3存儲與Heroku的postgres數據庫鏈接? 這可能嗎?

這是我的模型在管理員中的樣子,但如果我在這里上傳圖像,5分鍾后就會消失。 圖片上傳為http://ishopss.com/imageUpload.png

當然我可以使用這樣的靜態網址,但問題是我想要顯示不同的圖像,而不是所有的圖像。 在數據庫http://ishopss.com/for.png中提供服務

所以我的代碼需要像這樣,為不同的圖像提供靜態文件http://ishopss.com/course.png

我希望有人可以幫助我,謝謝。

我在這篇文章中找到了解決方案:

http://blog.doismellburning.co.uk/2012/06/25/django-and-static-files/

http://offbytwo.com/2012/01/18/deploying-django-to-heroku.html

https://devcenter.heroku.com/articles/s3

基本上我需要下載boto(pip install boto)並將其放在requirements.txt(pip freeze> requirements.txt)中,並在settings.py中添加:

INSTALLED_APPS = ('storages',)

AWS_ACCESS_KEY_ID = 'xxxxxx'
AWS_SECRET_ACCESS_KEY = 'xxxxxxx'
AWS_STORAGE_BUCKET_NAME = 'bucket_name'


STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'

STATIC_URL = 'http://s3.amazonaws.com/%s' % AWS_STORAGE_BUCKET_NAME + '/'

然后你需要設置'AWS_ACCESS_KEY_ID','AWS_SECRET_ACCESS_KEY','AWS_STORAGE_BUCKET_NAME'

運用

$ heroku config:set AWS_ACCESS_KEY_ID=xxx AWS_SECRET_ACCESS_KEY=yyy
$ heroku config:set S3_BUCKET_NAME=appname-assets

更新html中的src和href:

url http://ishopss.com/url.png

最后,您需要在https://console.aws.amazon.com/中更新權限

請看這里:

對你來說可能是最簡單的方式。 我認為{{course.image}}將從頭開始工作。 如果不是 - 您可以在AWS上創建CDN點,並在您的django設置文件中存儲CDN URL。 之后你的HTML應該是這樣的:

{{ settings.CDN_URL }}/{{ course.image }}

如果你喜歡糖,並且有時候你可以編寫自己的模板標簽,那就像:

{% my_static course,.image %} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM