質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

解決済

1回答

1619閲覧

wagtail + s3 + Heroku でウェブアプリ開発をすると画像アップロードでinternal error 500が出る。

Kazuhiro-ch

総合スコア85

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

0クリップ

投稿2021/08/19 07:30

編集2021/08/19 11:01

こちらの質問は以下の質問の延長部分にあたります。
元の質問
またStackOverflowでもマルチポストしています。(21/08/19)
マルチポスト先

###症状
画像をアップロードするとInternal server error 500が表示され、読み込まれなくなった。
また、ログにもエラーらしきものは見られない。

###開発環境

Django==3.2.6
gunicorn==20.1.0
psycopg2==2.9.1
wagtail==2.14
DB == postgres
server == Heroku stack-18

###コード

Python

1#base.py (開発・本番環境共通の設定部分にあたります。) 2 3*以上、省略* 4 5AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') 6AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY') 7AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME') 8AWS_S3_CUSTOM_DOMAIN = f'{ AWS_STORAGE_BUCKET_NAME }.s3.amazonaws.com' 9AWS_URL = os.environ.get('AWS_URL') 10 11STATICFILES_LOCATIONS = 'static' 12STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') 13 14STATIC_URL = 'https://{ AWS_S3_CUSTOM_DOMAIN }/static/' 15STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 16STATICFILES_DIR = os.path.join(BASE_DIR, 'static'), '/Lib/site-packages/wagtail/admin/static/wagtailadmin' 17 18MEDIA_URL = 'https://{ AWS_S3_CUSTOM_DOMAIN }/images/' 19DEFAULT_FILE_STORAGE = 'storages.backends.MediaStorage' 20DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage' 21AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'} 22AWS_LOCATION = 'static' 23AWS_DEFAULT_ACL = None 24 25STATICFILES_FINDERS = [ 26 'django.contrib.staticfiles.finders.FileSystemFinder', 27 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 28] 29 30django_heroku.settings(locals())

python

1#backends.py 2 3from storages.backends.s3boto3 import S3Boto3Storage 4from django.conf import settings 5 6class StaticStorage(S3Boto3Storage): 7 location = settings.STATICFILES_LOCATIONS 8 9class MediaStorage(S3Boto3Storage): 10 location = 'images' 11 file_overwrite = False

以上二点が、重要と思われるコードです。
"images"となっている部分はもともと"media"としていたのですが、いくらそれでデプロイしてもmediaファイルなるものは生成されず、すでにあるimagesを指定しました。

###herokuのログ

2021-08-19T07:26:13.512552+00:00 heroku[router]: at=info method=GET path="/admin/images/" host=DOMAIN request_id=db429860-ee9c-46cb-8c1d-a0276e6a871c fwd="134.180.192.60" dyno=web.1 connect=0ms service=218ms status=200 bytes=19658 protocol=https 2021-08-19T07:26:16.873790+00:00 app[web.1]: 10.13.167.33 - - [19/Aug/2021:07:26:16 +0000] "GET /admin/images/multiple/add/ HTTP/1.1" 200 20418 "https://DOMAIN/admin/images/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73" 2021-08-19T07:26:16.875044+00:00 heroku[router]: at=info method=GET path="/admin/images/multiple/add/" host=DOMAIN request_id=d294a92c-ba2a-4419-a623-5bc726e68a33 fwd="134.180.192.60" dyno=web.1 connect=1ms service=114ms status=200 bytes=20971 protocol=https 2021-08-19T07:26:24.390868+00:00 app[web.1]: 10.13.167.33 - - [19/Aug/2021:07:26:24 +0000] "POST /admin/images/multiple/add/ HTTP/1.1" 500 363 "https://DOMAIN/admin/images/multiple/add/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.73" 2021-08-19T07:26:24.391146+00:00 heroku[router]: at=info method=POST path="/admin/images/multiple/add/" host=DOMAIN request_id=95e79995-3973-4aae-9584-9ad3432a1d41 fwd="134.180.192.60" dyno=web.1 connect=0ms service=3610ms status=500 bytes=636 protocol=https

以上のコードにより先述の質問のcss問題は全て解決されました。
しかし、画像読み込みだけがいまだうまくいきません。みなさまのお力をお貸しいただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

以下のサイトを参考に再度1からAWS設定とコーディングをしました。

https://medium.com/@kjmczk/s3-heroku-django-faf559c3a401

コードは以下の通りです。

python

1 2 3STATICFILES_DIRS = [ 4 os.path.join(PROJECT_DIR, 'static'), 5] 6 7 8STATIC_ROOT = os.path.join(BASE_DIR, 'static') 9MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 10 11WAGTAIL_SITE_NAME = "XXXX" 12 13from XXXX.aws.conf import * 14 15 16django_heroku.settings(locals()) 17 18

課題:ローカル環境で動かすと、画像は透過されてしまいました。デプロイを行うことでその問題は解決いたしました。またブラウザによっては反映されたされていないがあるみたいです。原因究明急ぎます。

投稿2021/08/25 08:40

Kazuhiro-ch

総合スコア85

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問