我遵循了本教程:
将 Django 应用部署到 Google App Engine。它就在那里,可以正常工作,但我需要运行迁移并创建用户。我应该如何manage.py
在这些服务器上运行?我找到了如何从 Google Cloud Platform 控制台通过 SSH 连接到它们,但一旦我进入服务器,我就找不到如何加载正确的 Python 环境和/或运行manage.py
。
我也读过在 App Engine 柔性环境中运行 Django它没有解释如何做到这一点,而且他们的配置文件似乎假设数据库凭据最终会出现在应用程序的 git repo 中,这是大忌。我没有这样做,这意味着从我的工作站连接到生产数据库很麻烦。
例如,如果这是 Heroku,我会在我的开发工作站上执行以下操作:
heroku run python manage.py migrate
或者
heroku run python manage.py createsuperuser
它会在服务器中执行这些命令。我正尝试对 Google App Engine Flexible(以及 Standard)执行相同的操作。
答案1
也许这对遇到这种情况的其他人有用。当然建议使用@George 的答案进行正常操作,但在紧急情况下,您可以从 App Engine 运行 python 命令。我最近不得不出于调试目的这样做。我使用了 App 中的 SSH 访问引擎 -> 实例在 GCP 控制面板中。就我而言,我使用的是在 VM 实例内运行 docker 的 flex 环境,因此有几个步骤。
- 转到 GCP -> 引擎 -> 实例并通过 SSH 进入实例。
- 一旦 SSH 会话开始运行,请确保您的容器正在运行:
docker ps
。就我而言,我的 Django 应用程序在名为的容器中运行gaeapp
。 - Docker exec 进入容器:
docker exec -it gaeapp /bin/bash
- 如果该命令有效,那么您现在就处于应用程序的运行容器中。运行您的命令。例如:
python manage.py help
笔记:这些环境应被视为短暂的,您不应将其作为任何一致工作流程的一部分。当 App Engine 实例从调试模式更改回正常运行时,它很可能会被销毁,并由新实例替换它。这意味着生成的任何文件都将丢失。这也意味着生成的任何文件将仅存在于可能的许多 VM 实例中的一个上。
答案2
您应该在开发环境中本地运行 manage.py,以便根据部署来组织文件,而不是在服务器上部署后再组织。您可以从在线“在 App Engine 灵活环境中运行 Django”中获取更多详细信息文档。