/.platform/hooks/':将Django App部署到AWS Elastic Beanstalk时没有此类文件或目录

问题描述

我正在尝试将Django应用程序部署到AWS ElasticBeanStalk。

我按照标记正确答案中的所有指南进行操作,但仍然出现以下错误

[INFO] -----------------------Command Output-----------------------
[INFO]  find: '/.platform/hooks/': No such file or directory [INFO]
------------------------------------------------------------

使用Windows操作系统时,我是从https://cocalc.com/在线控制台创建.sh文件的。

我还压缩了文件并使用EBS控制台进行部署,以避免在git add / commit期间转换我的文件

.ebextension内容中的我的配置文件是:

    container_commands:   
        01_sh_executable:
            command: "chmod +x .platform/hooks/predeploy/01_execute.sh"

我的01_execute.sh文件内容为:

#!/bin/bash

source /var/app/venv/*/bin/activate
cd /var/app/staging

python manage.py makemigrations
python manage.py migrate
python manage.py createsu
python manage.py collectstatic --noinp

选择的平台是在64位Amazon Linux 2上运行的Python 3.7。我还注意到,当我运行eb ssh并键入ls时,它将返回空白。 Linux不是我的强项之一。

我们将不胜感激任何帮助。

解决方法

此答案适用于使用 windows 将文件部署到弹性 beantalk 的用户。

我在花了 6 个小时的宝贵时间后找到了此信息。可能没有在官方文档中的任何地方记录

根据此链接“https://forums.aws.amazon.com/thread.jspa?threadID=321653

psss:最重要的是文件以 LF 行分隔符保存。 CRLF 使“找不到文件或目录”

所以我使用 Visual Studio Code 将 .platform/hooks/postdeploy 中的文件的 CRLF 转换为 LF

在 VS Code 的屏幕右下角有一个小按钮 显示“LF”或“CRLF”:单击该按钮并将其更改为您的 偏好。

我希望这会对 Windows 用户有所帮助!

,

来自docs

Amazon Linux AMI平台版本(在Amazon Linux 2之前)不支持平台挂钩。

对于 Amazon Linux 2 ,有一种新的挂钩机制,如here所述。