【发布时间】:2020-02-20 11:35:48
【问题描述】:
我已将我的 Django 应用部署到 Google Cloud。当我在本地和this post 中概述的步骤中托管它时,它运行良好。
当我尝试查看实时链接时,它会引发服务器错误 (500)。
当我在 settings.py 中启用调试时,这是完整的回溯。 (扭矩是我项目的名称),陈列室是我的应用程序。
回溯指的是一个视图属性(num_manufactureres),我在本地托管它时从未遇到过问题。
OperationalError at /showroom/
(2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
Request Method: GET
Request URL: https://torque-256805.appspot.com/showroom/
Django Version: 2.2.5
Exception Type: OperationalError
Exception Value:
(2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")
Exception Location: /env/lib/python3.7/site-packages/MySQLdb/connections.py in __init__, line 166
Python Executable: /env/bin/python3.7
Python Version: 3.7.4
Python Path:
['/srv',
'/env/bin',
'/opt/python3.7/lib/python37.zip',
'/opt/python3.7/lib/python3.7',
'/opt/python3.7/lib/python3.7/lib-dynload',
'/env/lib/python3.7/site-packages']
Server time: Thu, 24 Oct 2019 09:45:29 +0300
...
/env/lib/python3.7/site-packages/MySQLdb/__init__.py in Connect
return Connection(*args, **kwargs) …
▶ Local vars
/env/lib/python3.7/site-packages/MySQLdb/connections.py in __init__
super(Connection, self).__init__(*args, **kwargs2) …
▶ Local vars
...
num_manufacturers = Manufacturer.objects.all().count() …
▶ Local vars
我是 Google Cloud 的新手,所以我不知道如何开始调试它。
以下是一些可能的问题:
我在 cloud.google.com 上创建的服务器实例使用 europe-west3 作为区域。但是当我在部署时,我认为它创建了一个全新的服务器并选择了 europe-west6 作为更好的选择。 (近距离,更好的可靠性等......)
我根据
check --deployDjango 命令更改了我的项目settings.py 以获得更好的安全性。
否则,我想不出别的了。有人可以帮忙吗?
【问题讨论】:
-
嗨@Rene,你看到这个Django example from App Engine了吗?它将向您解释如何将您的 Django 应用程序和 SQL 数据库部署到 App Engine。如果您查看
settings.py文件,这是您在生产环境中运行 App Engine 时可能需要用于 HOST 参数/cloudsql/<your-cloudsql-connection string>的 unix 套接字。最后但同样重要的是,确保你有ALLOWED_HOSTS=['localhost']ifHOST='localhost',否则你可以使用'HOST': '127.0.0.1',如上例所示。如果这对您有帮助,请告诉我。 -
@sllopis 你不会相信我所做的。我在开发过程中将数据库写入
settings.py,但在部署之前,我用早期的“香草”设置文件覆盖(而不是替换!)这个文件。我无法解决它,因为这是一个愚蠢的错误。 -
请创建一个答案,以便我关闭这个问题。
-
我为这个问题发布了一个相当通用的答案。 @Rene
标签: mysql django google-app-engine google-cloud-platform mariadb