# #python-3.x #django #google-cloud-platform #django-rest-framework
Вопрос:
Я создаю простую страницу входа в систему. Вы можете войти в систему с помощью учетной записи Django или с помощью входа в Google. Я пытаюсь убедиться, что вы можете сначала войти в систему с помощью учетной записи 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
Комментарии:
1. Пожалуйста, включите журналы приложения в свой вопрос:
gcloud app logs
это один из способов получить их.2.
502
s результат по многим причинам, включая неправильную конфигурацию (вашapp.yaml
внешний вид в порядке). Правильно ли ваше приложение работает локально? Ваш вопрос предполагает, что/admin
обработчик изначально отвечает, и ошибка возникает только тогда, когда вы отправляете запрос, верно?3. Похоже, что так, да. Я могу получить доступ
/admin
и просмотреть страницу с формой для отправки, но когда я нажимаю кнопку входа в систему, я получаю ошибку 5204. Вот в чем ошибка
POST /admin/login/?next=/admin/" 502
5. Я … не вижу проблемы?
Ответ №1:
Я не знаю, почему. Но мне пришлось изменить детали в моем settings.py
Я спросил кого-то из своих знакомых, кто ранее выполнял развертывание в Google Cloud, для справки. После проверки разницы главное заключалось в том, как HOST
была настроена база данных.
Вот что я сделал.
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 вашего экземпляра облачного SQL, доступ к которому осуществляется в файловой системе среды, по следующему пути: /cloudsql/INSTANCE_CONNECTION_NAME.
В тот момент, когда я внес изменения и развернул, я смог успешно получить доступ к своим бэкэндам Django.
Ответ №2:
Эта ошибка обычно означает, что сервер не смог выполнить прокси-запрос. Существует множество возможных проблем, связанных с этим, поэтому хорошей отправной точкой было бы выполнить эту команду, чтобы открыть журнал ошибок и устранить неполадки.
хвост sudo-F /var/log/nginx/error.log