Herokuにdjangoプロジェクトをデプロイしていますが、正常に動作しますが、django管理者で画像をアップロードしようとするとエラーが発生しました:
OSError at /admin/blocks/block/add/
[Errno 30] Read-only file system: '/home/goldwedd'
Herokuにdjangoプロジェクトをデプロイしていますが、正常に動作しますが、django管理者で画像をアップロードしようとするとエラーが発生しました:
OSError at /admin/blocks/block/add/
[Errno 30] Read-only file system: '/home/goldwedd'
これは仕様によるものです。
アプリは、dyno マネージャーによって迅速に配布できるようにスラッグにコンパイルされます。スラッグのファイルシステムは読み取り専用です。つまり、半永久的なストレージのファイルシステムに動的に書き込むことはできません。次のタイプの動作はサポートされていません。
- public ディレクトリにページをキャッシュする
- アップロードされたアセットをローカル ディスクに保存する(例: attachment_fu または paperclip を使用)
- Ferret で全文索引を作成する
- SQLite や GDBM などのファイルシステム データベースへの書き込み
- git-wiki などのアプリの git リポジトリへのアクセス
https://devcenter.heroku.com/articles/read-only-filesystem
ファイルをアップロードする場合は、S3 またはdjango-storages でサポートされているその他のストレージ バックエンドにアップロードする必要があります。
はい、heroku でメディア ファイルをアップロードすることはできません。git を介してのみ物事を展開できます。静的ファイルまたはメディア ファイルを展開する場合は、いくつかの回避策で利用できます。
ライブ ファイル アップロードの場合、Amazon S3 などの外部サービスの使用を検討する必要があります。django がそれを処理するための優れたライブラリがあります (私が覚えている限りでは、heroku dev サイトでも提案されています): django-storages