gpt4 book ai didi

python - Django 在 Amazon Elastic Beanstalk 上的迁移命令被杀死

转载 作者:太空狗 更新时间:2023-10-29 20:25:24 26 4
gpt4 key购买 nike

我正在使用 Amazon 的 Elastic Beanstalk 和 Django 1.8.2。这是我的容器命令,

container_commands:
01_wsgipass:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
02_makemigrations:
command: "source /opt/python/run/venv/bin/activate && python manage.py makemigrations --merge --noinput"
leader_only: true
03_migrate:
command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
leader_only: true

由于某些原因,migrate 命令被终止。即使在我本地有一个新的数据库,所有迁移也能正常工作。但以下是 eb-activity.log 上出现的错误。

Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
Rendering model states.../bin/sh: line 1: 21228 Killed python manage.py migrate --noinput
(ElasticBeanstalk::ExternalInvocationError)

注意:相同的容器命令之前在 Elastic Beanstalk 上运行良好,没有任何问题。我尝试使用 --verbose 3 和 migrate 命令,但没有收到任何其他调试消息。

有什么解决办法吗?提前致谢。

最佳答案

AWS is not developer friendly when it comes to troubleshooting with the poor logging mechanism.

作为最近为 Django 项目评估 EBS 的狂热 AWS 用户,出于同样的原因,我完全同意这一点。出于这个原因我最终选择了 Heroku,原因我不会深入探讨,但我认为以下模式对任何一种方式都有帮助。

准备生产环境的步骤可以放在不同的地方;它们不必发生在您的目标网络服务器环境中。

我最终将我的制作/迁移任务从我的部署自动化中拉出来,并放到了它之前发生的任务中。在我的目标 Web 服务器环境中发生的唯一事情与该服务器上的代码直接相关。

换句话说:如果您有用于构建/测试的 CI 工具,我建议您将您的构建/迁移和任何其他对网络服务器外部环境的准备工作拉入您的部署管道。像这样的东西:

  • 结帐代码
  • 运行测试(包括在临时数据库上制作/迁移以在可能的情况下对其进行测试)
  • 将应用置于维护模式(或类似模式,如果需要)
  • 快照数据库
  • 制作/迁移生产
  • 部署
  • 如果部署失败,回滚数据库,回滚应用。

然后,您将应用服务器的自动化问题与生产环境其余部分的自动化问题分开,并让您的 CI 处理这些问题。您可以在同一个地方处理它们,但使用 EBS 的设施显然有点笨拙。

关于python - Django 在 Amazon Elastic Beanstalk 上的迁移命令被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31185911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com