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

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

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

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

Heroku

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

Q&A

解決済

1回答

4063閲覧

HerokuにデプロイしたDjangoアプリケーションのadmin画面が表示されない

mimura_yusuke

総合スコア39

Django

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

Heroku

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

0グッド

0クリップ

投稿2019/10/20 11:24

前提

Djangoで作成したアプリケーションをHerokuにデプロイしました。
デプロイ自体は成功し、テンプレートファイル(4つあります)は正常に表示されています。
しかし、ローカルでは表示されていた管理画面だけが表示されません。

発生している問題・エラーメッセージ

https://appname.herokuapp.com/admin/にアクセスしようとすると、「Server Error (500)」というメッセージが表示され、管理画面にアクセスすることができません。
heroku logs -tでログを確認すると、以下のようになっています。

2019-10-20T10:28:09.822462+00:00 app[web.1]: 10.xxx.xxx.xxx - - [20/Oct/2019:10:28:09 +0000] "GET /admin/ HTTP/1.1" 302 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" 2019-10-20T10:28:10.187454+00:00 heroku[router]: at=info method=GET path="/admin/login/?next=/admin/" host=appname.herokuapp.com request_id=be8ca4bf-cb65-4af9-9035-0319ba1860ab fwd="110.xxx.xxx.xxx" dyno=web.1 connect=0ms service=36ms status=500 bytes=234 protocol=https 2019-10-20T10:28:10.185499+00:00 app[web.1]: 10.xxx.xxx.xxx - - [20/Oct/2019:10:28:10 +0000] "GET /admin/login/?next=/admin/ HTTP/1.1" 500 27 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"

該当のソースコード

デプロイに関係しそうなファイルの状況はいかのとおりです。

ディレクトリ構造

project ←プロジェクト名 appname ←アプリケーション名 static staticfiles templates venv .gitignore db.sqlite3 manage.py Procfile requirements.txt runtime.txt

settings.py

python

1 2import os 3import dj_database_url 4 5# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 6BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 7 8 9# Quick-start development settings - unsuitable for production 10# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ 11 12# SECURITY WARNING: keep the secret key used in production secret! 13 14 15# SECURITY WARNING: don't run with debug turned on in production! 16DEBUG = False 17 18ALLOWED_HOSTS = ['*'] 19 20 21# Application definition 22 23INSTALLED_APPS = [ 24 'django.contrib.admin', 25 'django.contrib.auth', 26 'django.contrib.contenttypes', 27 'django.contrib.sessions', 28 'django.contrib.messages', 29 'django.contrib.staticfiles', 30 'appname', 31] 32 33MIDDLEWARE = [ 34 'django.middleware.security.SecurityMiddleware', 35 'whitenoise.middleware.WhiteNoiseMiddleware', 36 'django.contrib.sessions.middleware.SessionMiddleware', 37 'django.middleware.common.CommonMiddleware', 38 'django.middleware.csrf.CsrfViewMiddleware', 39 'django.contrib.auth.middleware.AuthenticationMiddleware', 40 'django.contrib.messages.middleware.MessageMiddleware', 41 'django.middleware.clickjacking.XFrameOptionsMiddleware', 42] 43 44ROOT_URLCONF = 'appname.urls' 45 46TEMPLATES = [ 47 { 48 'BACKEND': 'django.template.backends.django.DjangoTemplates', 49 'DIRS': [BASE_DIR, 'templates'], 50 'APP_DIRS': True, 51 'OPTIONS': { 52 'context_processors': [ 53 'django.template.context_processors.debug', 54 'django.template.context_processors.request', 55 'django.contrib.auth.context_processors.auth', 56 'django.contrib.messages.context_processors.messages', 57 ], 58 }, 59 }, 60] 61 62WSGI_APPLICATION = 'appname.wsgi.application' 63 64 65# Database 66# https://docs.djangoproject.com/en/2.2/ref/settings/#databases 67 68DATABASES = { 69 'default': { 70 'ENGINE': 'django.db.backends.postgresql_psycopg2', 71 'NAME': 'name', 72 'USER': 'user', 73 'PASSWORD': '', 74 'HOST': 'host', 75 'PORT': '', 76 } 77} 78 79 80 81# Password validation 82# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators 83 84AUTH_PASSWORD_VALIDATORS = [ 85 { 86 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 87 }, 88 { 89 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 90 }, 91 { 92 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 93 }, 94 { 95 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 96 }, 97] 98 99 100# Internationalization 101# https://docs.djangoproject.com/en/2.2/topics/i18n/ 102 103LANGUAGE_CODE = 'en-us' 104 105TIME_ZONE = 'UTC' 106 107USE_I18N = True 108 109USE_L10N = True 110 111USE_TZ = True 112 113 114# Static files (CSS, JavaScript, Images) 115# https://docs.djangoproject.com/en/2.2/howto/static-files/ 116 117STATIC_URL = '/static/' 118STATICFILES_DIRS =( 119 os.path.join(BASE_DIR, 'static'), 120) 121 122STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') #追加 123 124STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'#追加 125 126try: 127 from .local_settings import * 128except ImportError: 129 pass 130 131 132if not DEBUG: 133 SECRET_KEY = os.environ['SECRET_KEY'] 134 import django_heroku #追加 135 django_heroku.settings(locals()) #追加 136 137db_from_env = dj_database_url.config(conn_max_age=600, ssl_require=True) 138DATABASES['default'].update(db_from_env)

requirements.txt

dj-database-url==0.5.0 Django==2.2.5 django-heroku==0.3.1 gunicorn==19.9.0 psycopg2==2.8.3 pytz==2019.2 sqlparse==0.3.0 whitenoise==4.1.4

wsgi.py

import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'projectname.settings') application = get_wsgi_application()

試したこと・実行したコマンド

デプロイ当初は、

heroku config:set DISABLE_COLLECTSTATIC=1

と設定していたので、

heroku config:set DISABLE_COLLECTSTATIC=0

でcolliectstaticが自動実行される設定に戻しました。

また、

heroku run python manage.py migrate
heroku run python manage.py createsuperuser

はともに実行済みで、エラーなく完了しています。

staticファイル関係の設定が原因かと思い、ローカル環境にて

python manage.py collectstatic

herokuにて

heroku run python manage.py collectstatic --noinput

を実行し、特にエラー等発生せず完了しています。

デプロイに必要なファイルの作成及び修正は以下の情報に基づいて行いました。
https://qiita.com/frosty/items/66f5dff8fc723387108c

補足情報(FW/ツールのバージョンなど)

OS:Windows10 home 64bit
IDE:Visual Studio Code
Python:3.7.4
Django:2.2.5

デプロイ、マイグレーション、スーパーユーザの作成ともに成功しているため、どこに原因があるのか分かりません。staticファイル関係の設定が原因かもしれませんが、どの設定が誤っているのか見当がつきません。
何卒ご教授のほどよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。
結局プロジェクトを作り直して、再度デプロイするとうまくいきました。
根本的な原因は依然として不明ですが、余計なコマンドを実行しなかったことが良かったのかもしれません。

解決方法
・問題が発生していたherokuのプロジェクトを削除し、新たにプロジェクトを作成。
・ローカルでも新たにプロジェクトを作成。
・herokuにpush 参考にしたサイトは質問部分に書いたサイトと同じ(https://qiita.com/frosty/items/66f5dff8fc723387108c)

質問時との変更点
・heroku config:set DISABLE_COLLECTSTATIC=1を実行しない。
※DISABLE_COLLECTSTATIC=1なしでデプロイ時にエラーが出ないように、ルートディレクトリにstaticフォルダを作成し、適当に書いたcssファイルを配置した(https://devcenter.heroku.com/articles/django-assets を参照)。

・ローカル環境にてpython manage.py collectstaticを実行しない。

・herokuにてheroku run python manage.py collectstatic --noinputを実行しない。

投稿2019/10/22 09:00

mimura_yusuke

総合スコア39

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問