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

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

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

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Django

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Q&A

解決済

1回答

160閲覧

本番環境でdjangoの管理画面にログインできません。

hero0000

総合スコア1

Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

Django

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

0グッド

0クリップ

投稿2024/03/16 03:54

編集2024/03/19 06:20

実現したいこと

現在djangoで作成したアプリをデプロイしようと試みています。
利用しているものは、django5.0.2 gunicorn21.2.0 nginx1.24.0 (Ubuntu) postgresql15.6になります。
アプリをいったん公開するところまでは進んだのですが、開発サーバーでは管理画面にログインできていたのにnginxからではログインできず、必要情報を入力してログインボタンを押すともとのログインページにリダイレクトされてしまいます。
これを改善するために考えられる原因を教えていただきたいです。
adminページ以外のページではログインに関する部分以外は正常に動作しています。
こちらもログイン部分管理画面のようになってログインできないのですが、まず管理画面をどうにかしたいです。

発生している問題・分からないこと

djangoの管理画面にログインできない。
これといったエラーもあまり表示されないです。
djangoのログではpage not foundがwarningとして表示されています。
gunicorn nginxのほうではエラーが出ません。
ログイン画面の静的ファイルは普通に読み込めています。
知識ゼロから始めてまだ一月ほどなのでどの情報を調べればいいかは詳しくわからないので、必要情報があれば教えてください。

エラーメッセージ

error

1                 

該当のソースコード

settings.py

1DEBUG = False 2 3ALLOWED_HOSTS = ['IPアドレス','ドメイン名'] 4CSRF_TRUSTED_ORIGINS = ['https://ドメイン名'] 5SESSION_COOKIE_DOMAIN = 'ドメイン名' 6 7INSTALLED_APPS = [ 8 'django.contrib.sites', 9 'allauth', 10 'allauth.account', 11 'allauth.socialaccount', 12 'django.contrib.admin', 13 'django.contrib.auth', 14 'django.contrib.contenttypes', 15 'django.contrib.sessions', 16 'django.contrib.messages', 17 'django.contrib.staticfiles', 18 'アプリ名', 19 'accounts', 20] 21 22MIDDLEWARE = [ 23 'django.middleware.security.SecurityMiddleware', 24 'django.contrib.sessions.middleware.SessionMiddleware', 25 'django.middleware.common.CommonMiddleware', 26 'django.middleware.csrf.CsrfViewMiddleware', 27 'django.contrib.auth.middleware.AuthenticationMiddleware', 28 'django.contrib.messages.middleware.MessageMiddleware', 29 'django.middleware.clickjacking.XFrameOptionsMiddleware', 30 "allauth.account.middleware.AccountMiddleware", 31] 32 33SESSION_ENGINE = 'django.contrib.sessions.backends.cache' 34 35ROOT_URLCONF = 'main.urls' 36 37TEMPLATES = [ 38 { 39 'BACKEND': 'django.template.backends.django.DjangoTemplates', 40 'DIRS': [BASE_DIR / "templates"], 41 'APP_DIRS': True, 42 'OPTIONS': { 43 'context_processors': [ 44 'django.template.context_processors.debug', 45 'django.template.context_processors.request', 46 'django.contrib.auth.context_processors.auth', 47 'django.contrib.messages.context_processors.messages', 48 ], 49 }, 50 }, 51] 52 53WSGI_APPLICATION = 'main.wsgi.application' 54 55DATABASES = { 56 'default': { 57 'ENGINE': 'django.db.backends.postgresql_psycopg2', 58 'NAME': 'データベース名', 59 'USER': 'ユーザー名', 60 'PASSWORD': os.environ.get("pass_db"), 61 'HOST': 'localhost', 62 'PORT': '5432', 63 } 64 } 65 66 67AUTH_PASSWORD_VALIDATORS = [] 68 69 70 71LANGUAGE_CODE = 'ja' 72 73TIME_ZONE = 'Asia/Tokyo' 74 75USE_I18N = True 76 77USE_TZ = True 78 79STATIC_URL = '/static/' 80STATIC_ROOT = PARENT_DIR / 'site/public/static' 81 82MEDIA_ROOT = PARENT_DIR / 'site/public/media' 83MEDIA_URL = '/media/' 84 85 86 87DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' 88 89AUTH_USER_MODEL = 'accounts.User' 90 91 92AUTHENTICATION_BACKENDS = [ 93 'django.contrib.auth.backends.ModelBackend', 94 'allauth.account.auth_backends.AuthenticationBackend', 95] 96 97SITE_ID = 1 98 99 100ACCOUNT_FORMS = { 101 'signup': 'accounts.forms.CustomSignupForm', 102 'login': 'accounts.forms.CustomLoginForm', 103 'reset_password': 'accounts.forms.CustomResetPasswordForm', 104 'reset_password_from_key': 'accounts.forms.CustomResetPasswordKeyForm', 105} 106 107ACCOUNT_USER_MODEL_USERNAME_FIELD = None 108ACCOUNT_USERNAME_REQUIRED = False 109ACCOUNT_AUTHENTICATION_METHOD = 'email' 110ACCOUNT_EMAIL_REQUIRED = True 111 112from django.urls import reverse_lazy 113LOGIN_REDIRECT_URL = reverse_lazy('mypage') 114ACCOUNT_LOGOUT_REDIRECT_URL = reverse_lazy("top") 115ACCOUNT_EMAIL_VERIFICATION = "mandatory" 116ACCOUNT_LOGOUT_ON_GET = True 117 118 119EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 120EMAIL_HOST = 'smtp.gmail.com' 121EMAIL_PORT = 587 122EMAIL_USE_TLS = True 123EMAIL_HOST_USER = 'メールアドレス' 124EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_HOST_PASSWORD') 125DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

nginxのファイル

1server { 2 server_name ドメイン名; 3 4 location = /favicon.ico { access_log off; log_not_found off; } 5 location /static/ { 6 root パス; 7 } 8 9 location /media/ { 10 root パス; 11 } 12 13 location / { 14 include proxy_params; 15 proxy_pass http://unix:/run/gunicorn.sock; 16 } 17

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

データベースを新しく作成しなおしてそのデータベースを使用した。
migrationsを削除してからmakemigrationsとmigrateをやり直した。

補足

特になし

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

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

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

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

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

tatamyiwathy

2024/03/16 15:00

createsuperuserは試しましたか? 試した場合は結果を本文に追記ください。解決のヒントを探れるかもしれません。
hero0000

2024/03/16 16:09

コメントありがとうございます。createsuperuserは試しました。 スーパーユーザー作成後、本番環境でのログインを試したのですがログインできませんでした。 確認のため開発サーバーでログインを試みたところこちらではログインできました。 デプロイに関して参考にしているページを添付させていただきます。 https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu
guest

回答1

0

自己解決

色々と調べたところ解決いたしました。

https://stackoverflow.com/questions/11894765/unable-log-in-to-the-django-admin-page-with-a-valid-username-and-password
こちらのサイトの内容に基づいて設定を見直したところ、settings.pyの記述が原因で問題が発生していました。

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'の記述を削除したところ問題が解決しました。
CACHE_BACKEND が適切に設定されていない状態で上記の設定にしていたことが問題の原因でした。
記述を削除することでdjangoのデフォルトの設定の'django.contrib.sessions.backends.db'が適用されることで動作するようになりました。

セッションを利用した関数を試していた名残が悪さをしていました。

問題の解決方法を調べる際に英語での検索を試すことがかなり有効だと感じました。

投稿2024/04/02 07:10

編集2024/04/02 08:41
hero0000

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問