【发布时间】:2020-10-08 01:14:49
【问题描述】:
我一直在努力尝试将我的 Django Web 应用程序成功部署到 AWS 的 Elastic Beanstalk。在我在 .ebextensions 文件夹中添加 container_commands 配置文件列表之前,我可以在本地计算机上从 EB CLI 部署我的应用程序,这完全没有问题。
这是我的配置文件的内容:
container_commands:
01_makeAppMigrations:
command: "django-admin.py makemigrations"
leader_only: true
02_migrateApps:
command: "django-admin.py migrate"
leader_only: true
03_create_superuser_for_django_admin:
command: "django-admin.py createfirstsuperuser"
leader_only: true
04_collectstatic:
command: "django-admin.py collectstatic --noinput"
我深入研究了日志,发现 cfn-init-cmd.log 中的这些消息最有帮助:
2020-06-18 04:01:49,965 P18083 [INFO] Config postbuild_0_DjangoApp_smt_prod
2020-06-18 04:01:49,991 P18083 [INFO] ============================================================
2020-06-18 04:01:49,991 P18083 [INFO] Test for Command 01_makeAppMigrations
2020-06-18 04:01:49,995 P18083 [INFO] Completed successfully.
2020-06-18 04:01:49,995 P18083 [INFO] ============================================================
2020-06-18 04:01:49,995 P18083 [INFO] Command 01_makeAppMigrations
2020-06-18 04:01:49,998 P18083 [INFO] -----------------------Command Output-----------------------
2020-06-18 04:01:49,998 P18083 [INFO] /bin/sh: django-admin.py: command not found
2020-06-18 04:01:49,998 P18083 [INFO] ------------------------------------------------------------
2020-06-18 04:01:49,998 P18083 [ERROR] Exited with error code 127
我不确定为什么它在这个最新的环境中找不到该命令。 我已经将具有相同配置文件的相同应用程序部署到先前的 beanstalk 环境中,完全没有问题。现在唯一的区别是这个新环境是在 VPC 中启动的,并且使用的是最新的推荐平台。
旧 Beanstalk 环境平台:在 64 位 Amazon Linux/2.9.3 上运行的 Python 3.6
新的 Beanstalk 环境平台:在 64 位 Amazon Linux 2/3.0.2 上运行的 Python 3.7
在此迁移过程中,我遇到了与此最新平台的语法更新相关的其他问题。我希望这个问题也只是一个简单的语法问题,但我挖得很远却没有运气......
如果有人能指出我在这里遗漏的明显内容,我将不胜感激! 如果我能提供一些额外的信息,请告诉我!
【问题讨论】:
-
django 安装了吗?登录实例后,可以手动运行这些命令吗?
-
@Marcin 当我关注这篇文章时:stackoverflow.com/a/20070161/3814008 在通过 SSH 将这些命令运行到实例中时,我无法通过第 2 步。运行“source /opt/python/run/venv/ bin/activate”返回一个“-bash:/opt/python/run/venv/bin/activate:没有这样的文件或目录”当我在以前的环境中执行这些相同的步骤时,我没有问题。在我的 requirements.txt 文件中,我确实列出了 Django 2.2.6。我不记得为了让 Django 安装 AWS 实例而必须做任何其他事情?
-
我想指出,在上面链接的帖子中,我看到有人在答案下评论说,答案对于 Beanstalk 中最新的 Python 3.7、Amazon 2 平台不再有效。为什么会这样?
-
使用在 64 位 Amazon Linux 2/3.0.2 上运行的最新环境 Python 3.7 时,我遇到了同样的问题。
-
@WaheedAhmed 我终于能够在最新的 Beanstalk 平台上启动并运行它。在下面查看我的答案!希望能帮到你!
标签: python django amazon-web-services amazon-elastic-beanstalk