DjangoでファイルストレージにAmazon S3を使う
Django + Herokuでファイルをアップしてそれを使うみたいな仕組みは
Herokuの仕様でNGになってます。
なので、アップされたファイルはAmazon S3に置く、というのがよさそうです。
リクエストや容量がそれなりにならなければ、基本無料ですし、
必要になったら課金していけば本番環境でもそのまま使えるし。
django-strageとbotoというライブラリで簡単に実現できます。 ここの記事がとっても参考になりました。 Utilizing S3 for a Heroku Django app
導入手順
django-strage をインストール
Djangoから色んなストレージサービスを使えるようにするライブラリです。
pip install django-storages
boto をインストール
django-strageでAmazon Web Servicesを使いやすくするライブラリです。
こちらもインストール。
pip install boto
settings.py の INSTALLED_APPS に 'storages' を追加
settings.pyに以下を追加
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
django-admin.pyがS3 bucketにファイルを追加できるようにします。
setting.py にAWSのパラメータを追加
AWS_ACCESS_KEY_ID = 'XXXXXXXXXXXXXXXXXXX' AWS_SECRET_ACCESS_KEY = 'xxXXXxxXxxXxXXXxxXxXxxXXXXxxXxX' AWS_STORAGE_BUCKET_NAME = 'bucket name'
setting.pyのSTATIC_URLを変更
STATIC_URL = 'https://s3.amazonaws.com/bucket-name/'
Django admin appを使っている場合はADMIN_MEDIA_PREFIXも更新
(Django 1.3 以前のみ)
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
.slugignoreファイルを作成
以下の内容を含む.slugignoreという名前のファイルを作成して保存。(.ignoreみたいなもんです)
static
以上です!