我在 GAE 中部署了 django 项目,除了主页面外,所有页面上都出现 502 Bad Gateway 错误。以前的版本可以工作,但自从我添加了存储 API 调用(storages.backends.gcloud.GoogleCloudStorage)后就无法工作了。我在 settings.py 和 app.yaml 中添加了环境变量 GOOGLE_APPLICATION_CREDENTIALS 。日志显示此错误:
[error] 32#32: *111 upstream prematurely closed connection while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: , request: "GET /accounts/login/ HTTP/1.1", upstream: "http://xxx.xxx.xxx.xxx:8080/accounts/login/", host: "xxxx.appspot.com", referrer: "https://xxxx.appspot.com/"
一切都在本地工作,所以该消息就是我所拥有的。 我尝试了谷歌群组和其他 stackoverflow 问题中的内容,但它不起作用。
谢谢你。
gcloud app logs tail -s default
会告诉您错误消息,因此请务必检查输出。我的是django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
我犯的其他一些错误是:
ALLOWED_HOSTS
中的
DATABASES
和
settings.py
static_dir
中的
app.yaml
main.py
我建议采取几个步骤来解决您的 Django 和 App Engine 问题。
您提到您已将 GOOGLE_APPLICATION_CREDENTIALS 添加到
settings.py
和 app.yaml
文件中。您还应该将其添加到用于部署应用程序的系统中。使用此命令:
export GOOGLE_APPLICATION_CREDENTIALS=[path to the .json credentials file]
除此之外,请确保您使用的 Django 版本高于 1.2 或 1.3,因为 Google Cloud 不再支持这些版本。
您可以在此处获得有关如何在 App Engine 应用程序中配置 Django 的更多信息,了解如何配置
app.yaml
和 settings.py
文件(或您用于设置的其他文件)。
根据您使用的 Python 版本,如果您使用 Python 2,最好在“标准”环境中部署;如果您使用 Python 3,则最好在“灵活”环境中部署。我在此处提供的链接是为了更好地理解的教程如何将 Django 与 App Engine 结合使用。一旦您测试了这些教程,您就可以将它们调整为您的代码,并且 对于那些想知道的人,App Engine 要求您在根目录中添加 main.py。您可以将文档中的代码添加到该文件中: