Пытаясь запустить приложение Django на App Engine flex, получаем Server 502 при доступе к обработчику

Я создаю простую страницу входа в систему. Вы можете войти в систему, используя учетную запись Django или Google Sign-In. Сначала я пытаюсь проверить, что вы можете войти, используя учетную запись Django.

Он развертывается правильно, и я могу получить доступ к сайту должным образом.

Но когда я захожу в Django /admin и ввожу учетные данные для входа, помимо того, что загрузка занимает вечность, я продолжаю получать Server 502 Bad Gateway

В документации только смутно упоминается в самом низу, что app.yaml может быть настроен неправильно, но я не достаточно опытен, чтобы определить, какая часть не настроена.

# [START runtime]
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT [myproject.wsgi]
beta_settings:
    cloud_sql_instances: [instance]:asia-east2:[project]

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 1
  max_concurrent_requests: 80
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

runtime_config:
  python_version: 3
# [END runtime]

Релевантный журнал ошибок:

2021-08-19 20:12:44 default[20210820t040009]  "GET /admin/" 302
2021-08-19 20:12:44 default[20210820t040009]  "GET /admin/login/?next=/admin/" 200
2021-08-19 20:12:44 default[20210820t040009]  "GET /static/admin/css/nav_sidebar.css" 404
2021-08-19 20:12:44 default[20210820t040009]  "GET /static/admin/css/responsive.css" 404
2021-08-19 20:12:44 default[20210820t040009]  "GET /static/admin/css/login.css" 404
2021-08-19 20:12:44 default[20210820t040009]  "GET /static/admin/css/base.css" 404
2021-08-19 20:12:44 default[20210820t040009]  "GET /static/admin/js/nav_sidebar.js" 404
2021-08-19 20:13:24 default[20210820t040009]  [2021-08-19 20:13:24 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:13)
2021-08-19 20:13:24 default[20210820t040009]  [2021-08-19 20:13:24 +0000] [13] [INFO] Worker exiting (pid: 13)
2021-08-19 20:13:24 default[20210820t040009]  [2021-08-19 20:13:24 +0000] [15] [INFO] Booting worker with pid: 15
2021-08-19 20:13:24 default[20210820t040009]  "POST /admin/login/?next=/admin/" 502
2021-08-19 20:13:43 default[20210820t040009]  "GET /nginx_metrics" 200

Эта ошибка обычно означает, что сервер не смог проксировать запрос. Существует множество возможных проблем, поэтому хорошей отправной точкой будет выполнение этой команды, чтобы открыть журнал ошибок и устранить неполадки

sudo tail -F /var/log/nginx/error.log

Я не знаю точно, почему. Но мне пришлось изменить детали в моем settings.py

Я попросил знакомого, который ранее выполнял развертывание в Google Cloud, дать мне рекомендации. После проверки разницы, главным было то, как HOST было настроено в отношении DATABASE.

Я сделал вот что.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '[DATABASE NAME]',
        'HOST': '[IP Address based on Public IP on the Google Cloud SQL Instance]',  
        'USER': '[SQL USER]', # Cloud
        'PASSWORD': '[SQL PASSWORD]', # Cloud
    }
}

Они сделали вот что.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '[DATABASE NAME]',
        'HOST': '/cloudsql/[instance]:asia-east2:[project]',
        'USER': '[SQL USER]', # Cloud
        'PASSWORD': '[SQL PASSWORD]', # Cloud
    }
}

Ближайшая ссылка, которую я смог найти в документе, была здесь, а именно в разделе Connect with Unix sockets

После правильной настройки вы можете подключить свой сервис к доменному сокету Unix экземпляра Cloud SQL, доступному в файловой системе среды по следующему пути: /cloudsql/INSTANCE_CONNECTION_NAME.

Сразу после внесения изменений и развертывания я смог успешно получить доступ к бэкендам Django.

Вернуться на верх